漏洞复现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
复现成功
请各位大佬发现问题并指正 Satifer 发表于 2024-4-14 13:12
文章很好,但是我前两张图看不见
补上了,注意查收 学到了,感谢分享 非常支持这种漏洞详细内容的文章 学习一下!顶! 支持,步骤很详细 佬!求带 学习了,web与二进制的结合更容易碰出火花 漏洞复现很仔细 学习了师傅 很棒的实践分享,学习 学习一下!顶!
漏洞复现很仔细