WebGoat 靶场通关笔记 Cross Site Scripting
Cross Site Scripting
2
同一URL在多个选项卡之间共享cookie。
体验新开一个相同URL的选项卡页面,在控制台输出cookie。
其实,直接点击复选按钮,提交就过关,这里只是为了让你了解相关知识。
7
反射型XSS。
确定哪个字段容易受到XSS的影响。可以用 alert()
或者 console.log()
测试。
首先尝试这两个可以直接输入的输入框,发现不行。
那就看看发送的请求数据包,然后直接改请求参数。发现上面的四个价格参数是要转为数值类型的,没法xss。
那么还是要搞下面的这两个可控参数了。直接提交正常的参数,发现页面回显了 credit card
。那么这个参数可能存在xss,现在只测试 credit card
这个值。
credit card
这个参数确实存在反射型xss。
刚才同时测试下面两个输入框的时候显示做了xss安全检查,其实只做了第二个参数 access code
的检查。
所以说,别急着上来就注入,应该先看看正常请求有什么响应。
10
DOM型XSS。
基于DOM的XSS通常可以通过在客户端代码中(HTML或JavaScript)通过查找路由配置来找到,即寻找一条将输入“反射”到页面的路径。
检查JavaScript源代码,找到测试用的路由路径。
搜索js文件夹下包含 route
的文件,可以找到一个 testRoute
路由路径。
那么,提交 start.mvc#test
这个路由就行了。
不过还是来验证一下吧:
1 | # 访问这个链接 |
出现了xss弹窗,验证成功。
11
利用上面找到的路由路径实施DOM XSS攻击。
使用上面找到的路由路径,看看是否可以使用它来反射路由中的参数,而无需编码即可在WebGoat中执行内部函数。要执行的函数是:webgoat.customjs.phoneHome()
。一旦触发它,浏览器控制台将收到一个随机数作为后续响应。
直接使用上面的路由路径来执行指定的js代码:webgoat.customjs.phoneHome()
。
1 | # 访问这个链接,在开发者工具的控制台中即可获得返回的随机数 |
12
回答安全问题。
淦,依旧看不到题目。参考上面的CIA Triad解决吧。
答案:4,3,1,2,4
Cross Site Scripting (stored)
3
存储型XSS。
发一条评论,使其可以执行js代码:webgoat.customjs.phoneHome()
。将控制台回显的随机数提交即可。
1 | # 评论框提交内容 |
Cross Site Scripting (mitigation)
5
尝试通过转义JSP文件中的URL参数来防止反射型XSS。
可以使用OWASP提供的OWASP Java Encoder进行转义处理:
1 | <%@taglib prefix="e" uri="https://www.owasp.org/index.php/OWASP_Java_Encoder_Project" %> |
6
防止存储型XSS。
参考OWASP AntiSamy,通过在saveNewComment()函数中创建一个干净的字符串来防止存储型XSS。使用“antisamy slashdot.xml”作为此示例的策略文件。
1 | import org.owasp.validator.html.*; |
Path traversal
2
在该任务中,目标是覆盖文件系统上的特定文件。需要将文件上传到默认上传位置之外的位置。
1 | # 默认文件上传位置: |
点击头像可以上传文件:
上传图像的数据包显示文件保存成功,但是文件名并不是原来的文件名,而是 test
。猜测保存的文件名由 fullName
决定。
发现确实如此。
那么将 fullName
修改为 ../test
即可。
3
同上一题目的要求,但是这里修复了程序,从输入中过滤了 ../
。
可以尝试双写绕过,即 ..././
。
4
同上一题目的要求,但是这里又修复了程序,但是这里又开始改用原始文件名来保存上传的文件了。
那直接改原始文件名就行了。
5
通过路径遍历检索其他文件。
路径遍历不限于文件上传;在检索文件时,可能会出现路径遍历可以从系统中检索其他文件的情况。在这个题目中,需要找到一个名为path-traversal-secret.jpg的文件。
点击show random cat picture,查看数据包响应,回显了图像的文件名。
那我们直接试试添加指定图像的文件名参数访问。
根据返回的响应可以看到指定的id值不对,不需要加扩展名。
那么,我们直接通过目录穿越来遍历path-traversal-secret.jpg这个文件。响应表明需要对 ../
进行URL编码为 %2e%2e%2f
。
依次向上翻了两层目录,终于找到了该文件,回显得到了文件内容。
文件内容提示:username
的 SHA-512 hash 值即为需要提交的结果。
找个工具计算一下就行了,注意是webgoat的登录用户名。
7
题目只允许上传zip文件。但是上传的zip文件会被解压,但不会替换您的图像。
您需要替换的配置文件图像的位置:C:\Users\xxx/.webgoat-2023.8/PathTraversal/admin12138/admin12138.jpg
。
直接上传包含图像的zip文件,报错。
从回显中可知,需要先向上遍历四层目录到达 C:\Users\xxx
,再切换到目标目录 .webgoat-2023.8\PathTraversal\admin12138\admin12138.jpg
就行了。
1 | # 通过目录穿越到目标地址 |
首先,按照上面响应回显的文件夹路径创建文件夹和文件:
此处,在Windows下使用zip命令(需要自行安装)来压缩一个带有自定义相对路径的压缩包。
1 | # 切换目录 |
注意,先删除原先自己制作的 C:\Users\xxx\.webgoat-2023.8\PathTraversal\admin12138\admin12138.jpg
文件!
然后,上传这个压缩包 1.zip
,搞定。