一些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)";
}

关键知识点

  1. opener属性

    • opener是window对象的属性,返回打开当前窗口的那个窗口的引用
    • 如果当前窗口不是由其他窗口打开的,opener返回null
    • MDN文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/opener
  2. 跨域限制

    • 直接尝试opener.location.href会因跨域问题而失败
    • 流程:你的页面 → window.open("目标页面") → opener.location.href(跨域报错)

绕过思路

  1. 时间差攻击

    • 利用window.openlocation跳转的时间差
    • 新窗口的创建和内容渲染比location跳转慢
    • 当新窗口调用opener.location.href时,原窗口已跳转到目标域名
  2. 具体步骤

    • 你的页面 → 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>

注意事项

  1. 必须使用HTTPS:HTTP协议会导致跨域问题
  2. 用户交互要求window.open必须由用户触发,否则会被浏览器拦截
  3. UI设计:将按钮设计为全屏大小,方便用户点击

题目13:CSP绕过与长度限制

题目分析

题目URL:http://px1624.sinaapp.com/test/xsstest13/

核心代码:

if(!sss){
    location="px.php";
}

px.php页面特点:

  • 允许写入字符并解析标签
  • 输入长度限制为7个字符
  • 服务器端部署了CSP规则

关键知识点

  1. 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
  2. 长度限制绕过

    • 7个字符的限制下传统XSS payload无法使用
    • 需要寻找极短的可行payload

解题思路

  1. 参数识别

    • 必须传入sss参数,否则会跳转到px.php
    • 直接访问px.php会受到长度限制
  2. CSP限制

    • 虽然可以注入代码,但CSP阻止了执行
    • 需要找到CSP策略中的弱点或允许的来源
  3. 短payload构造

    • 在7字符限制下寻找可行的XSS向量
    • 可能需要利用现有DOM或特殊标签

其他题目

题目15和16

  • 基于香草设计的题目思路修改
  • 具体解法未在文中详细说明
  • 需要读者自行尝试和探索

总结与技巧

  1. opener属性利用

    • 理解父子窗口关系
    • 掌握跨域限制和时间差攻击
  2. CSP绕过

    • 分析CSP策略寻找弱点
    • 利用允许的脚本源或内联策略
  3. 极短payload构造

    • 熟悉HTML/JS极简语法
    • 利用自执行或事件自动触发机制
  4. 用户交互要求

    • 浏览器安全策略对自动弹窗的限制
    • 设计合理的用户交互界面

实战建议

  1. 逐步测试题目提供的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/
  2. 修改URL中的数字测试1-16所有题目

  3. 提交答案到px1624@qq.com,附上ID可能有收录机会

扩展学习

  1. opener安全

    • 使用rel="noopener"防止opener滥用
    • 现代浏览器对新窗口的隔离策略
  2. CSP策略设计

    • 严格的源限制
    • 非内联策略
    • 报告模式监控
  3. 极短XSS向量

    • <svg/onload=alert(1)> (18字符)
    • 7字符限制下的创造性解法

通过深入理解这些高级XSS技巧,安全研究人员可以更好地发现和防御现代Web应用中的复杂漏洞。

BAT XSS实例(七)技巧篇 - 深入解析与绕过技术 前言 本文详细解析了几个精心设计的XSS挑战题目,重点探讨了opener属性和CSP绕过等高级技巧。这些实例来自BAT等大型互联网公司的真实场景或精心设计的挑战,具有很高的学习价值。 题目14:opener属性利用 题目分析 题目URL:http://px1624.sinaapp.com/test/xsstest14/ 核心代码分析: 关键知识点 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 注意事项 必须使用HTTPS :HTTP协议会导致跨域问题 用户交互要求 : window.open 必须由用户触发,否则会被浏览器拦截 UI设计 :将按钮设计为全屏大小,方便用户点击 题目13:CSP绕过与长度限制 题目分析 题目URL:http://px1624.sinaapp.com/test/xsstest13/ 核心代码: 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应用中的复杂漏洞。