命令执行漏洞原理
命令执行漏洞定义:Web应用程序接收用户输入,拼接到要执行的系统命令中执行。
产生原因:
1、用户输入未过滤或净化;
2、拼接到系统命令中执行。
PHP下命令执行函数
在PHP中具有执行系统命令功能的函数如下:
1、system
2、exec
3、shell_exec
4、passthru
5、popen
6、proc_popen
命令执行漏洞示例
代码:
提交get参数ipconfig
Windows命令执行漏洞利用技巧
代码中拼接用户的输入并代码system函数执行,但是无法直接执行用户的自定义命令。可以通过截断输入,重新拼接。两条命令都输入并执行。
Windows系统下的 cmd命令中的一些截断拼接符。
&前面的语句为假则直接执行后面的
&&前面的语句为假则直接出错,后面的也不执行
|直接执行后面的语句
||前面出错执行后面的
例如:
Linux命令执行漏洞利用技巧
环境配置
echo “
”;
$arg = $_GET['cmd'];
if ($arg) {
system("ping -c 4 $arg"); //ping4次断开连接
}
echo “
”;?>
启动Apache服务:service apache2 start
拷贝代码到 /var/www/html目录下的一个文件cmd3.php
命令执行漏洞拼接
&无论前边语句真假都会执行
&&只有前边语句为真,才会执行后边语句。
;前面的执行完执行后面的
|是管道符,显示后面的执行结果
||当前面的执行出错时执行后面的
例如:http://192.168.1.106/cmd3.php?cmd=127.0.0.1;ifconfig
命令执行自动化工具基本使用
commix工具
Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏洞,并且对其进行测试,在其作者发布的最新版本中支持直接直接导入burp的历史记录进行检测,大大提高了易用性。(https://github.com/stasinopoulos/commix
)
Kali linux自带commix可以直接使用。
commix -h 获取帮助信息。
commix -u http://192.168.1.106/cmd3.php?cmd=127.0.0.1