挖洞经验 | 价值$10000的Facebook SSRF漏洞
字数 1252 2025-08-15 21:33:04

Facebook SSRF漏洞挖掘与分析教程

漏洞概述

本教程详细分析了一个价值$10,000的Facebook SSRF(Server-Side Request Forgery,服务端请求伪造)漏洞的发现过程。通过子域名枚举、文件枚举和代码审计等技术手段,研究者成功构造了有效的服务端请求,实现了对Facebook内部系统的探测。

漏洞发现流程

1. 子域名枚举

技术要点

  • 使用子域名枚举工具对Facebook网站进行测试
  • 重点关注返回403(禁止访问)状态的子域名
  • 发现关键子域名:phishme.thefacebook.com

经验

  • 403响应可能隐藏着有价值的信息或漏洞入口
  • 同一研究者曾通过类似方法发现过Facebook的其他高危漏洞

2. JS脚本文件枚举

技术实现

  • 使用通用字典库进行JS文件枚举
  • 枚举路径格式:https://phishme.thefacebook.com/**.js
  • 发现隐藏JS文件:Home.js

关键点

  • 字典的选择直接影响枚举效果
  • 隐藏的JS文件可能包含敏感逻辑或API端点

3. 代码审计与分析

发现的关键函数

Util.sendPhishRequest('PhishGetItemData.ashx', {
    itemId: itemId,
    ewsUrl: ewsUrl,
    token: token
})

函数分析

  • 函数通过XHR方式发送请求
  • 参数结构:
    • itemId: 项目ID
    • ewsUrl: 外部服务URL
    • token: 认证令牌
  • 该函数可能用于获取钓鱼相关数据

漏洞利用

构造恶意请求

有效载荷

https://phishme.thefacebook.com/PhishGetItemData.ashx?itemId=123&ewsUrl=http://127.0.0.1:PORT/&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7Hg

参数说明

  • itemId: 设置为任意值(如123)
  • ewsUrl: 设置为目标内部服务地址(如127.0.0.1)
  • token: 使用有效的JWT令牌

漏洞利用效果

  • 服务端返回405(方法不被允许)响应
  • 响应中包含stack-traces栈跟踪信息
  • 通过变换端口和参数可探测内部服务配置

潜在危害

  1. 内部网络探测
  2. 服务指纹识别
  3. 敏感信息泄露
  4. 内部服务攻击跳板

漏洞修复时间线

日期 事件
2020.8.7 漏洞上报
2020.8.11 漏洞分类和补丁发布
2020.12.3 漏洞修复完成并发放奖励

技术总结与防御建议

漏洞成因

  1. 未对用户提供的URL进行严格验证
  2. 内部服务错误信息暴露过多细节
  3. 敏感端点未实施足够访问控制

防御措施

  1. 输入验证

    • 严格校验用户提供的URL参数
    • 限制请求只能访问允许的外部域名
  2. 错误处理

    • 避免在错误响应中返回敏感信息
    • 统一错误页面,不暴露堆栈跟踪
  3. 访问控制

    • 对内部API端点实施严格身份验证
    • 使用白名单限制可访问的资源
  4. 监控与日志

    • 记录异常的SSRF尝试
    • 设置针对内部地址请求的警报

学习要点

  1. 子域名枚举是发现漏洞的有效入口
  2. 隐藏的JS文件可能包含关键业务逻辑
  3. 403响应值得深入分析
  4. 代码审计需要关注所有外部请求函数
  5. SSRF漏洞的严重性常被低估,实际危害大

通过本案例,安全研究人员可以学习到从信息收集到漏洞利用的完整链条,以及企业级应用中SSRF漏洞的挖掘思路和防御方法。

Facebook SSRF漏洞挖掘与分析教程 漏洞概述 本教程详细分析了一个价值$10,000的Facebook SSRF(Server-Side Request Forgery,服务端请求伪造)漏洞的发现过程。通过子域名枚举、文件枚举和代码审计等技术手段,研究者成功构造了有效的服务端请求,实现了对Facebook内部系统的探测。 漏洞发现流程 1. 子域名枚举 技术要点 : 使用子域名枚举工具对Facebook网站进行测试 重点关注返回403(禁止访问)状态的子域名 发现关键子域名:phishme.thefacebook.com 经验 : 403响应可能隐藏着有价值的信息或漏洞入口 同一研究者曾通过类似方法发现过Facebook的其他高危漏洞 2. JS脚本文件枚举 技术实现 : 使用通用字典库进行JS文件枚举 枚举路径格式: https://phishme.thefacebook.com/**.js 发现隐藏JS文件: Home.js 关键点 : 字典的选择直接影响枚举效果 隐藏的JS文件可能包含敏感逻辑或API端点 3. 代码审计与分析 发现的关键函数 : 函数分析 : 函数通过XHR方式发送请求 参数结构: itemId : 项目ID ewsUrl : 外部服务URL token : 认证令牌 该函数可能用于获取钓鱼相关数据 漏洞利用 构造恶意请求 有效载荷 : 参数说明 : itemId : 设置为任意值(如123) ewsUrl : 设置为目标内部服务地址(如127.0.0.1) token : 使用有效的JWT令牌 漏洞利用效果 服务端返回405(方法不被允许)响应 响应中包含stack-traces栈跟踪信息 通过变换端口和参数可探测内部服务配置 潜在危害 : 内部网络探测 服务指纹识别 敏感信息泄露 内部服务攻击跳板 漏洞修复时间线 | 日期 | 事件 | |------|------| | 2020.8.7 | 漏洞上报 | | 2020.8.11 | 漏洞分类和补丁发布 | | 2020.12.3 | 漏洞修复完成并发放奖励 | 技术总结与防御建议 漏洞成因 未对用户提供的URL进行严格验证 内部服务错误信息暴露过多细节 敏感端点未实施足够访问控制 防御措施 输入验证 : 严格校验用户提供的URL参数 限制请求只能访问允许的外部域名 错误处理 : 避免在错误响应中返回敏感信息 统一错误页面,不暴露堆栈跟踪 访问控制 : 对内部API端点实施严格身份验证 使用白名单限制可访问的资源 监控与日志 : 记录异常的SSRF尝试 设置针对内部地址请求的警报 学习要点 子域名枚举是发现漏洞的有效入口 隐藏的JS文件可能包含关键业务逻辑 403响应值得深入分析 代码审计需要关注所有外部请求函数 SSRF漏洞的严重性常被低估,实际危害大 通过本案例,安全研究人员可以学习到从信息收集到漏洞利用的完整链条,以及企业级应用中SSRF漏洞的挖掘思路和防御方法。