受限情况下的 XSS 利用技巧
字数 938 2025-08-26 22:11:28

受限情况下的XSS利用技巧

1. 电子邮件XSS

背景

电子邮件地址在表单中广泛使用,并在web应用程序的不同部分多次显示。当应用程序对电子邮件格式进行验证时,可能会存在XSS漏洞。

验证机制

  • 使用PHP的filter_varfilter_input函数的FILTER_VALIDATE_EMAIL标志
  • 所有不符合电子邮件格式的输入都会返回"INVALID"响应

绕过方法

根据RFC822标准,可以使用以下格式的完全有效电子邮件地址来绕过验证并实现XSS:

Payload示例:

"<svg/onload=alert(1)>"@x.y

2. URL XSS(无查询参数)

背景

URL格式的输入有时会以HTML元素的"href"属性结尾,仅进行URL格式验证。

验证机制

  • 使用PHP的filter_varfilter_input函数的FILTER_VALIDATE_URL标志
  • 要求"protocol://reference"格式

绕过方法

  1. 使用JavaScript伪协议代替HTTP协议
  2. 由于双斜杠(//)会将后续内容转换为注释,需要使用换行符(%0A)
  3. 换行符需要双重编码(%250A),因为浏览器会进行一次解码

Payload示例:

javascript://%250Aalert(1)

3. URL XSS(带查询参数)

背景

URL验证时需要附加查询参数的情况。

绕过方法

  1. 基本方法:在payload后添加查询参数
    javascript://%250Aalert(1)//?1
    
  2. 使用三元运算符:
    javascript://%250A1?alert(1):0
    
  3. 当存在与提供的URL进行验证时,可以伪装成合法URL:
    javascript://https://domain.com/%250A1?alert(1):0
    

4. 固定长度Key的XSS

背景

具有固定长度字符的输入格式(如API密钥),由于严格的长度限制,容易被自动化工具和人工检查遗漏。

绕过方法

  1. 确保payload长度与要求的固定长度一致
  2. 在满足长度要求的前提下插入XSS代码

Payload示例(针对32字符长度的MD5哈希):

12345678901<svg onload=alert(1)>

总结

在受限情况下进行XSS利用时,关键点包括:

  1. 理解应用程序的验证机制和限制条件
  2. 寻找符合格式要求但能执行JS代码的payload构造方式
  3. 对于URL类XSS,巧妙使用JavaScript伪协议和编码技巧
  4. 对于固定长度输入,确保payload长度符合要求同时包含有效XSS代码

这些技巧展示了即使在严格输入限制下,通过精心构造的payload仍然可能实现XSS攻击。

受限情况下的XSS利用技巧 1. 电子邮件XSS 背景 电子邮件地址在表单中广泛使用,并在web应用程序的不同部分多次显示。当应用程序对电子邮件格式进行验证时,可能会存在XSS漏洞。 验证机制 使用PHP的 filter_var 或 filter_input 函数的 FILTER_VALIDATE_EMAIL 标志 所有不符合电子邮件格式的输入都会返回"INVALID"响应 绕过方法 根据RFC822标准,可以使用以下格式的完全有效电子邮件地址来绕过验证并实现XSS: Payload示例 : 2. URL XSS(无查询参数) 背景 URL格式的输入有时会以HTML元素的"href"属性结尾,仅进行URL格式验证。 验证机制 使用PHP的 filter_var 或 filter_input 函数的 FILTER_VALIDATE_URL 标志 要求"protocol://reference"格式 绕过方法 使用JavaScript伪协议代替HTTP协议 由于双斜杠(//)会将后续内容转换为注释,需要使用换行符(%0A) 换行符需要双重编码(%250A),因为浏览器会进行一次解码 Payload示例 : 3. URL XSS(带查询参数) 背景 URL验证时需要附加查询参数的情况。 绕过方法 基本方法:在payload后添加查询参数 使用三元运算符: 当存在与提供的URL进行验证时,可以伪装成合法URL: 4. 固定长度Key的XSS 背景 具有固定长度字符的输入格式(如API密钥),由于严格的长度限制,容易被自动化工具和人工检查遗漏。 绕过方法 确保payload长度与要求的固定长度一致 在满足长度要求的前提下插入XSS代码 Payload示例 (针对32字符长度的MD5哈希): 总结 在受限情况下进行XSS利用时,关键点包括: 理解应用程序的验证机制和限制条件 寻找符合格式要求但能执行JS代码的payload构造方式 对于URL类XSS,巧妙使用JavaScript伪协议和编码技巧 对于固定长度输入,确保payload长度符合要求同时包含有效XSS代码 这些技巧展示了即使在严格输入限制下,通过精心构造的payload仍然可能实现XSS攻击。