命令执行
0x01 命令执行漏洞原理
Web应用程序接收用户输入,并拼接到要执行的系统命令中执行。
产生漏洞的原因:
1.用户输入未过滤或净化;
2.拼接到系统命令中执行。
0x02 PHP中的命令执行函数
system:执行外部程序,并且显示输出
exec:执行一个外部程序
shell_exec:通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
passthru:执行外部程序并且显示原始输出
popen:打开进程文件指针
0x03 简单的命令执行漏洞代码
<?php echo "<pre>"; if(isset($_GET["cmd"])){ system($_GET["cmd"]); } echo "</pre>"; ?>
0x04 Windows命令执行
示例代码:
<?php echo "<pre>"; $arg = $_GET['cmd']; if ($arg) { system("ping $arg"); } echo "</pre>"; ?>
拼接符介绍:
&:无论前面的语句的真假,后面都会执行
&&:前面的语句为假,后面的也不执行
|:直接执行后面的语句
||:前面的语句为假,才会执行后面的
0x05 Linux命令执行
示例代码:
<?php echo "<pre>"; $arg = $_GET['cmd']; if ($arg) { system("ping -c 4 $arg"); } echo "</pre>"; ?>
可以用kali的apache2来搭建。
拼接符介绍:
;:分号是前面的语句执行完后,才会执行后面的语句
|:管道符,显示后面的语句的执行结果
||:前面的语句为假,才执行后面的
&和&&也是同Windows的。
0x06 命令执行自动化工具commix
1.Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏洞,并且对其进行测试,在其作者发布的最新版本中支持直接直接导入burp的历史记录进行检测,大大提高了易用性。
项目地址:https://github.com/stasinopoulos/commix
2.帮助信息:
kali自带commix。
commix -h获取帮助信息。
3.基本使用:
commix -u "url"