DVWA Command Injection

  • A+
所属分类:安全文章
0x01.Command Injection(Low)
相关代码分析
<?php if( isset( $_POST[ 'Submit' ]  ) ) {// Get input$target = $_REQUEST[ 'ip' ]; // Determine OS and execute the ping command.if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// Windows$cmd = shell_exec( 'ping  ' . $target );}else {// *nix$cmd = shell_exec( 'ping  -c 4 ' . $target );} // Feedback for the end user$html .= "<pre>{$cmd}</pre>";} ?>
stristr() 函数
搜索字符串在另一字符串中的第一次出现。该函数是二进制安全的,  且是不区分大小写的。如需进行区分大小写的搜索,要使用 strstr() 函数。
php_uname()函数
返回运行 PHP 的系统的有关信息。
'a':此为默认。包含序列 "s n r v m" 里的所有模式。
's':操作系统名称。例如:FreeBSD。
'n':主机名。例如:localhost.example.com。
'r':版本名称,例如:5.1.2-RELEASE。
'v':版本信息。操作系统之间有很大的不同。
'm':机器类型。例如:i386
可以看到, 服务端代码仅仅根据操作系统的不同, 执行相应的命令,  没有进行任何过滤, 导致了严重的命令执行漏洞。
命令是用分号;分隔的, 所以尝试注入:
;ls /
DVWA Command Injection
还可以用&&来执行,  &&当第一个命令执行成功时(返回0), 才执行&&后面的命令
command1 && command2
如果command1执行成功,则执行command2
baidu.com && pwd
DVWA Command Injection
baidu.com & pwd
baidu.com || pwd
结果相同
DVWA Command Injection
baidu.com | pwd
DVWA Command Injection

0x02.Command Injection(Medium)

相关代码分析
DVWA Command Injection
服务器端对ip参数做了一定过滤,即把”&&” 、”;”删除,本质上采用的是黑名单机制,因此依旧存在安全问题。
采用黑名单过滤,  可以理解为一种枚举过滤,  列举出可能出现的漏洞, 然后过滤;  但是很多情况下是枚举不完的, 依旧存在漏洞
只有”&&”与” ;”被过滤了,所以”&”不会受影响。
输入baidu.com & pwd
DVWA Command Injection
方式:command1 | command2
command1的输出作为command2的输入
baidu.com | pwd
DVWA Command Injection
方式:command1 || command2
如果command1执行失败,则执行command2
baidu.com || pwd
DVWA Command Injection
0x03.Command Injection(High)
相关代码分析
DVWA Command Injection
在High级别中,  将一些主要的命令执行关键字( & ; | ...) 给替换为空了,  但是由于黑名单过滤的局限性,  还是存在漏洞的。
仔细观察发现,  仅仅是把 | (带一个空格) 给替换为空了,  实际上并没有把 | (管道符)给过滤
127.0.0.1|ls
DVWA Command Injection

0x04.Command Injection(Impossible)

相关代码分析
DVWA Command Injection
相关函数介绍
stripslashes(string)
stripslashes函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。
explode(separator,string,limit)
把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目。
is_numeric(string)
检测string是否为数字或数字字符串,如果是返回TRUE,否则返回FALSE。
DVWA Command Injection

可以看到,Impossible级别的代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞。

DVWA Command Injection
0x05.写在最后
免责声明:本站提供的安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!本文部分内容来自网络,在此说明。
转载声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
欢迎关注公众号:24h进德修业,一名普通的白帽子,维护着一个既讲技术又有温度的原创号,一如既往地学习和分享,希望能够给大家带来帮助,前行的道路上感谢有您的关注与支持。

本文始发于微信公众号(24h进德修业):DVWA Command Injection

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: