应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令,当黑客能控制这些函数的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成了命令执行攻击,这就是命令执行漏洞。
system():---http://www.xinyueseo.com/other/441.html
exec():https://www.jb51.net/article/55455.htm
某页面http://x.x.x.x/1.php?ip=1.1.1.1-------参数1.1.1.1,页面目的为输入1.1.1.1,系统会执行ping 1.1.1.1,然后将结果返回到页面上。
如果服务器对传入的参数没有做严格限制,那么可能造成信息泄露,例如输入的参数为1.1.1.1 | dir 。如果服务器是windows系统,那么会返回目录结构内容。
windows:
|----执行最后后边的语句
||---当前边语句执行出错后,才执行后边的语句,则前边的语句只能为假
&---前边语句可真可假,都会执行后边的语句
&&---前边语句必须为真,后边的语句才可以执行
linux:
;--执行完前边语句在执行后边的语句,ping 1.1.1.1;dir
| ----显示后边语句执行结果
|| ----前边语句执行出错,才执行后边语句
&---前边语句可真可假,都会执行后边的语句
&&---前边语句必须为真,后边的语句才可以执行
防御建议:
尽量不要使用命令执行函数
对提交的变量做过滤和检测