WebGoat (A7) Cross Site Scripting (XSS)

目录

一、比较EASY的闯关

第2页

第7页

第10页

第11页

第12页

二、 课程思维图


一、比较EASY的闯关

第2页

虽然这页好简单,但是强迫症不写就是不爽╮(╯-╰)╭

这页问了个问题:WebGoat范围内多个页面cookie是否一样?

虽然很想直接yes,但还是走一遍流程吧

第1个页面,打开开发者工具(我用的chrome),在Console中输入document.cookie

发现cookie是"JSESSIONID=KDno80WzTKHgbTZZ2SP0-xQmVR7M5m5GTNGHHrBp"

第2个页面,打开开发者工具,在Console中输入alert(document.cookie),发现cookie和第一个页面一样。

(输入document.cookie还是alert(document.cookie)都无所谓,就是体验一下不同方式~( ̄▽ ̄)~)

流程的最后,我们来填个yes

第7页

这一页要求用alert()或者console.log()来试哪里有XSS

由于XSS最终是要浏览器渲染的,因此,可以先按下Purchase,看看哪个输入是会回显的

从上图可知,电话号码哪个输入框的输入参数是会回显的

在这个输入框中尝试输入

<script>alert('I win this game')</script>

告警弹出,顺利过关

再试试用console.log()什么效果。。输入

<script>console.log('I win this game')</script>

无事发生。。。但是打开开发者工具的话,Console里面可以看到一行记录

题外话:

第8页给了个链接

点击之后却没有过关,肿么回事呢?

看了一下代码,是通关检查的时候有点坑,matches()函数是用来检查字符串是否匹配正则表达式的,那下图这段代码中正则表达式这么写,就是说field1要以<script>开头并以</script>结尾,不然就过不了关。

不过这个过关检查实际上不影响弹框,我们返回第7页,输入

<script>alert(1)</script>123456

还是会弹框的,但是通关失败

回到第8页,删掉链接中field1的电话号码,只留下干净的script标签,虽然可以通关,但是不会弹框,因为这个url返回的是json数据,而不是需要浏览器渲染的页面。。

所以就像第8页说的,第7页是self XSS,自娱自乐。。。

第10页

声明:本小白JavaScript仅略知皮毛,这关主要是JavaScript代码审计,本小白半蒙半猜,如有错漏,还望路过的大神指正。

这页要求找测试用的路径,并提示需要在JavaScript代码中寻找。

根据提示,不动脑子就打开了开发者工具,来到Sources,然后就要动脑子了

首先在WebGoat文件夹下找到js文件夹,然后js文件夹上右键search in folder

拿route搜一搜,搜到下图的3个结果,首先排除掉libs文件夹下的,剩下的两个看一下内容,goatApp.js内容很简单,看完之后也可以排除,下面可以重点看一下GoatRouter.js

点开GoatRouter.js,按Ctrl+F调出搜索栏,继续搜route,发现有个定义路径的地方,有个叫test的路径,后面可以跟param参数。

胆子大一点的话,现在就可以提交答案了:start.mvc#test

胆小的话可以再往下观察观察

在GoatRouter.js中搜一下testRoute在哪里,发现testRoute把param参数扔到lessonController的testHandler()里面去了

打开lessonController.js,找一下testHandler,发现它又把param扔到lessonContentView的showTestParam()里面去了

打开lessonContentView.js,搜索showTestParam。还真是,直接把参数输出到页面了。

所以本题的答案就是:start.mvc#test

来试试利用这个路径构造DOM XSS的payload:

地址栏输入:http://192.168.101.16:8222/WebGoat/start.mvc#test/%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%31%29%3c%2f%73%63%72%69%70%74%3e,会如下图一般弹框。

%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%31%29%3c%2f%73%63%72%69%70%74%3e是<script>alert(1)</script>的url编码,我是直接扔进burpsuite的Decoder模块进行编码的,所以一下子每个字符都编码了。。其实可以只把/编码为%2f,也就是输入http://192.168.101.16:8222/WebGoat/start.mvc#test/<script>alert(1)<%2fscript>剩下的该编码的东西浏览器会自己动手的,经过机智的浏览器编码之后的url实际是:

http://192.168.101.16:8222/WebGoat/start.mvc#test/%3Cscript%3Ealert(1)%3C%2fscript%3E

题外话:

这题也可以在js中search in folder的时候搜test,然后反向推,但好像还是正向推容易点。

第11页

这一页要求用上一页找到的路径实施DOM XSS攻击,在浏览器的console中获取到一串随机数

有了上一页的铺垫,这里直接构造payload:

http://192.168.101.16:8222/WebGoat/start.mvc#test/%3Cscript%3Ewebgoat.customjs.phoneHome()%3C%2fscript%3E

访问之后页面上没有显示什么,打开开发者工具,进入Console,可以看到要找的随机数(下图中最后一个高亮部分),填入上图输入框并提交即可过关。

第12页

这一页是5道单选题,答案见下图

二、 课程思维图

猜你喜欢

转载自blog.csdn.net/elephantxiang/article/details/115016330
今日推荐