系统命令执行的原理:在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻击。
系统命令执行的函数:system(),passthru(),exec(),shell_exec() ......
系统命令执行的危害:
(1)可以使用Web程序的权限来执行来执行系统的命令.(包含读写文件的)
(2)利用写入的木马可以连接服务器(反弹shell).
(3)进行进一步的渗透,从而可以控制整个网站甚至服务器.
测试的靶场:
(1)自己搭建的DVWA靶场:安装在win XP(IP地址:192.168.0.105)
DVWA靶场搭建链接: DVWA的靶场搭建_半个西瓜.的博客-CSDN博客
(2)墨者学院的在线靶场:在线靶场_墨者学院
1.命令执行漏洞的 管道符 方法:
(1)& 符号 可以两个命令都执行.
执行的命令:127.0.0.1 & ipconfig
如果想执行系统的其他命令把< ipconfig > 换为 想执行的系统命令.
查看文件目录:127.0.01 & dir
(2)&& 符号 当前命令执行成功,后面命令才能执行.
(1)执行的命令:11111111 && dir (前面的 11111111 执行错误,所有后面的 dir 就不会执行)
(2)
读取 bgxg.php 文件的内容:127.0.0.1 && type bgxg.php (前面的 127.0.0.1 执行成功,就会读取 type bgxg.php 文件的内容)
(3)| 符号 不管前面命令执行成不成功,后面的命令都会继续执行.
显示当前Windows系统的版本号:127.0.0.1 | ver (不管 127.0.0.1 执行成不成功,都会执行 ver)
(4)|| 符号 当前面的命令错误就会执行后面的,否则只执行前面的.
查看开启的所有端口:11111 || netstat -a (因为 11111 执行错误,所有执行了 nettat -a 如果 11111 是正确的,则不会执行 netstat -a )
2.命令执行漏洞 绕过前端限制.
(1)尝试127.0.0.1是这个正常执行,说明可能存在命令执行漏洞.
(2)输入127.0.0.1 & ls,说IP格式不正确.
(3)用 Burp 抓包看看数据.
(4)在数据包里面添加 | dir ,看看服务器的响应了相关文件名.
(5)在数据包里面添加 cat < key_2234286364586.php 读取这个php文件拿到flag.
3.命令执行漏洞的防御措施.
(1)对传入的命令做一个严格的过滤.
(2)尽可能不要使用外部执行命令
(3)尽可能使用 escapeshellarg 函数来处理传入的命令参数.
参考链接:命令执行漏洞利用及绕过方式总结 - My_Dreams - 博客园
参考链接:windows常用命令有哪些(整理)_san.hang的博客-CSDN博客