DVWA安装使用介绍,见:【工具-DVWA】DVWA的安装和使用
本渗透系列包含最新DVWA的14个渗透测试样例:
1.Brute Force(暴力破解)
2.Command Injection(命令注入)
3.CSRF(跨站请求伪造)
4.File Inclusion(文件包含)
5.File Upload(文件上传)
6.Insecure CAPTCHA(不安全的验证码)
7.SQL Injection(SQL注入)
8.SQL Injection(Blind)(SQL盲注)
9.Weak Session IDs(有问题的会话ID)
10.XSS(DOM)(DOM型xss)
11.XSS(ref)(反射型xss)
12.XSS(Stored)(存储型xss)
13.CSP Bypass(Content Security Policy内容安全策略,旁路/绕过)
14.JavaScript
安全级别分低、中、高、安全四个级别来分析CSRF的渗透测试过程。
为何需要伪造请求呢?如果只是自己模拟网站请求,那没有利用价值,和登录网站发起请求效果一样。但是如果可以借用其他用户的身份,然后再模拟请求呢?比如基本信息提取,修改密码,转账等等。
伪造连接,让用户自己发起请求,前提该用户已登录目标网站,如果没有登录,就需要你引导Ta去登录,是自己构造一个仿真登录页(容易被发现,但是如果成功,那么你就获取了账号密码,就无所谓后续的请求伪造了),还是跳转到真实网站,都可以。当然,这个伪造连接必须要有一定的吸引力,跳转之后的页面,可以是404页面,也可以是其他页面(比如你伪造了一个获奖链接,则返回一个当前活动已结束页面),页面中可以隐藏一个CSRF请求。
都是属于忘记密码,然后重置的功能,无需输入原密码
放入隐藏代码块,当页面被加载时,会执行修改密码请求,攻击页面需要放在漏洞网站(避免浏览器阻止跨域请求),上传方式可利用任意文件上传漏洞。
利用XSS(Store)漏洞,将代码注入到网站,当用户访问存在XSS(Store)漏洞页面时,将触发修改密码请求。
1、拷贝发现文本框有长度限制,解决方案有两个,burpsuite拦截请求将请求内容进行修改,或者修改页面css代码,去除限制。
将最大长度50修改为5000
提交请求后,使用其他用户进行登陆,访问该页面后,重新登陆,确认密码已经修改为hack。
PS:构造过程中,构造恶意请求的用户的密码也会被修改为hack。
// Get input
$pass_new = $_GET[ 'password_new' ];
$pass_conf = $_GET[ 'password_conf' ];
if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false ) {
// Get input
$pass_new = $_GET[ 'password_new' ];
$pass_conf = $_GET[ 'password_conf' ];
PS:如果你伪造的是跨域请求,则需要修改请求页面名称为IP-Server.html(IP-Server换成真实IP或域名)这样可以绕过Referer验证,所以这种方式不安全,应该判断是否以http(s)://IP-Server开头。
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Generate Anti-CSRF token
generateSessionToken();
获取token方式:将级别调整到Low,然后使用Xss-Store漏洞注入代码(High级别的XSS的绕过,后续具体章节再说),注入之后再将级别调整为High
结果:这种弹框方式仅用于演示,如果要应用,需要思考如何将该值赋到请求的URL中,后续补充......
看源码:其实就是多了一个当前密码的输入,这样就没法后台绕过了,同时还加了防SQL注入的机制。
$pass_curr = $_GET[ 'password_current' ];
防止CSRF的方式:
爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!