一些BAT的XSS实例(七)技巧篇
字数 1898 2025-08-26 22:11:45
BAT XSS实例(七)技巧篇 - 深入解析与绕过技术
前言
本文详细解析了几个精心设计的XSS挑战题目,重点探讨了opener属性和CSP绕过等高级技巧。这些实例来自BAT等大型互联网公司的真实场景或精心设计的挑战,具有很高的学习价值。
题目14:opener属性利用
题目分析
题目URL:http://px1624.sinaapp.com/test/xsstest14/
核心代码分析:
function open_win() {
window.open("https://px1624.sinaapp.com/test/xsstest14/");
location="https://px1624.sinaapp.com/test/xsstest14/?returnurl=javascript:alert(14)";
}
关键知识点
-
opener属性:
opener是window对象的属性,返回打开当前窗口的那个窗口的引用- 如果当前窗口不是由其他窗口打开的,
opener返回null - MDN文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/opener
-
跨域限制:
- 直接尝试
opener.location.href会因跨域问题而失败 - 流程:你的页面 → window.open("目标页面") → opener.location.href(跨域报错)
- 直接尝试
绕过思路
-
时间差攻击:
- 利用
window.open和location跳转的时间差 - 新窗口的创建和内容渲染比
location跳转慢 - 当新窗口调用
opener.location.href时,原窗口已跳转到目标域名
- 利用
-
具体步骤:
- 你的页面 → window.open("目标页面")
- 立即location跳转到目标域名页面
- 新窗口调用opener.location.href时不会跨域
完整Payload
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function open_win() {
window.open("https://px1624.sinaapp.com/test/xsstest14/");
location="https://px1624.sinaapp.com/test/xsstest14/?returnurl=javascript:alert(14)";
}
</script>
</head>
<body>
<input type="button" value="点击任意位置" onclick="open_win()" style="width:2000px;height:1000px;background-color:white;border:none">
</body>
</html>
注意事项
- 必须使用HTTPS:HTTP协议会导致跨域问题
- 用户交互要求:
window.open必须由用户触发,否则会被浏览器拦截 - UI设计:将按钮设计为全屏大小,方便用户点击
题目13:CSP绕过与长度限制
题目分析
题目URL:http://px1624.sinaapp.com/test/xsstest13/
核心代码:
if(!sss){
location="px.php";
}
px.php页面特点:
- 允许写入字符并解析标签
- 输入长度限制为7个字符
- 服务器端部署了CSP规则
关键知识点
-
CSP(Content Security Policy):
- 内容安全策略,用于减轻XSS等攻击
- 通过HTTP头或meta元素定义
- 参考文档:
- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
- http://www.ruanyifeng.com/blog/2016/09/csp.html
-
长度限制绕过:
- 7个字符的限制下传统XSS payload无法使用
- 需要寻找极短的可行payload
解题思路
-
参数识别:
- 必须传入
sss参数,否则会跳转到px.php - 直接访问px.php会受到长度限制
- 必须传入
-
CSP限制:
- 虽然可以注入代码,但CSP阻止了执行
- 需要找到CSP策略中的弱点或允许的来源
-
短payload构造:
- 在7字符限制下寻找可行的XSS向量
- 可能需要利用现有DOM或特殊标签
其他题目
题目15和16
- 基于香草设计的题目思路修改
- 具体解法未在文中详细说明
- 需要读者自行尝试和探索
总结与技巧
-
opener属性利用:
- 理解父子窗口关系
- 掌握跨域限制和时间差攻击
-
CSP绕过:
- 分析CSP策略寻找弱点
- 利用允许的脚本源或内联策略
-
极短payload构造:
- 熟悉HTML/JS极简语法
- 利用自执行或事件自动触发机制
-
用户交互要求:
- 浏览器安全策略对自动弹窗的限制
- 设计合理的用户交互界面
实战建议
-
逐步测试题目提供的URL:
- http://px1624.sinaapp.com/test/xsstest13/
- http://px1624.sinaapp.com/test/xsstest14/
- http://px1624.sinaapp.com/test/xsstest15/
- http://px1624.sinaapp.com/test/xsstest16/
-
修改URL中的数字测试1-16所有题目
-
提交答案到px1624@qq.com,附上ID可能有收录机会
扩展学习
-
opener安全:
- 使用
rel="noopener"防止opener滥用 - 现代浏览器对新窗口的隔离策略
- 使用
-
CSP策略设计:
- 严格的源限制
- 非内联策略
- 报告模式监控
-
极短XSS向量:
<svg/onload=alert(1)>(18字符)- 7字符限制下的创造性解法
通过深入理解这些高级XSS技巧,安全研究人员可以更好地发现和防御现代Web应用中的复杂漏洞。