挖洞经验 | 与Yahoo和Paypal相关的两个独特漏洞($5k+$3.2k)
字数 1431 2025-08-18 11:38:28

雅虎IDOR与PayPal DoS漏洞分析与防御教学

一、雅虎IDOR漏洞分析 ($5,000)

漏洞概述

漏洞类型:不安全的直接对象引用(Insecure Direct Object Reference, IDOR)
影响系统:Yahoo Notepad (雅虎网络笔记)
漏洞奖励:$5,000

漏洞发现过程

  1. 初始观察

    • 测试目标:https://notepad.yahoo.com
    • 使用Burp Suite拦截请求时发现加密用户ID:fziy4wzxr41k4qwsgumu2v2qymynzat6kclqpwmc
    • 请求示例:
      GET /ws/v3/users/fziy4wzxr41k4qwsgumu2v2qymynzat6kclqpwmc/items?format=json&count=200&type=Journal&wssid=55mJmcMk3tg&rand=1478541308397&prog=aeon
      
  2. 漏洞验证

    • 将加密ID替换为明文用户名后,服务端返回相同响应
    • 替换为其他测试账户用户名(test_account_2222)后,成功获取该账户笔记内容
  3. 根本原因

    • 服务端仅依赖客户端提供的用户标识进行数据访问
    • 缺乏对请求者身份的验证机制
    • 错误假设:加密用户ID足以保证安全性

漏洞影响

  • 攻击者可获取任意用户的雅虎网络笔记内容
  • 无需认证即可访问敏感数据

修复建议

  1. 实施严格的访问控制检查
  2. 结合会话令牌验证请求合法性
  3. 即使使用加密ID,仍需后端验证请求权限
  4. 遵循最小权限原则

二、PayPal DoS漏洞分析 ($3,200)

漏洞概述

漏洞类型:客户端存储导致的拒绝服务(Denial of Service)
影响系统:Braintree Payments (PayPal子公司)
漏洞奖励:$3,200

漏洞发现过程

  1. 代码分析

    • 发现关键JavaScript代码段:
      var targetLocale = window.location.href.match(/locale=(.{5})/) ? 
        window.location.href.match(/locale=(.{5})/)[1] : null;
      
    • 功能逻辑:
      • 检查URL中的locale参数(5位字符,如en-us)
      • 若与currentLocale不匹配,则存储到localStorage
      • 后续访问会强制重定向到/locale页面
  2. 漏洞验证

    • 构造恶意链接:
      https://www.braintreepayments.com/legal/policy-updates?locale=fword
      
    • 影响:
      • 用户访问后会被持续重定向到/fword
      • 无法正常使用网站功能
      • 需清除浏览器JS缓存才能恢复

漏洞影响

  • 攻击者可大规模传播恶意链接
  • 导致大量用户无法正常访问服务
  • 需要用户手动清除缓存才能恢复

修复建议

  1. 对locale参数进行严格白名单验证
  2. 限制localStorage的使用场景
  3. 实现服务端locale验证机制
  4. 提供简单的恢复机制(如清除缓存按钮)

三、通用安全开发建议

针对IDOR漏洞

  1. 实施基于角色的访问控制(RBAC)
  2. 使用间接引用映射(如使用数字ID而非直接对象名)
  3. 每个请求都应验证用户权限
  4. 记录和监控异常访问模式

针对客户端存储风险

  1. 避免仅依赖客户端存储进行关键业务决策
  2. 对用户可控输入进行严格过滤
  3. 为可能被滥用的功能设置速率限制
  4. 提供安全的默认值和恢复机制

四、漏洞挖掘方法论

  1. 参数篡改测试

    • 观察请求中的各种标识符和参数
    • 尝试替换为其他有效值测试访问控制
  2. 客户端代码审计

    • 分析JavaScript中的业务逻辑
    • 寻找依赖客户端存储或用户输入的关键功能
  3. 异常输入测试

    • 尝试边界值和非法输入
    • 观察系统如何处理异常情况
  4. 数据流追踪

    • 从用户输入点到最终使用点全程跟踪
    • 验证每个环节的安全检查

五、总结

这两个漏洞展示了不同类型的安全问题:

  • 雅虎案例展示了服务器端访问控制缺失的风险
  • PayPal案例展示了过度依赖客户端逻辑的危害

共同启示:

  1. 不能仅依赖单一安全措施(如加密或客户端检查)
  2. 必须实施纵深防御策略
  3. 应对所有用户输入保持怀疑态度
  4. 安全设计应从用户角度考虑可能的滥用场景
雅虎IDOR与PayPal DoS漏洞分析与防御教学 一、雅虎IDOR漏洞分析 ($5,000) 漏洞概述 漏洞类型 :不安全的直接对象引用(Insecure Direct Object Reference, IDOR) 影响系统 :Yahoo Notepad (雅虎网络笔记) 漏洞奖励 :$5,000 漏洞发现过程 初始观察 : 测试目标:https://notepad.yahoo.com 使用Burp Suite拦截请求时发现加密用户ID: fziy4wzxr41k4qwsgumu2v2qymynzat6kclqpwmc 请求示例: 漏洞验证 : 将加密ID替换为明文用户名后,服务端返回相同响应 替换为其他测试账户用户名(test_ account_ 2222)后,成功获取该账户笔记内容 根本原因 : 服务端仅依赖客户端提供的用户标识进行数据访问 缺乏对请求者身份的验证机制 错误假设:加密用户ID足以保证安全性 漏洞影响 攻击者可获取任意用户的雅虎网络笔记内容 无需认证即可访问敏感数据 修复建议 实施严格的访问控制检查 结合会话令牌验证请求合法性 即使使用加密ID,仍需后端验证请求权限 遵循最小权限原则 二、PayPal DoS漏洞分析 ($3,200) 漏洞概述 漏洞类型 :客户端存储导致的拒绝服务(Denial of Service) 影响系统 :Braintree Payments (PayPal子公司) 漏洞奖励 :$3,200 漏洞发现过程 代码分析 : 发现关键JavaScript代码段: 功能逻辑: 检查URL中的locale参数(5位字符,如en-us) 若与currentLocale不匹配,则存储到localStorage 后续访问会强制重定向到 /locale 页面 漏洞验证 : 构造恶意链接: 影响: 用户访问后会被持续重定向到 /fword 无法正常使用网站功能 需清除浏览器JS缓存才能恢复 漏洞影响 攻击者可大规模传播恶意链接 导致大量用户无法正常访问服务 需要用户手动清除缓存才能恢复 修复建议 对locale参数进行严格白名单验证 限制localStorage的使用场景 实现服务端locale验证机制 提供简单的恢复机制(如清除缓存按钮) 三、通用安全开发建议 针对IDOR漏洞 实施基于角色的访问控制(RBAC) 使用间接引用映射(如使用数字ID而非直接对象名) 每个请求都应验证用户权限 记录和监控异常访问模式 针对客户端存储风险 避免仅依赖客户端存储进行关键业务决策 对用户可控输入进行严格过滤 为可能被滥用的功能设置速率限制 提供安全的默认值和恢复机制 四、漏洞挖掘方法论 参数篡改测试 : 观察请求中的各种标识符和参数 尝试替换为其他有效值测试访问控制 客户端代码审计 : 分析JavaScript中的业务逻辑 寻找依赖客户端存储或用户输入的关键功能 异常输入测试 : 尝试边界值和非法输入 观察系统如何处理异常情况 数据流追踪 : 从用户输入点到最终使用点全程跟踪 验证每个环节的安全检查 五、总结 这两个漏洞展示了不同类型的安全问题: 雅虎案例展示了 服务器端访问控制缺失 的风险 PayPal案例展示了 过度依赖客户端逻辑 的危害 共同启示: 不能仅依赖单一安全措施(如加密或客户端检查) 必须实施纵深防御策略 应对所有用户输入保持怀疑态度 安全设计应从用户角度考虑可能的滥用场景