faqiadegege 发表于 2024-4-12 19:11

漏洞复现CVE-2024-0531、CVE-2024-0532

新近漏洞复现CVE-2024-0531、CVE-2024-0532
开始之前固件分析本篇中的四个漏洞均为某路由设备漏洞,根据披露信息,获得固件下载链接:https://www.tendacn.com/download/detail-3187.html对文件进行解压,拿到bin文件使用binwalk对固件解压binwalk –eM *.bin文件系统中,bin目录下httpd为目标文件使用readelf查看文件属性确定为:小端 mips 32位固件用户态模拟模拟阶段1切换到文件系统根目录切换超级权限: sudo su启动模拟:cp /usr/bin/qemu-mipsel-static ./bin/httpd结果如下图显示无法使用80端口
直接上图,来粗暴的,源码里面端口是全局的,patch!!!







如上,完成修改,端口设置为8080 模拟阶段2重新启动模拟,命令同前显示如下,发现IP未设置

静态分析,根据字符串‘httpd listen ip’定位到



查看结构赋值



对应,跟踪该函数调用位置



查找g_lan_ip的交叉引用,确认被赋值的位置



上图中ifaddrs_get_lan_ifname获取网络接口名lan_ifnameifaddrs_get_ifip根据网络接口名lan获取其IP到br0IP,并传递给g_lan_ip以上两个函数,根据均来自lib/libcommon.so定位,确定lan_ifname的最终值


其中调用get_eth_name(0)参数为定值0
调用sub_2FFE0
使用指针i指向dword_600F0



当参数为 0则返回 dword_600F0位置向后偏移4字节,即‘br0’即,只需要添加名为br0的网络接口即可,完成网络设置命令如下

模拟阶段3

启动成功在browse中访问,进入首页
漏洞复现漏洞细节分析CVE-2024-0531某某设备安全漏洞,该漏洞源于 /goform/setBlackRule 文件的 deviceList 参数存在基于堆栈的缓冲区溢出 静态分析根据漏洞描述,依据url端点,定位到函数

函数实现

deviceList参数值由parse_macfilter_rule处理该数据需要满足格式为:device ListValue –>xxxxxxxxxxxx\rxxxxxx

将devicelist的值直接copy到了dev_info结构中,没有做校验
在上面的formaddMacfilterrule函数中,堆栈被开辟的大小与dev_info类型大小如下





此时,只要填充的数据超过该函数堆栈的范围,即可段错误构造poc

复现成功



CVE-2024-0532某某设备安全漏洞,该漏洞源于 /goform/WifiExtraSet 文件的 wpapsk_crypto2_4g 参数存在基于堆栈的缓冲区溢出静态分析根据漏洞描述,依据url端点,定位到函数

fromSetWirelessRepeat函数实现



参数wpapsk_crypto2_4g的值没有过滤直接传递到set_repeat24函数中倒数第二个参数set_repeat24实现

直接赋值到了堆栈中构造poc

复现成功



请各位大佬发现问题并指正

faqiadegege 发表于 2024-4-16 20:08

Satifer 发表于 2024-4-14 13:12
文章很好,但是我前两张图看不见

补上了,注意查收

return2002 发表于 2024-4-15 13:59

学到了,感谢分享

amwquhwqas128 发表于 2024-4-12 21:24

非常支持这种漏洞详细内容的文章

51styuansu 发表于 2024-4-12 22:05

学习一下!顶!

T2ao 发表于 2024-4-12 22:24

支持,步骤很详细

D1ng 发表于 2024-4-12 22:42

佬!求带

evill 发表于 2024-4-12 23:22

学习了,web与二进制的结合更容易碰出火花

xiaoye123 发表于 2024-4-13 00:00

漏洞复现很仔细 学习了师傅

52PJ070 发表于 2024-4-13 04:17

很棒的实践分享,学习

Vincent2018 发表于 2024-4-13 08:18

学习一下!顶!

wuaitomyty 发表于 2024-4-13 09:40


漏洞复现很仔细
页: [1] 2 3 4
查看完整版本: 漏洞复现CVE-2024-0531、CVE-2024-0532