目录
一、比较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
这一页要求用alert()或者console.log()来试哪里有XSS
由于XSS最终是要浏览器渲染的,因此,可以先按下Purchase,看看哪个输入是会回显的
从上图可知,电话号码哪个输入框的输入参数是会回显的
在这个输入框中尝试输入
alert('I win this game')
告警弹出,顺利过关
再试试用console.log()什么效果。。输入
console.log('I win this game')
无事发生。。。但是打开开发者工具的话,Console里面可以看到一行记录
题外话:
第8页给了个链接
点击之后却没有过关,肿么回事呢?
看了一下代码,是通关检查的时候有点坑,matches()函数是用来检查字符串是否匹配正则表达式的,那下图这段代码中正则表达式这么写,就是说field1要以开头并以结尾,不然就过不了关。
不过这个过关检查实际上不影响弹框,我们返回第7页,输入
alert(1)123456
还是会弹框的,但是通关失败
回到第8页,删掉链接中field1的电话号码,只留下干净的script标签,虽然可以通关,但是不会弹框,因为这个url返回的是json数据,而不是需要浏览器渲染的页面。。
所以就像第8页说的,第7页是self XSS,自娱自乐。。。
声明:本小白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是alert(1)的url编码,我是直接扔进burpsuite的Decoder模块进行编码的,所以一下子每个字符都编码了。。其实可以只把/编码为%2f,也就是输入http://192.168.101.16:8222/WebGoat/start.mvc#test/alert(1)剩下的该编码的东西浏览器会自己动手的,经过机智的浏览器编码之后的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,可以看到要找的随机数(下图中最后一个高亮部分),填入上图输入框并提交即可过关。
这一页是5道单选题,答案见下图