欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DVWA之Command Injection(命令注入)

程序员文章站 2022-07-16 12:37:43
...

前言

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

Low

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

Medium

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

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

  • 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(命令注入)

Impossible

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