且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

DVWA系列之7 low级别命令执行漏洞

更新时间:2022-09-16 23:19:25

下面我们开始分析DVWA中的Command Execution命令执行漏洞。

首先仍是将DVWA Security设置为Low,选择Command Execution,这里在文本框中输入一个IP,点击Submmit提交便可以执行ping命令。

点击“View Source”查看网页源码。

DVWA系列之7 low级别命令执行漏洞

可以看到,这里的数据是以post方式提交过来的,然后被赋值给了变量$target。

接下来有一个if语句,判断条件是“stristr(php_uname('s'), 'Windows NT')”,这是用来判断当前的系统是否是Windows,因为Windows和Linux下的ping命令执行参数是不同的。

再下面是将函数“shell_exec( 'ping ' . $target )”的值赋值给变量$cmd,并输出$cmd的值,其实也就是在执行“shell_exec( 'ping ' . $target )”函数,因而shell_exec()函数就是这里的核心了。

shell_exec()函数的作用就是可以在PHP中去执行操作系统命令,因而如果不对用户输入的命令进行过滤,那么理论上就可以执行任意系统命令,也就相当于直接获得了系统级的Shell,因而命令包含漏洞的威力相比SQL注入要大多了。

比如我们在文本框中输入“127.0.0.1 | net user”,实际上就是通过管道符“|”去执行了“net user”命令。明白了原理之后,那么我们完全可以继续执行“127.0.0.1 | net user test 123 /add”、“127.0.0.1 | net localgroup administrators test /add”命令,从而拿下整个服务器。

在DOS下允许同时执行多条命令的符号主要有以下几个:

  • “|”:前面命令输出结果作为后面命令的输入内容;

  • “||”:前面命令执行失败的时候才执行后面的命令;

  • “&”:前面命令执行后接着执行后面的命令;

  • “&&”:前面命令执行成功了才执行后面的命令。

如果是Linux系统,还可以使用分号(;),也可以同时执行多条命令。

另外还可以使用重定向(>)在服务器中生成文件,或是使用(<)从事先准备好的文件读入命令等。

最后,大家可以分别用上面这些符号,自己来构造语句去执行相应的命令。



本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1720600