DVWA(二)命令执行漏洞(Command Injection)

命令执行漏洞

 

一、实验环境 

二、实验原理

1.概念

2.分类

3.&&和&和|

4.Windows常用命令

5.Linux常用命令

三、实验步骤

(一)Low级别

1.源码

2.命令执行漏洞利用

(二)Medium级别

1.源码

2.命令执行漏洞利用

3.绕过方式

(三)High级别

1.源码

2.命令执行漏洞

3.绕过方法

(四)Impossible级别


一、实验环境 

  1.靶机:Windows Server 2003(192.168.10.111)

DVWA(二)命令执行漏洞(Command Injection)_第1张图片

2.测试机:Windows 10

DVWA(二)命令执行漏洞(Command Injection)_第2张图片

2.测试机:Windows 10

二、实验原理

1.概念

  • 命令执行漏洞,指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的
  • 属于高危漏洞之一,也属于代码执行的范围内
  • 一句话木马

2.分类

  • 代码过滤不严或无过滤
  • 系统漏洞造成的命令执行,如:bash破壳漏洞(该漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,如http,ssh,dhcp等)
  • 调用第三方组件,如:php(system(),shell_exec(),exec(),eval())、java(strust2)、thinkphp(老牌的PHP框架)

3.&&和&和|

  • &&   command1 && command2   (1正确,执行1和2)
  • &     command1   &  command2   (1无论正确与否,都执行2及正确的1)
  •  |      command1   |   command2   (1正确,只执行2)

4.Windows常用命令

  • dir   路径文件
  • ipconfig   网卡
  • cacl   计算器
  • regedit   注册表
  • arp -a   arp表
  • netstat -ano   端口信息

5.Linux常用命令

  • cat /usr/passwd   密码文件
  • cat /etc/group   所有组文件
  • id   当前用户的uid,gid以及所在组
  • groups   当前用户所在组
  • whoami—>pwd—>uname -a
  • netstat -pantu   端口信息
  • netstat -nr   路由表及网关

三、实验步骤

(一)Low级别

1.源码

DVWA(二)命令执行漏洞(Command Injection)_第3张图片

  • 基本未进行任何过滤
  • stristr(string,search,before_search)函数

stristr函数搜索字符串在另一字符串中的第一次出现,返回字符串的剩余部分(从匹配点),如果未找到所搜索的字符串,则返回 FALSE。参数string规定被搜索的字符串,参数search规定要搜索的字符串(如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符),可选参数before_true为布尔型,默认为“false” ,如果设置为 “true”,函数将返回 search 参数第一次出现之前的字符串部分。

  • php_uname(mode)函数

函数会返回运行php的操作系统的相关描述,参数mode可取值”a” (此为默认,包含序列”s n r v m”里的所有模式),”s ”(返回操作系统名称),”n”(返回主机名),” r”(返回版本名称),”v”(返回版本信息), ”m”(返回机器类型)。可以看到,服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,导致了严重的命令注入漏洞。

2.命令执行漏洞利用

127.0.0.1
127.0.0.1 && dir      文件路径
127.0.0.1 | ipconfig  网卡
127.0.0.1 | arp -a    arp表
127.0.0.1 | regedit   注册表
127.0.0.1 | netstat -ano    端口信息

DVWA(二)命令执行漏洞(Command Injection)_第4张图片

DVWA(二)命令执行漏洞(Command Injection)_第5张图片

DVWA(二)命令执行漏洞(Command Injection)_第6张图片

DVWA(二)命令执行漏洞(Command Injection)_第7张图片

DVWA(二)命令执行漏洞(Command Injection)_第8张图片

DVWA(二)命令执行漏洞(Command Injection)_第9张图片

(二)Medium级别

1.源码

DVWA(二)命令执行漏洞(Command Injection)_第10张图片

  • 采用了黑名单机制,过滤了“&&”与“;”(将其替换为空字符)

2.命令执行漏洞利用

DVWA(二)命令执行漏洞(Command Injection)_第11张图片

DVWA(二)命令执行漏洞(Command Injection)_第12张图片

DVWA(二)命令执行漏洞(Command Injection)_第13张图片

  • 只能使用“&”和“|”字符,进行拼接

3.绕过方式

127.0.0.1 &&& arp -a
127.0.0.1 &;& arp -a

DVWA(二)命令执行漏洞(Command Injection)_第14张图片

DVWA(二)命令执行漏洞(Command Injection)_第15张图片

  • 可以使用“&&&”和“&;&”字符,进行绕过

(三)High级别

1.源码

DVWA(二)命令执行漏洞(Command Injection)_第16张图片

  • 相较于medium级别,进一步完善了黑名单
  • 过滤了'&' ,';','|  ','-','$','(',')','`','||'等字符
  • 其中'|  '后,有空格

2.命令执行漏洞

127.0.0.1 && arp -a
127.0.0.1 & arp -a
127.0.0.0 | arp -a

DVWA(二)命令执行漏洞(Command Injection)_第17张图片

DVWA(二)命令执行漏洞(Command Injection)_第18张图片

DVWA(二)命令执行漏洞(Command Injection)_第19张图片

  • 使用“&&”,“&”,“|”字符(在这些字符前后加了空格)进行漏洞利用,失败

3.绕过方法

127.0.0.0|ipconfig

DVWA(二)命令执行漏洞(Command Injection)_第20张图片

  • “|”前后无空格

(四)Impossible级别

{$cmd}
"; } else { // Ops. Let the user name theres a mistake echo '
ERROR: You have entered an invalid IP.
'; } } // Generate Anti-CSRF token generateSessionToken(); ?>
  • 过滤“\”
  • 以“.”拆分,先判断是否为四段,再断每段是否都为数字,全部成立,则执行ping命令

你可能感兴趣的:(DVWA)