DVWA第二关 之命令注入
命令注入(Command Injection)漏洞,是对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻击手段。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一。
PHP中命令连接符基础知识:
command1 && command2 先执行command1后执行command2。
command1 | command2 只执行command2。
command1 & command2 先执行command2后执行command1。
以上的三种连接符在Linux和windows环境下都支持。
难度(Low)
审计代码发现直接使用命令执行函数,没有进行任何的过滤所以出现命令执行漏洞。
开始操作:
输入127.0.0.1则正常显示网络状态:
解决乱码问题
在文本框中输入"127.0.0.1”后结果显示为乱码,解决此问题的方法:在DVWA-master\dvwa\includes目录下找到dvwaPage.inc.php文件中所有的”charset=utf-8”,修改”charset=gb2312”,即可。
输入:127.0.0.1 & ipconfig输出了本机实际的IP地址以及服务器的网络连接信息。
大家可以同时测试net user、whoami等命令,均可正常输出。
中等难度(medium)
漏洞代码截图:
这里把连接符‘&&’和‘;’转换为空了但是依旧没有完全解决问题,我们还是可以通过'&'和‘|’来执行命令。
漏洞利用:
输入127.0.0.1 | dir
127.0.0.1 & ipconfig
难度(high)
漏洞代码:
这里同样是过滤特殊字符但是仔细一点观察会发现‘|’后面还是有一个空格的,如果直接输入'|',则不会被过滤。
我们输入127.0.0.1|ipconfig则可以轻松绕过。
难度(impossible)
审计代码:
这里添加了判定代码。
它检查用户输入的IP地址的每个部分是否都是数字,并且确保有四个部分。这里使用了白名单的方式,只允许IP进行输入,所以从根本上解决了这个问题。
此时在输入127.0.0.1|ipconfig则不会有回显,并提示你需要输入一个有效的IP地址。