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

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

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

点击“查看源代码”查看网页源码。

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

可以看的到,这里的数据是以发布方式提交过来的,然后被赋值给了变量美元目标。

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

再下面是将函数”shell_exec(“平”。美元目标)”的值赋值给变量cmd美元,并输出cmd的美元值,其实也就是在执行“shell_exec(“平”。美元目标)”函数,因而shell_exec()函数就是这里的核心了。

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

比如我们在文本框中输入“127.0.0.1 |网用户”,实际上就是通过管道符“|”去执行了“网用户“命令。明白了原理之后,那么我们完全可以继续执行“127.0.0.1 |网用户测试123/添加”、“127.0.0.1 |网本地群组管理员测试/添加“命令,从而拿下整个服务器。

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

<李>

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

<李>

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

<李>

"和":前面命令执行后接着执行后面的命令;

<李>

",, ":前面命令执行成功了才执行后面的命令。

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

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

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

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