XSS过滤绕过与IDOR漏洞利用实战

嗨,我是JM Sanchez,一名学生兼漏洞赏金猎人。经过数月的重复报告后,我终于发现了一个有效的高危漏洞。

我测试的网站提供在线支付集成系统,用户可以管理客户并开具发票。之前我报告过多个XSS、CSRF等漏洞,但都是重复报告。

在测试网站功能时,我发现了如下URL:

/MerchantUser/create_customer/CUS-123456-A1B2C3

测试后发现存在IDOR漏洞。即使未经授权,我仍能通过另一个账户查看并编辑客户详细信息。

12位字母数字组合虽然理论上可暴力破解,但实际不可行。根据测算,破解12位密码需要约200年时间(https://www.betterbuys.com/estimating-password-cracking-times/)。

在暂时保留这个发现后,我尝试将其与其他漏洞结合以提高危害等级。首先尝试通过信息泄露枚举CustomerID但未果,于是转向测试XSS漏洞。

漏洞利用

发现该端点实际上存在XSS漏洞!虽然过滤器会自动移除HTML标签(可能使用PHP的strip_tags函数),但通过以下方式绕过:

  1. 客户信息修改后存储在<input>的value属性中
  2. 使用"> escaped?成功逃逸属性,形成:
<input name="..." class="..." value="">escaped? ">
  1. 尝试添加JavaScript事件处理器但被过滤
  2. 最终构造有效载荷:
" onmo<x>useover="alert(document['cookie'])">

过滤器无法识别被标签分隔的事件处理器,实际保存为:

" onmouseover="alert(document['cookie'])">
  1. 进一步构造无需交互的载荷:
" onf<x>ocus="alert(document['cookie'])" autofocus">

组合攻击
在同一个存在IDOR漏洞的端点上实现了存储型XSS。由于无法猜测其他用户的CustomerID,通过以下步骤实施攻击:

  1. 创建包含XSS载荷的客户信息
  2. 将链接发送给目标用户
  3. 目标打开链接时执行任意JavaScript
  4. 可进一步升级为账户接管和窃取隐私信息

时间线

  • 报告日期:2021年12月1日
  • 确认日期:2022年1月11日
  • 赏金金额:800美元
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    公众号二维码
posted @ 2025-07-24 19:11  qife  阅读(24)  评论(0)    收藏  举报