2.打开两个tab页面看看cookie是否相同:
F12打开开发者工具(部分电脑是Fn+F12),输入alert(document.cookie)查看cookie发现相同,输入yes即可
7.找到容易受攻击的字段
提交使用burpsuite抓包看看提交了哪些参数
分别提交了:QTY1=1&QTY2=1&QTY3=1&QTY4=1&field1=4128%203214%200002%201999&field2=111
在网页中挨个修改为<script>alert(“XSS”)</script>测试一遍
看看哪些弹出提示框
发现第一个字段存在xss漏洞
10.查找dom型xss漏洞
根据提示源代码中存在一个开发留下的测试代码,所有先查找路由
根据提示找到路由文件,在goatapp.js根据注释发现路由文件
打开路由文件可以使用ctrl+F查找关于test的字眼,看看是否存在题目所说的test代码的路由:发现一个testRoute()函数应该就是用来给测试函数传递参数的路由文件。可以看出this.lessonController.testHandler(param)应该就是那个题目中所说开发遗留下的测试函数。
在lessonController找到testHandler(param)这个函数,发现该函数,先在控制台打印”test handler”,之后向lessonContentView.showTestParam(param)函数传递参数
找到lessonContentView.showTestParam(param)这个函数看看,发现有一个JS内置函数this.$el.find(‘.lesson-content’).html(‘test:’ + param)上网搜搜这个函数是干什么的
showTestParam: function (param) { this.$el.find(‘.lesson-content’).html(‘test:’ + param); },
根据提供的代码段,这是一个 JavaScript 函数 showTestParam 的定义。该函数通过传入一个参数 param,然后将其值作为 HTML 内容插入到类为 lesson-content 的元素中。
在这段代码中,需要注意以下几点:
函数名称为 showTestParam,它接受一个参数 param。
使用了 this.$el.find(‘.lesson-content’) 来选取类为 lesson-content 的元素。
将 ‘test:’ + param 作为 HTML 内容插入到选取的元素中。
这段代码看起来是用来在页面上展示传入的参数值。但是需要注意的是,直接将参数值插入到 HTML 中可能存在安全风险,因为未经过滤的参数值可能包含恶意脚本,导致 XSS(跨站脚本攻击)漏洞。因此,在实际应用中,应该对参数值进行适当的转义或过滤,以防止潜在的安全问题。
根据xss产生原因:恶意脚本注入到html文件中成为html文件的一部分,被浏览器认为是可信代码而导致浏览器执行恶意脚本
所以根据刚才lessonContentView.showTestParam(param)传递参数的一系列过程,只要我们向该函数传入一个恶意脚本,就可以就行xss攻击。
那么如何向lessonContentView.showTestParam(param)传递参数,直接找到谁最开始向这个过程传递参数就可以了。
我们最前面是在找路由文件,路由文件负责把url中的参数传递到对应的函数中。显然就是这个最开始的路由函数向内传递参数的。那么怎么向该函数传递参数呢
我们看看这个函数如何声明的,按ctrl+f直接查找该函数,发现在最开始声明路由时是将test/参数作为传递参数的格式
确定是否存在漏洞
接下俩只需要构造这样的url:http://127.0.0.1:8082/WebGoat/start.mvc#test/<script>alert(“XSS”)</script>,在进行url编码
编码后:http://127.0.0.1:8082/WebGoat/start.mvc#test/%3Cscript%3Ealert(%22XSS%22)%3C%2Fscript%3E
发现执行了注入的脚本,确定漏洞确实存在,根据题目给的格式向题目提交路由即可:
11.根据刚才找到漏洞执行代码
构造url:http://127.0.0.1:8082/WebGoat/start.mvc#test/<script>alert(webgoat.customjs.phoneHome())</script>进行url编码
http://127.0.0.1:8082/WebGoat/start.mvc#test/%3Cscript%3Ealert(webgoat.customjs.phoneHome())%3C%2Fscript%3E
发现执行了代码,点击确认后,查看控制台输出
提交随机码即可