FortiGate7.4.0 CVE-2024-23113漏洞复现与分析笔记
给予调试启发以及固件文件提取启发的参考地址。
给予调试启发以及固件文件提取启发的参考地址
格式化字符串漏洞学习地址:
【闭眼入坑】PWN题格式化字符串漏洞介绍_哔哩哔哩_bilibili
漏洞复现参考:
调试模式
kali机器 192.168.206.162
Fortigate7.4.0 192.168.206.10
通过这些命令启动FGFM服务的调试

之后启动可视化管理页面 尝试连接不存在的FortigateManager 192.168.206.11

接下来尝试把POC打过去 再看下返回信息

结合POC逻辑 发送过去的测试POC内容如下:
format_string_payload = b"reply 200\r\nrequest=auth\r\nauthip=%n\r\n\r\n\x00"
切入点set_fgfm_sni
通过切入点 set_fgfm_sni 查找字符串

找到相应内容 后续即可结合这部分开始分析源代码

我们可以在IDA中通过搜索string,搜索FGFM的部分,可以找到如下内容

这个函数向上回溯 也就找到的漏洞所在的位置(或者我们参考的文章中也指出了漏洞的位置)

我们可以对比修复以后的漏洞的代码

很明显 这个位置补充了一个%s 用于避免格式化字符串的漏洞
snprintf函数的功能和相应的用法如下


补充一些关于格式化字符串的漏洞笔记

举例子:
int var = 0;
printf("Hello, world!%n", &var);
printf("Written: %d\n", var);
首先会输出Hello,world! 然后将字符数量13(包含\n)作为数字(4B长度内)写到var里。之后第三行会继续输出Written:13
结果如下:
Hello, world!Written: 13
之后我们分析一下这个函数sub_B0D9A0的功能到底是什么
感觉函数sub_B24690的调用,类似于从其中查找一些相关的配置等信息。比如fmg_fqdn,mgmtip和mgmtport端口等信息

协议逆向
接下来主要从这个协议开始分析。
按照参考 我们本地生成相应的ssl证书等



之后做文章中的一些复现操作 都可以成功获得结果

后续就是相应的Payload即可 完全一致 复现成功

更多推荐


所有评论(0)