挖洞经验 | 通过下载功能实现Facebook安卓应用任意代码执行
字数 1005 2025-08-15 21:32:10

Facebook安卓应用任意代码执行漏洞分析

漏洞概述

本漏洞存在于Facebook安卓应用的群组文件下载功能中,攻击者可以利用路径遍历漏洞覆盖应用的关键库文件,最终实现任意代码执行(ACE)。该漏洞影响通过"文件标签"(Files Tab)下载文件的功能模块。

漏洞发现过程

文件下载机制分析

Facebook安卓应用存在两种文件下载机制:

  1. 安全机制:直接从群组帖子中下载文件时,使用安卓内置的DownloadManager服务,该机制安全性较高
  2. 不安全机制:从群组的"文件标签"(Files Tab)中下载文件时,应用会直接获取文件并无过滤地保存到下载目录

路径遍历漏洞

关键漏洞点在于第二种下载方式未对文件名进行过滤处理,导致路径遍历漏洞:

  • 下载路径固定为:/sdcard/Downloads/FILE_NAME
  • FILE_NAME未经过滤,可包含路径遍历字符(如../)

漏洞利用技术

初始尝试

  1. 通过Burp代理拦截文件上传请求
  2. 修改文件名为sdcard/PoC尝试直接写入系统目录
  3. 失败:Facebook服务端安全措施删除了此类文件

绕过安全措施

  1. 通过Facebook安卓应用的"添加文件"功能上传
  2. 使用Burp拦截请求,修改文件名为.sdcard/PoC
  3. 成功:文件被上传到/sdcard目录

代码执行实现

  1. 创建恶意原生库(NDK开发)
  2. JNI_OnLoad函数中植入恶意代码:
#include <jni.h>
#include <string>
#include <stdlib.h>

JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
    system("id > /data/data/com.facebook.katana/PoC");
    return JNI_VERSION_1_6;
}
  1. 通过路径遍历覆盖关键库文件:
/.data/data/com.facebook.katana/lib-xzs/libbreakpad.so

漏洞修复

Facebook通过添加文件名过滤修复了此漏洞,修复代码中增加了对文件名的安全检查。

漏洞影响

  • 影响范围:使用"文件标签"下载功能的Facebook安卓应用用户
  • 危害:可实现任意代码执行,完全控制应用行为
  • 利用条件:需要诱导用户下载恶意文件

防御建议

  1. 对所有用户提供的文件名进行严格过滤
  2. 避免将文件保存到敏感目录
  3. 使用安全的文件下载机制(如DownloadManager)
  4. 对关键库文件进行完整性校验

技术要点总结

  1. 路径遍历:未过滤文件名导致可写入任意目录
  2. 库文件劫持:通过覆盖关键库实现代码执行
  3. 安全机制绕过:通过特定文件名格式绕过服务端过滤
  4. NDK利用:使用原生库实现更底层的代码执行

参考实现

安全开发人员应特别注意:

  • 文件下载功能的实现方式
  • 用户提供数据的严格过滤
  • 关键文件的存储位置和权限设置
  • 原生代码的安全风险
Facebook安卓应用任意代码执行漏洞分析 漏洞概述 本漏洞存在于Facebook安卓应用的群组文件下载功能中,攻击者可以利用路径遍历漏洞覆盖应用的关键库文件,最终实现任意代码执行(ACE)。该漏洞影响通过"文件标签"(Files Tab)下载文件的功能模块。 漏洞发现过程 文件下载机制分析 Facebook安卓应用存在两种文件下载机制: 安全机制 :直接从群组帖子中下载文件时,使用安卓内置的 DownloadManager 服务,该机制安全性较高 不安全机制 :从群组的"文件标签"(Files Tab)中下载文件时,应用会直接获取文件并无过滤地保存到下载目录 路径遍历漏洞 关键漏洞点在于第二种下载方式未对文件名进行过滤处理,导致路径遍历漏洞: 下载路径固定为: /sdcard/Downloads/FILE_NAME FILE_NAME 未经过滤,可包含路径遍历字符(如 ../ ) 漏洞利用技术 初始尝试 通过Burp代理拦截文件上传请求 修改文件名为 sdcard/PoC 尝试直接写入系统目录 失败 :Facebook服务端安全措施删除了此类文件 绕过安全措施 通过Facebook安卓应用的"添加文件"功能上传 使用Burp拦截请求,修改文件名为 .sdcard/PoC 成功 :文件被上传到 /sdcard 目录 代码执行实现 创建恶意原生库(NDK开发) 在 JNI_OnLoad 函数中植入恶意代码: 通过路径遍历覆盖关键库文件: 漏洞修复 Facebook通过添加文件名过滤修复了此漏洞,修复代码中增加了对文件名的安全检查。 漏洞影响 影响范围 :使用"文件标签"下载功能的Facebook安卓应用用户 危害 :可实现任意代码执行,完全控制应用行为 利用条件 :需要诱导用户下载恶意文件 防御建议 对所有用户提供的文件名进行严格过滤 避免将文件保存到敏感目录 使用安全的文件下载机制(如 DownloadManager ) 对关键库文件进行完整性校验 技术要点总结 路径遍历 :未过滤文件名导致可写入任意目录 库文件劫持 :通过覆盖关键库实现代码执行 安全机制绕过 :通过特定文件名格式绕过服务端过滤 NDK利用 :使用原生库实现更底层的代码执行 参考实现 安全开发人员应特别注意: 文件下载功能的实现方式 用户提供数据的严格过滤 关键文件的存储位置和权限设置 原生代码的安全风险