[张三的渗透日记]一次多变量突破防护的XSS
字数 531 2025-08-11 08:36:22

多变量拼接突破防护的XSS攻击技术分析

漏洞发现与初步分析

漏洞点定位

  • 发现目标系统中的"月份"变量虽然前端通过选择列表输入,但后端未严格验证,允许通过Burp Suite直接修改
  • 测试发现单引号可以闭合原有HTML属性,将用户输入直接嵌入到onclick事件中

初始测试结果

  • 直接构造XSS语句month=2023-04'><script>alert(1)</script>导致500错误
  • 并非关键字过滤,而是变量长度限制(20个字符)
  • 基本XSS构造如'>超出长度限制

多变量拼接技术

可控参数分析

  1. 三个可控参数:
    • month (长度限制20字符)
    • energyValue (长度限制20字符)
    • waterValue (长度限制20字符)
  2. 参数位置:位于<a>标签的onclick事件中
  3. 输出特性:可使用单引号和尖括号闭合HTML标签

拼接思路

  • 变量1:闭合前面的a标签并开始XSS语句
  • 变量2:完成XSS语句的构造
  • 利用多个参数共同完成一个有效载荷的构造

实际Payload构造

type=edit&energyUnit=1&energyValue='%20onerror=alert()>&waterUnit=3&waterValue=4&month='>

绕过防护措施

JavaScript弹窗限制

  • 发现系统禁用了alert()prompt()函数
  • 使用confirm()函数成功绕过:
type=edit&energyUnit=1&energyValue='%20onerror=confirm()>&waterUnit=3&waterValue=4&month='>
多变量拼接突破防护的XSS攻击技术分析 漏洞发现与初步分析 漏洞点定位 发现目标系统中的"月份"变量虽然前端通过选择列表输入,但后端未严格验证,允许通过Burp Suite直接修改 测试发现单引号可以闭合原有HTML属性,将用户输入直接嵌入到 onclick 事件中 初始测试结果 直接构造XSS语句 month=2023-04'><script>alert(1)</script> 导致500错误 并非关键字过滤,而是变量长度限制(20个字符) 基本XSS构造如 '> 超出长度限制 多变量拼接技术 可控参数分析 三个可控参数: month (长度限制20字符) energyValue (长度限制20字符) waterValue (长度限制20字符) 参数位置:位于 <a> 标签的 onclick 事件中 输出特性:可使用单引号和尖括号闭合HTML标签 拼接思路 变量1 :闭合前面的a标签并开始XSS语句 变量2 :完成XSS语句的构造 利用多个参数共同完成一个有效载荷的构造 实际Payload构造 绕过防护措施 JavaScript弹窗限制 发现系统禁用了 alert() 和 prompt() 函数 使用 confirm() 函数成功绕过: