从429到200:利用X-Overwriting头实现速率限制绕过与漏洞赏金

本文详细介绍了如何通过X-Forwarded-For等HTTP头覆盖技术绕过IP基础的速率限制防护,实现暴力破解攻击,并提供了有效的防护方案。文章包含完整的技术分析、Burp Suite实战配置和厂商修复建议。

从429到200:利用X-Overwriting头实现速率限制绕过与漏洞赏金

Akwaaba!朋友们。在本报告中,我将展示如何绕过某组织匆忙实施的速率限制机制。如果你对我的其他研究感兴趣,可以参考我之前关于《如何绕过Google验证码实现CSRF与XSS链式攻击》的文章,或者关于《Android Intent重定向攻击》的移动端渗透测试文章。

速率限制技术解析

速率限制是开发者用来控制用户/系统在特定时间范围内请求次数的技术。在API中,标准响应状态码为429(请求过多),但许多开发者会采用非标准实现。常见实现方式包括:

  • 基于IP地址的限制
  • 基于电子邮件的限制
  • 基于设备/会话的限制
  • 基于地理位置的限制
  • 端点专用限制等

例如微软会在多次错误登录后给予冷却期,而Snapchat则会直接临时锁定账户。

漏洞发现过程

在某HackerOne项目的测试中,我最初发现其应用存在速率限制缺失问题。在厂商修复后,我重新检测登录端点发现:

  • 5次错误登录触发429状态码
  • 响应体中包含用户公网IP参数
  • 确认采用IP基础的计数机制

利用X-Overwriting头绕过

为绕过IP限制,除了VPN切换外,更有效的方法是使用下列HTTP覆盖头:

  • X-HTTP-Method-Override:覆盖HTTP方法
  • X-Original-URL/X-Rewrite-URL:URL重写
  • X-Forwarded-For:声明原始客户端IP
  • X-Real-IP:替代IP传递方式

通过Burp Suite测试:

  1. 注入X-Forwarded-For: 127.0.0.1
  2. 观察到状态码从429变为401
  3. 响应体显示伪造IP与剩余尝试次数

自动化暴力破解配置

使用Burp Intruder进行自动化攻击:

  • 采用Sniper攻击模式
  • 对IP地址某个字节设置数字载荷(1-500)
  • 每个请求自动变更X-Forwarded-For值
  • 利用无效IP(如256+字节值)实现无限尝试

防护方案建议

针对IP基础速率限制的防护措施:

  1. 仅信任已知内部代理的X-Forwarded-For头
  2. 优先使用网络层REMOTE_ADDR值
  3. 在应用前置反向代理/WAF(如Cloudflare、AWS WAF)
  4. 实施多因素速率限制策略(IP+会话+行为)

特别说明:本文所有技术细节已获得相关厂商授权披露,仅供学习防御技术使用。

通过Twitter @tinopreter或LinkedIn Clement Osei-Somuah与我交流更多安全研究。

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