DVWA-命令执行学习笔记

 DVWA-命令执行

原理:

web服务器没有对用户提交的数据进行严格的过滤,造成调用操作系统的命令或者在操作系统恶意拼接拼接命令,以达到攻击者的目的。

1.将DVWA的级别设置为low

1.2查看源代码,可以看到没有对参数做任何防御处理措施,直接进行执行

  

1.3.点击command injection,尝试拼接命令(127.0.0.1&&dir),下图可以看到成功执行dir的命令说明存在命令执行漏洞,然后尝试拼接net user、ipcofig、netstat -ano等命令     #&& 第一个命令执行成功才会执行第二个命令

  

1.4,随便输入然后用&&拼接命令,都不能执行,因为(&& 第一个命令执行成功才会执行第二个命令)

  

1.5 尝试用&拼接命令  #&是不管第一个命令是否执行成功都会执行第二个命令

127.0.0.1&&dir

  

随便输入一个字符串然后用&拼接命令,下图可以看到成功执行第二个命令,这是因为&是不管第一个命令是否执行成功都会执行第二个命令

  

1.6尝试用|拼接命令  #|(管道符)是只执行第二个命令

下图可以看到只执行第二个命令,没有执行第一个命令

  

  

2. 将DVWA的级别设置为medium

2.1此时一些常规的拼接操作就不能实现命令执行漏洞了,查看源码,可以发现对参数进行了简单的处理:过滤&&和;

 

2.2用&&拼接命令,可以看到返回错误信息,&&被过滤了

  

2.3从DVWA的medium级别源码可以看到,对参数进行了一些简单的过滤,此时可以通过&或|或者根据过滤的字符进行组合等绕过防御

2.3.1通过&拼接命令,绕过防御  也可以通过在&前敲空格,绕过防御

  

2.3.2通过|拼接命令,绕过防御

  

2.3.3通过防御过滤的字符进行组合,绕过防御

127.0.0.1&&&dir

  

127.0.0.1&;&ipconfig

  

3.将DVWA的级别设置为High

3.1查看源代码,可以看到首先对参数进行trim去除两边的空格,然后增加了过滤的黑名单

  

3.2观察源代码可以看到过滤“|”时,是过滤”| ”,”|”后有个空格,此时可以通过简单的127.0.0.1|dir绕过

  

4. 将DVWA的级别设置为impossible

4.1查看源代码,可以看到先对参数使用stripslashes函数过滤掉反斜杠,然后使用explode函数将参数打散为数组,然后用is_numeric函数对数组中的每个参数进行判断,符合条件再把数组的参数进行拼接。对参数进行了严格的限制,因此不可能存在命令执行漏洞

  

过滤敏感字符

1.首先再DVWA的medium级别源码文件中,添加过滤条件(过滤whoami,net user等敏感字符),然后测试

  

2.测试拼接whoami、net user命令,没有得到返回结果,说明字符被过滤

  

3.尝试绕过敏感字符过滤

  

  

 

解决乱码问题:

在DVWA-master\dvwa\includes目录下找到dvwaPage.inc.php文件中所有的”charset=utf-8”,修改”charset=gb2312”

posted @ 2019-04-15 00:02  雨中落叶  阅读(1366)  评论(0编辑  收藏  举报