系统命令执行的原理:在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻击。
系统命令执行的函数:system(),passthru(),exec(),shell_exec() ......
系统命令执行的危害:
(1)可以使用Web程序的权限来执行来执行系统的命令.(包含读写文件的)
(2)利用写入的木马可以连接服务器(反弹shell).
(3)进行进一步的渗透,从而可以控制整个网站甚至服务器.
测试的靶场:
(1)自己搭建的DVWA靶场:安装在win XP(IP地址:192.168.0.105)?
??????????DVWA靶场搭建链接:?DVWA的靶场搭建_半个西瓜.的博客-CSDN博客
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博客
|