DVWA之Command Injection(命令注入)

前言

  • Command Injection,即命令注入攻击,是指由于Web应用程序对用户提交的数据过滤不严格,攻击者可通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。通常是在&&、&、|、||命令拼接符号再跟上自己需要执行的系统命令。

Low

  • 类似于普通SQL注入,先满足原定的命令参数。然后在后面用&&命令拼接符号跟上自己想要执行的命令。
    DVWA之Command Injection(命令注入)_第1张图片

Medium

  • 后端把提交的参数做了一定过滤,过滤了”&&” 、”;”,但还可以用&、| 。
    DVWA之Command Injection(命令注入)_第2张图片

  • 这里需要注意的是”&&”与” &”的区别:

  • Command 1&&Command 2
    先执行Command 1,执行成功后再执行Command 2,否则不执行Command 2

  • Command 1&Command 2
    先执行Command 1,不管是否成功,都会执行Command 2

  • Command 1 | Command 2
    “|”是管道符,表示将Command 1的输出作为Command 2的输入,并且只打印Command 2执行的结果。

  • 由于使用的是str_replace把”&&” 、”;”替换为空字符,因此可以采用以下方式绕过:

127.0.0.1&;&ifconfig
127.0.0.1;&ifconfig
127.0.0.1&;ifconfig
127.0.0.1&&&whoami
127.0.0.1&&| whoami
127.0.0.1|&&whoami

High

  • 后端把提交的参数做了多个字符的过滤,过滤了&、; 、| 、- 、$ 、) 、( 、` 、||。
  • 代码中把’| ‘替换成了空白符,’|'却没有被过滤掉,可以构造payload 127.0.0.1|cat /etc/passwd
    DVWA之Command Injection(命令注入)_第3张图片

Impossible

  • 后端代码中纳入了这三个函数:stripslashes( )、explode( )、is_numeric( )
  • stripslashes( ):
    删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。
  • explode( ):
    函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
  • is_numeric( ):
    用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。

你可能感兴趣的:(Web,Application漏洞)