CVE-2024-47575 漏洞分析及三种利用方式

admin 2025年6月4日20:31:31评论42 views字数 2538阅读8分27秒阅读模式

一、前  言

二、FGFM

三、漏洞利用方式一

四、漏洞利用方式二

五、漏洞利用方式三

六、总  结

前  言

2024年10月23日,Fortinet官方发布了针对CVE-2024-47575的安全公告:

A missing authentication for critical function vulnerability [CWE-306] in FortiManager fgfmd daemon may allow a remote unauthenticated attacker to execute arbitrary code or commands via specially crafted requests.

表明该漏洞存在于fgfmd服务中,可能允许远程未经身份验证的攻击者通过特制的请求执行任意代码。本文主要分享之前对CVE-2024-47575的1day分析过程和其他利用方式的学习

FGFM

FortiManager的FGFM功能允许管理员对FortiGate设备进行集中管理和配置。管理员可以通过FortiManager来查看和配置托管设备的接口、HA、DNS等设置,并进行路由管理。此外,FGFM还支持通过修订历史记录进行故障排除,帮助管理员识别和解决配置相关的问题‌。

在FortiManager中处理FGFM请求的是fgfmsd进程,通过TCP端口541建立的SSL连接运行。

01

FGFM协议结构

在之前对FortiGate-FGFM协议的分析中,我们用一种比较粗略的方式生成了合法的FGFM请求头,满足请求头第三字节低位等于1,第四字节小于等于2,以及长度检查;然后导出合法的Fortigate证书建立连接。

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

但这次分析重新抓取fgfm请求可以得到原始请求格式。

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

分为几个部分:

  • magic_number == b'x36xe0x11'

  • msg_type*   eg b'x00'

  • len

  • command     eg ‘put script’

  • key-value      eg 'devid=0'

  • param_end == 'rn'

  • end == 'rnrn'

*请求头第四字节决定了不同的分支

CVE-2024-47575 漏洞分析及三种利用方式
漏洞利用方式一

以7.4.1版本为分析目标。

请求type 0,根据不同的command 返回的request_type调用函数表0x42EB77中对应的处理函数:

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

当客户端C请求get connect_tcp时:

CVE-2024-47575 漏洞分析及三种利用方式

服务器S响应:

CVE-2024-47575 漏洞分析及三种利用方式

客户端C请求localid = 服务器S返回remoteid

服务器S同时也会返回一个localid用于对应C-localidS-remoteid,标识信道。

负责处理get connect_tcp请求的是connect_tcp函数:

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

svc http监听该套接字,并在libfmgsvrd.so中可以找到定义和回调函数:

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

dmworker让我联想到之前的分析中,在libdmserver.sooff_FE84C0路由表注册了多个函数,最终在rcs/checkout对应函数dmworker_rcs_checkout中发现命令注入:

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

查看使用libdmserver.so的进程,可以锁定dmworker

CVE-2024-47575 漏洞分析及三种利用方式

启动dmworker调试可以捕获json请求格式:

CVE-2024-47575 漏洞分析及三种利用方式

该注入可通过认证后HTTP请求触发,但如何通过fgfm请求触发?

继续分析fgfmsd,如果请求type 2会进入fgfm_chan_handler函数,通过localid标识 发送请求数据:

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

那么请求格式为:

CVE-2024-47575 漏洞分析及三种利用方式

发送该请求测试,并调试svc httpd进程发现会对(un)compressed_data检查是否为合法的HTTP请求格式,合法才会转发,将(un)compressed_data设置为合法的POST /jsonrpc请求头+dmworker请求体即可触发漏洞。

漏洞利用方式二

第二种利用方法来自watchtowrLabs

在分析get请求时发现一条命令put_json_cmd,当参数file_exch_cmd=put_json_cmd时进入下面的处理逻辑,解析json对象并将其传递给svc_rpc_uclient

CVE-2024-47575 漏洞分析及三种利用方式

svc_rpc_uclientlibsvcclt.so中定义,通过对RPC调用终止位置进一步逆向分析,发现它通过Unix套接字进入了fdssrvd

在该文件中发现可以通过put_json_cmd接口访问的函数表,其中som/export对应的函数中存在命令注入:

CVE-2024-47575 漏洞分析及三种利用方式

要触发som/export需要请求get file_exchange命令分配文件传输句柄。

客户端请求:

CVE-2024-47575 漏洞分析及三种利用方式

服务器响应:

CVE-2024-47575 漏洞分析及三种利用方式

同上面的分析,不通过type 2而是通过channel命令指明localid同样可以达到sub_40BB6D发送请求。

watchtowrLabs在文末也分析了漏洞patch并发现了利用方式一的命令注入patch点但不知如何触发,相比该利用过程,第一种利用方法有点复杂走远了。

漏洞利用方式三

在学习attackerkb这篇文章对7.6.0版本的分析时,可以发现一些与7.4版本的不同之处。

同样请求get connect_tcp,对应函数sub_1B978

CVE-2024-47575 漏洞分析及三种利用方式
CVE-2024-47575 漏洞分析及三种利用方式

此时只是生成了一个 shell,可通过channel请求 -> 调用fgfm_sock_write将输入和输出传输到服务器创建的新 FGFM通道(和前面原理一样通过localid匹配)。

总  结

本文分享了三种针对CVE-2024-47575的利用方式,该漏洞成因是与未授权的设备建立不安全通信,结合(认证后)命令注入点实现远程代码执行。同时在漏洞刚披露时,我选择7.4大版本进行漏洞分析,随着网上漏洞分析文章的公开,对比7.4版本,7.6版本中的漏洞点非常明显利用也较简单,因此大家在以后做漏洞挖掘时可以多个大版本对比分析。

【版权说明】

【版权说明】

本作品著作权归p1Kk所有

未经作者同意,不得转载

CVE-2024-47575 漏洞分析及三种利用方式
p1Kk

天工实验室安全研究员

专注于iot漏洞挖掘与利用

往期回顾
01
通用Linux x64内核态shellcode编写技巧
02
基于路由转发导致的权限认证绕过漏洞分析
03
隐匿与追踪:Rootkit检测与绕过技术分析
04
二进制混淆对抗技术研究
CVE-2024-47575 漏洞分析及三种利用方式
每周三更新一篇技术文章  点击关注我们吧!

原文始发于微信公众号(奇安信天工实验室):CVE-2024-47575 漏洞分析及三种利用方式

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月4日20:31:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2024-47575 漏洞分析及三种利用方式https://cn-sec.com/archives/4131374.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息