0x00 前言
其实在这之前还有一章Broken Access Control 但是简单的做了做之后发现那个章节就是为了给我们提供一些思路,代码方面没什么可以说的就跳过了
0x01 正文
Reflected XSS
xss相对熟悉一些,我们只需要找到输出的点然后尝试我们的xss脚本就可以了
我们先updatecert一下,发现红框中的数据直接输出了所以我们直接进行xss即可
接下来我们来看一下源码
查看后端代码可以发现,后端没有进行任何过滤直接进行了拼接输出
Dom XSS
一直以来dom xss没怎么关注(主要是不知道怎么关注
正好webgoat有这个例子,根据题意让我们找到测试页面的基础路由地址
由于dom xss全部都是由前端进行触发的所以我们关注的代码都在前端
我这里使用的是火狐因为火狐有全局搜索功能 爱了爱了
我们全局搜索route
发现存在testtoute,点进去进行追踪
发现对应的是 testRoute函数,param参数传入到了testRoute函数中
继续跟进这个函数
发现调用了testHanlder,同样的继续进行一个跟进
发现又调用了showTestParam函数,继续跟进
最后发现了在该函数下直接进行了一个参数拼接
所以url如下
http://localhost:8081/WebGoat/start.mvc#test/1111
Basic url 为 /start.mvc#test/
后面的111是参数
所以只要把111替换成我们的xss即可,过程中我们将我们的payload url编码即可
所以如下命令可触发
http://localhost:8081/WebGoat/start.mvc#test/%3Cdetails%20open%20ontoggle=confirm(0)%3E
Try It! DOM-Based XSS
这一题其实在上面就已经做过了
题目的意思是让我们利用dom xss 来触发webgoat.customjs.phoneHome()
所以我们只需要
http://localhost:8081/WebGoat/start.mvc#test/%3c%73%63%72%69%70%74%3e%77%65%62%67%6f%61%74%2e%63%75%73%74%6f%6d%6a%73%2e%70%68%6f%6e%65%48%6f%6d%65%28%29%3c%2f%73%63%72%69%70%74%3e
直接在外面加个script标签 然后url编码即可
就能获取到我们的电话号码
然后提交即可
0x02 修复建议
xss 防御起来也比较简单,我们只需要将尖括号等进行一个转义就可以了,然后前端dom xss的话避免参数直接拼接,还是要做好过滤