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