目前,最新的 DVWA 已经更新到 1.9 版本( http://www.dvwa.co.uk/ ),而网上的教程大多停留在旧版本,且没有针对 DVWA high 级别的教程,因此萌发了一个撰写新手教程的想法,错误的地方还请大家指正。
DVWA简介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的搭建
CodeSec 上的这篇文章《新手指南:手把手教你如何搭建自己的渗透测试环境》( http://www.CodeSec.Net/sectool/102661.html )已经写得非常好了,在这里就不赘述了。
本篇为完结篇,介绍 XSS 模块的相关内容,之前的教程:
Brute Force
Command Injection
CSRF
File Inclusion
File Upload
Insecure CAPTCHA
SQL Injection
SQL Injection(Blind)
XSSXSS ,全称 Cross Site Scripting ,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是, XSS 不仅仅限于 javascript ,还包括 flash 等其它脚本语言。根据恶意代码是否存储在服务器中, XSS 可以分为存储型的 XSS 与反射型的 XSS 。
DOM 型的 XSS 由于其特殊性,常常被分为第三种,这是一种基于 DOM 树的 XSS 。例如服务器端经常使用 document.boby.innerHtml 等函数动态生成 html 页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生 DOM 型的 XSS 。 DOM 型 XSS 可能是存储型,也有可能是反射型。
(注:下面的实验都是在 Firefox 浏览器下进行的,感谢火狐没做 XSS filter )
反射 型 XSS下面对四种级别的代码进行分析。
Low服务器端核心代码