Fortinet FortiWeb身份验证绕过 – CVE-2025-64446
TL;DR: Bishop Fox研究人员在FortiWeb中发现了一个身份验证绕过漏洞,攻击者可以利用该漏洞添加自己的管理员账户、接管设备并清除证据。Fortinet通过更改配置(阻止访问易受攻击的组件)修复了此问题。组织可以使用Bishop Fox提供的新扫描器快速检查是否受影响,并应立即移除公共访问权限并进行更新。
背景
上周,Bishop Fox的研究人员发现了一个针对未公开Fortinet FortiWeb漏洞的概念验证(PoC)利用程序。该PoC最初于10月初由Defused Cyber发布(似乎源自蜜罐捕获),随后被Florian Roth转发,并声称该漏洞正被积极利用。次日,Fortinet通过官方公告确认了该漏洞的存在及被利用的情况,CISA也将其添加至已知已利用漏洞(KEV)目录。
该攻击载荷由一个HTTP POST请求构成,旨在绕过身份验证并在Web管理界面中创建一个具有管理权限的新用户,从而使攻击者能够登录并完全控制目标设备。
我们针对多个不同版本的FortiWeb测试了该PoC,确认该漏洞在旧版本中有效,但在最新的可用更新中无效。以下是我们测试的结果:
| 版本 | 结果 |
|---|---|
| 8.0.2 | 不受影响 |
| 8.0.1 | 易受攻击 |
| 8.0.0 | 易受攻击 |
| 7.6.6 | 不受影响 |
| 7.6.5 | 不受影响 |
| 7.6.4 | 易受攻击 |
| 7.4.11 | 不受影响 |
| 7.4.10 | 不受影响 |
| 7.4.9 | 易受攻击 |
| 7.2.12 | 不受影响 |
| 7.2.11 | 易受攻击 |
| 7.0.12 | 不受影响(未测试,但经Fortinet确认) |
| 7.0.11 | 易受攻击 |
| 6.4.2 | 易受攻击 |
我们怀疑此处列出版本更旧的版本也容易受到攻击,但目前只有7.0及以上版本受到Fortinet的积极支持。
漏洞分析
该漏洞利用程序可以作为单个cURL请求发送,包含三个部分:
- URL中的路径遍历允许请求访问内部的CGI处理器。
- 定制的CGIINFO授权头中的有效载荷允许请求绕过身份验证,并被当作具有内部授权进行处理。
- JSON POST正文包含创建新管理员账户的标准载荷。
两个服务器二进制文件负责处理恶意请求:
httpsd是Fortinet定制版的Apache Web服务器,处理所有传入的HTTP请求。fwbcgi是一个内部的CGI处理器,代表Web服务器处理某些请求。
首先,httpsd接收传入的请求,将URI路径规范化为/cgi-bin/fwbcgi,并将请求直接路由到fwbcgi。httpd.conf中的以下行负责此路由:
|
|
其次,fwbcgi验证原始URI路径是否引用了有效的REST API端点(本例中为/api/v2.0/cmdb/system/admin)。实际上,URI中看似路径遍历的部分实际上是授权绕过的一部分,因为它允许外部请求伪装成内部请求,以便fwbcgi处理它。
第三,fwbcgi解码CGIINFO头(用于内部授权)的base64值,并将生成的JSON对象解释为指示请求应以管理权限执行:
|
|
最后,fwbcgi使用root.system.admin权限上下文处理JSON POST正文,在Web管理界面中创建一个具有管理权限的新账户:
|
|
然后攻击者可以直接登录Web管理界面:
系统 > 管理员 > 管理员视图显示新的管理员账户:
恶意账户创建记录在日志与报告 > 日志访问 > 事件下的事件日志中:
然而,拥有完全管理控制权后,攻击者可以清除日志以擦除这些入侵痕迹。
补丁分析
Fortinet最初发布了未提及此漏洞的新版FortiWeb。Bishop Fox研究人员比较了受影响版本和已修复版本的固件,确定一个单独的更改是缓解此身份验证绕过漏洞的原因。
在未打补丁的版本中,httpd.conf允许访问cgi-bin目录而无需任何清理:
|
|
在已打补丁的版本中,默认拒绝访问cgi-bin目录,并且对fwbcgi的访问仅限于内部重定向:
|
|
我们的研究人员审查了对httpsd和fwbcgi的额外更改,但确定它们不影响此漏洞,因此httpd.conf的更改是唯一的缓解措施。值得注意的是,在8.0.2版本中,httpsd添加了一条新的日志消息(日志类型10000017),用于指示因特定次数的REST API登录尝试失败而导致IP地址锁定的情况。
影响评估
要测试特定FortiWeb实例是否易受攻击而不造成任何负面影响,请运行以下cURL命令:
|
|
200 OK响应表示目标易受攻击,而403 Forbidden表示目标不受影响。请注意,此命令仅利用初始的路径遍历/身份验证绕过,不会对目标系统进行任何更改。
您也可以下载我们的开源Python扫描器来测试是否易受攻击:https://github.com/BishopFox/fortiweb-auth-bypass-check。
如果您正在运行受影响版本的FortiWeb,并且Web管理界面公开暴露,攻击者可以完全破坏系统。为保护自己,我们建议立即采取以下措施:
- 将管理界面从公共访问中移除。
- 安装最新的可用FortiWeb更新。
我们的Cosmos客户首先收到了我们对此漏洞研究的通知,并在我们了解更多信息时持续收到更新。如果您有兴趣了解通过我们的Cosmos平台提供的托管服务,请填写我们的“开始使用”表格或访问:bishopfox.com/services/cosmos。