【web安全】——命令执行漏洞/代码执行漏洞

news2024/11/23 21:38:14

1.命令执行漏洞

1.1漏洞原理

应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数,并且开发人员对这个参数没有严格的过滤时就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

1.2各类语言的命令执行函数

PHP:exec、shell、system、popen等

ASP.NET:System,Diagnostics,Start,Process、System.Diagnostics.Start.ProcessstartInfo等

Java: java,lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等

1.3命令拼接符

1.3.1Windows命令拼接符

| 命令管道符
格式:第一条命令 | 第二条命令 [| 第三条命令...]
将第一条命令的结果作为第二条命令的参数来使用

当上一条语句为真,或者说能正常执行时候,才执行第二条命令

当第一条语句错误时候,第二条不执行

& 组合命令
语法:第一条命令 & 第二条命令 [& 第三条命令...]

按顺序执行,无论前一条语句是否为真,后面的都正常执行


&、&&、||为组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。这在批处理脚本里是
允许的,而且用的非常广泛。因为批处理认行不认命令数目。
这个符号允许在一行中使用 2 个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。
这里&两边的命令是顺序执行的,从前往后执行。
&& 组合命令
语法:第一条命令 && 第二条命令 [&& 第三条命令...]
用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则 一直执行完所有命令
这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行

遇到错误时候立马停止

|| 组合命令
语法:第一条命令 || 第二条命令 [|| 第三条命令...]
用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;
提示:组合命令和重定向命令一起使用必须注意优先级管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令

直到执行到正确的命令后才停止

1.3.2Linux命令拼接符

;:无论拼接的命令是否为真或假,都按照顺序执行

&:无论命令为真或假,都执行,但是不按照顺序执行

&&:顺序执行,遇到假则终止执行;都为真则都执行

遇到假的停止执行

|:如果都为真,则都执行,但是只回显最后一个指令的结果

||:如果都为真,则只执行第一个;如果存在假的指令时,按照顺序执行,当遇到真的指令时,终止执行

1.4系统命令函数

1.4.1system()

把字符串作为系统命令执行,自带输出功能。

在靶场的www目录下创建一个php文件测试

向目标服务器写木马,payload如下

?cmd=echo "<?php @eval($ PosT['shell'])?>"> shell.php

结合burp尝试

如果出现报错,更改请求方式为post

1.4.2passthru()

将字符串作为OS命令执行,不需要输出执行结果,且输出全部的内容。

1.4.3exec()

exec() 此函数会将字符串当作系统命令执行,不输出结果,执行后返回最后一行,如果想看执行结果需要使用 echo、var_dump 等函数进行输出。

<?php

exec("ping 127.0.0.1");

?>

<?php

echo exec("ping 127.0.0.1");

?>

只显示了最后一行

1.4.4pcntl_exec()

在当前进程空间执行指定程序。

要求:linux系统特有模块,需编译选项中存在 enable-pcntl。

1.4.5shell_exec()

通过 shell 执行命令并将完整的输出以字符串的方式返回。

1.4.6反引号

反引号(`)实际上是使用 shell_exec() 函数。

1.5绕过

  • 重定向符,文件读取时,可用cat<>flag.php,单独使用<似乎也可以
  • $IFS
  • {}
  • 空变量绕过
  • 系统变量绕过
  • 反斜杠绕过
  • 通配符绕过

1.6危害

执行系统命令

写入一句话木马

反弹she11

1.7防御

防御方法是在php.ini中禁用这些函数disable_functions=system,exec,尽量不要使用外部命令

使用自定义函数或外部函数库代替外部函数的功能

使用escapeshellarg函数来处理命令参数

2.代码执行漏洞

2.1漏洞成因

在web程序中,有时候程序员为了代码的灵活性与简洁性,会适当调用代码执行的函数执行。但由于没有充分考虑到用户是否会使用与控制,最终导致web应用存在代码执行漏洞。

2.2漏洞产生条件

  • 调用的第三方组件存在代码执行漏洞,
  • 用户输入的内容作为系统命令的参数拼接到命令中;
  • 对用户的输入过滤不严格;
  • 可控变量或漏洞函数

2.3漏洞挖掘

像命令执行和代码执行漏洞,通常需要看网站的情况,若网站只是单单的一个页面那么基本上就不可能存在该漏洞,若网站可能存在一些输入ip、调用接口等那么可能存在,但是通常该漏洞多数需要配合代码审计或者拿到源码,否则很难挖掘到。

2.4各类语言的代码执行函数

PHP:eval、assert、preg replace()、+/e模式(PHP版本\<5.5.0)

Javascript:eval

Vbscript:Execute、Eval

Python:exec

2.5代码执行函数

2.5.1eval()

2.5.2assert函数

assert函数是直接将参数传入字符串当成PHP代码执行,不需要以分号结尾(特别注意),有时加上分号不会显示结果。

传参

2.5.3.preg_replace

执行一个正则表达式的搜索和替换。将目标字符中符合正则规则的字符替换为替换字符,此时如果正则规则中使用/e修饰符,则存在代码执行漏洞。

2.5.4create function

创建匿名函数,并返回匿名函数名,创建匿名函数并执行php代码。

2.5.5call user func函数

该函数主要用于通过函数名去调用该函数。

2.6代码执行漏洞利用

读取文件

?txt=var_dump(file_get contents('c:\lwindows\system32\drivers\etc\hosts'));

写webshell

?txt=file put contents('123.php','<?php eval($ REQuEsT[shell]);?>');

2.7危害

暴露服务器信息网站挂马暴露敏感文件

由代码执行漏洞升级为命令执行漏洞

2.8防御

使用addslashes函数将参数转义或使用黑白名单校验禁止或减少使用代码执行函数限制web用户的权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

仿RabbitMQ实现消息队列服务端(二)

文章目录 ⽹络通信协议设计信道管理模块连接管理模块服务器模块实现 ⽹络通信协议设计 其中⽣产者和消费者都是客⼾端&#xff0c;它们都需要通过⽹络和BrokerServer进⾏通信。具体通信的过程我们使⽤Muduo库来实现&#xff0c;使⽤TCP作为通信的底层协议&#xff0c;同时在这个…

中级软件设计师:一文搞懂下午第二题——数据库设计

中级软件设计师&#xff1a;一文搞懂下午第二题——数据库设计 1. 数据库设计过程1.1 ER模型1.1.0 浅谈UML1.1.1 实体&#xff08;Entity&#xff09;1.1.2 联系1.1.3 联系类型1.1.4 实体间的联系模型 1.2 属性&#xff08;Attribute&#xff09;1.3 关系&#xff08;Relations…

Python案例--动态奖金计算(个税计算)

在企业财务管理中&#xff0c;员工的奖金计算是一项关键任务&#xff0c;它直接关系到员工的积极性和忠诚度。一个合理的奖金制度能够激励员工更好地完成工作&#xff0c;提高企业的整体竞争力。本文将通过Python编程语言&#xff0c;详细探讨如何根据企业利润计算员工的奖金。…

ROS C++ : 使用ros::AsyncSpinner,实现多线程处理ROS消息

文章目录 1、原理说明1.1、ros::MultiThreadedSpinner1.2、ros::AsyncSpinner1.3、多线程原理1.3.1、 消息发布1.3.2、 消息订阅 2、ros::AsyncSpinner 示例13、ros::AsyncSpinner 示例24、使用 ros::AsyncSpinner&#xff0c; 多线程处理回调示例 1、原理说明 ROS提供了2中方…

风场可视化效果的实现,免费的预测数据获得方法

风场可视化是气象学、海洋学等领域中的重要研究工具&#xff0c;它能够直观地展示大气或海洋中的风速、风向等信息。通过风场的可视化&#xff0c;科研人员可以更好地理解气象数据的空间分布特征&#xff0c;分析风场的动力学特性。本文将介绍如何利用Python中的matplotlib、Ba…

git维护【.gitignore文件】

在工程下添加 .gitignore 文件【git忽略文件】 *.class .idea *.iml *.jar /*/target/

如何通过几个简单步骤创建博客

搭建博客不仅可以表达自我和分享知识&#xff0c;还可以成为一种潜在的收入来源。如果你也对搭建博客感兴趣&#xff0c;下面的几个步骤将帮助你轻松入门。 一、选择一个主题 确定你的兴趣点&#xff1a;首先&#xff0c;你需要选择一个你感兴趣且擅长的领域。你悉的领域既能激…

基于SpringBoot+Vue的蛋糕甜品商城系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网技术的飞速发展&#xff0c;电子商务已经深入人们的日常生活&#xff0c;各行各业都在积极拥抱数字化转型。蛋糕甜品行业也不例外&#xff0c;传统的销售模式已经无法满足消费者日益增长的多样化、便捷化需求。因此&a…

每日学习一个数据结构-树

文章目录 树的相关概念一、树的定义二、树的基本术语三、树的分类四、特殊类型的树五、树的遍历六、树的应用场景 树的遍历一、前序遍历二、中序遍历三、后序遍历使用java代码实现遍历总结 树的相关概念 树是一种重要的非线性数据结构&#xff0c;在计算机科学中有着广泛的应用…

Pikachu-File Inclusion-远程文件包含

远程文件包含漏洞 是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的&#xff0c;因此漏洞一旦存在&#xff0c;危害性会很大。但远程文件包含漏洞的利用条件较为苛刻&#xff1b;因此&#xff0c;在web应用系统的功能设计上尽量不要让前端用户直接传变…

【GT240X】【04】你必须知道的 50 多个 Linux 命令

文章目录 一、介绍二、五十个linux命令一览表三、50个命令详解四、结论 你必须知道的 50 多个 Linux 命令 一、介绍 你经常使用 Linux 命令&#xff1f;今天&#xff0c;我们将介绍 50 多个你必须知道的 Linux 命令。下面列出的命令是一些最有用和最常用的 Linux 命令&#x…

jmeter学习(5)定时

Jmeter之定时器_jmeter定时器-CSDN博客 Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇&#xff08;详解教程&#xff09;-腾讯云开发者社区-腾讯云 (tencent.com) 定时器是在每个sampler之前执行的&#xff0c;无论定时器位置在sampler之前还是子节点下面当执行一个sam…

TypeScript 算法手册 【基数排序】

文章目录 1. 基数排序简介1.1 基数排序定义1.2 基数排序特点 2. 基数排序步骤过程拆解2.1 找出数组中的最大值2.2 从最低位开始&#xff0c;对每一位进行计数排序2.3 对某一位数进行计数排序2.4 将排序结果复制回原数组 3. 基数排序的优化3.1 处理负数3.2 字符串排序案例代码和…

Go语言实现随机森林 (Random Forest)算法

在 Go 语言中实现随机森林&#xff08;Random Forest&#xff09;算法通常涉及以下几个步骤&#xff1a; 数据准备&#xff1a;将数据集分为训练集和测试集&#xff0c;确保数据格式适合算法使用。 决策树的构建&#xff1a;随机森林是由多个决策树构成的&#xff0c;首先需要…

MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置

MySQL 实验1&#xff1a;Windows 环境下 MySQL5.5 安装与配置 目录 MySQL 实验1&#xff1a;Windows 环境下 MySQL5.5 安装与配置一、MySQL 软件的下载二、安装 MySQL三、配置 MySQL1、配置环境变量2、安装并启动 MySQL 服务3、设置 MySQL 字符集4、为 root 用户设置登录密码 一…

使用前端三剑客实现一个备忘录

一&#xff0c;界面介绍 这个备忘录的界面效果如下&#xff1a; 可以实现任务的增删&#xff0c;并且在任务被勾选后会被放到已完成的下面。 示例&#xff1a; &#xff08;1&#xff09;&#xff0c;增加一个任务 &#xff08;2&#xff09;&#xff0c;勾选任务 &#xff…

【知乎直答】批量多线程生成原创文章软件-AI智能搜索聚合

【知乎直答】批量多线程生成原创文章软件介绍&#xff1a; 1、知乎发布的全新AI产品“知乎直答”是其AI搜索功能的产品化成果&#xff0c;旨在提升用户的提问、搜索体验以及结果生成和归纳的质量。 2、数据基础&#xff1a;该产品基于知乎平台上的真实问答数据及全网高质量问答…

Chromium 中前端js XMLHttpRequest接口c++代码实现

在JavaScript中发出HTTP请求的主要方式包括&#xff1a;XMLHttpRequest对象、Fetch API、Axios库和各种其他的HTTP客户端库。 本人主要分析下XMLHttpRequest接口在c中对应实现 一、上前端代码 <!DOCTYPE html> <html lang"en"> <head> <meta…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

Marp精华总结(二)进阶篇

概述 这是Marp精华总结的第二篇&#xff0c;主要补充第一篇未提到的一些内容。 系列目录 Marp精华总结&#xff08;一&#xff09;基础篇Marp精华总结&#xff08;二&#xff09;进阶篇Marp精华总结&#xff08;三&#xff09;高级篇 自适应标题 通过在标题行中插入<!-…