1. DVWA简介
DVWA(Damn Vulnerable Web Application)一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用平台,旨在为网络安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。
DVWA还可以手动调整靶机源码的安全级别,分别为Low,Medium,High,Impossible,级别越高,安全防护越严格,渗透难度越大。
1.暴力破解(Brute Force)
利用密码字典,使用穷举法猜解出用户口令
2.命令行注入(Command Injection)
指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的
3.跨站请求伪造(CSRF)
利用受害者尚未失效的身份认证信息,诱骗其访问包含攻击代码的页面,以受害者的身份向发送请求,完成非法操作。
4.文件包含(File Inclusion)
利用url去动态包含文件,如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行
5.文件上传(File Upload)
由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的权限
6.不安全的验证码(Insecure CAPTCHA)
·验证码的验证流程出现了逻辑漏洞,使得攻击者可以绕过验证码而访问系统
7.SQL注入(SQL Injection)
·通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的
8.SQL盲注(SQLInjection(Blind))
盲注时攻击者通常是无法从显示页面上获取执行结果,通过逻辑结果来进行SQL注入
9.反射型跨站脚本(XSS(Reflected))
指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行
10.存储型跨站脚本(XSS(Stored))
指出现在 DOM(文档对象模型)而非 HTML 中的跨站脚本漏洞。
2. DVWA安装
DVWA是PHP/MYSQL的源码环境,我们可以将DVWA安装在PHPStudy中,PHPStudy是一个PHP调试环境集成包,集成了我们所需的环境。DVWA和PHPStudy官方下载地址:
PHPStudy:小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)https://www.xp.cn/
DVWA:GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA)https://github.com/digininja/DVWA
2.1 配置PHPStudy
从官网下载好之后直接安装,注意安装路径不能用空格和中文。
打开后启动Apache和MySQL,启动后打开浏览器登录localhost检查是否成功
如果出现下面这个界面就说明启动成功了:
启动MySQL时,有些人会出现启动后马上停止的情况,有可能是你本地的mysql数据库占用了3306端口,导致phpstudy的mysql启动失败。
解决方法之一:在phpstudy中点击设置,检测3306端口,检测到被占用时可以自动帮你关掉占用的程序;或者自己手动打开电脑的服务,找到mysql,停止或暂停程序。
2.2 搭建DVWA
- 从官网下载好压缩包后,解压到phpstudy目录下的www文件夹中,如下图所示。解压时如果杀毒软件提示有病毒并且自动把病毒清理了的话,先把杀毒软件关掉再解压。
- 在/dvwa-master/config目录下,有一个
config.inc.php.dist
文件,复制这个文件,然后在这个文件夹中粘贴,并将文件名重命名为config.inc.php
-
打开
config.inc.php
文件,将数据库用户名和密码均修改为root
,可以将公钥及私钥分别设置为6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb
和6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K
-
找到phpstudy目录下的
php.ini
配置文件,注意是phpstudy目录下的,不是dvwa目录下的,可以在根目录中直接搜索查找
然后打开这个文件,设置allow_url_fopen=On
allow_url_include=On
- 至此,所有配置已经完成。在浏览器中打开http://localhost/Dvwa-master 或者 http://127.0.0.1/DVWA-master 进入DVWA,输入账号密码,默认为admin/password,登录后点击下方的创建数据库即可。
3. 靶场使用示例
在DVWA Security 中将安全等级设置为low,以sql注入为例,在左边选择sql注入(SQL Injection
)。
我们按正常的查询,输入1
提交进行查询,同时打开F12,选择网络,查看该条请求的信息,找到请求url和请求头中的cookie。
我们可以进行一个简单的sql注入,目标是查询出当前使用的数据库以及当前的数据库用户。
-
在浏览器中进行注入
在User ID处输入
1' union select database(),user()#
点击提交查询,我们就查到了当前使用的数据库为dvwa
及当前的数据库用户为root@localhost
。
-
使用postman工具进行注入
选择GET请求,将url复制进去,然后将参数id的值改为
1' union select database(),user()#
,然后在header中添加一个cookie参数,将刚才的cookie的值复制进去。
点击Send发送请求,在预览中就可以看到注入结果了。