Damn Vulnerable Web Application (DVWA) 是一个用于安全漏洞演练的开源测试工具,程序本身能够模拟很多常见的Web漏洞,比如XSS,CSRF,文件注入,SQL注入、文件上传漏洞等等,可以帮助开发人员更好的理解漏洞原理和方法测试。其基于 PHP+MySQL 技术栈,官网网址为 http://dvwa.co.uk, 基于 GPL-3.0 开源许可。
DVWA 是一个典型的 PHP 应用,其安装过程非常简单,不在这里赘述,可以结合前卫介绍的 XAMPP(TODO地基上)使用。下载之后需要一些的初始化配置:
初始化 config.inc.php 文件
$ cp ./config/config.inc.php.dist ./config/config.inc.php
设置数据密码
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = 'p@ssw0rd';
$_DVWA[ 'db_database' ] = 'dvwa';
配好之后访问 http://192.168.56.101/dvwa/setup.php 可以初始化数据库表(初始账号密码为 admin/password)如图,对于不符合要求的配置项会有提示。
支持 4 个安全级别,不同的安全级别对于漏洞的防护措施也不一样。
- 低(Low) - 最脆弱的安全级别,没有任何防范措施。
- 中(Medium) - 有基本的安全防范措施,但也非常脆弱,容易绕过,此级别主要用于展示错误的防范示例。
- 高(High) - 较难被破解,但依然有漏洞,此时代码依然是不安全的。
- 不可能(Impossible) - 该级别的代码能防范所有漏洞,主要用于和其他级别的不安全打代码进行比较,帮助开发人员理解防范漏洞的措施。
比如我们将安全级别调到最低(Low,DVWA->Secuirty 进行设置),,如图:
然后构建一个简单的XSS攻击,在表单输入 "",如图:
点击提交重现漏洞:
通过右下角的 ViewSrouce 按钮可以查看当前的收到攻击的服务端代码,可以用来分析原因:
点击 “Compare All Levels”,还可以和各个安全级别的代码进行比较,用来分析哪些方式是最安全的,哪些方式是不安全的。