0Day CVE-2023-26616:某路由器缓冲区溢出漏洞分析

0Day CVE-2023-26616:某路由器缓冲区溢出漏洞分析

时间:2023-08-16 作者:安帝科技-CSX安全实验室

Part1 漏洞状态

Part2 漏洞描述

Part3 漏洞验证

1. 验证环境
路由器模拟器:192.168.0.1
2. 验证过程
运行PoC,浏览器出现崩溃现象

Part4 漏洞分析

C语言存在许多危险函数,如strcpy、strcat等,随后通过IDA发现web程序使用了高危函数函数strncpy。

点击函数名,查看交叉引用,发现sub_469F78函数调用了strncpy函数。

sub_469F78函数297行调用了strncpy函数。查看287至297行代码,可以得知v45为xml中的URL8元素的值,v10为v45字符串的大小。

向上追溯v71,得知v71是一个大小为64的局部数组。与前面信息结合起来,可以发现297行代码将v45字符串写入到v71数组,且大小为v45字符串的大小,并未进行检查。如果可以控制v45字符串则将导致缓冲区溢出。

分析sub_469F78函数逻辑,得知当UrlEnable元素值为1时,则会获取URL1至URL8的值写入到数组中,最后的PoC将会选择URL8触发漏洞,因为根据IDA显示的栈布局,URL8对应的数组更靠近栈的底部,因此需要更少的数据即可覆盖栈数据。


点击函数名,按x查看引用,发现sub_469F78函数由sub_46B6E8函数调用。

sub_46B6E8函数检查了SetParentsControlInfo和UsersInfo元素,并且由00588E0C地址引用。

对表的首地址00588D80,按下x,可以得知sub_42383C函数引用该表。

追踪sub_42383C的引用,得到sub_423F90函数。

观察sub_423F90函数的第50行,发现/HNAP1路径的与处理程序sub_42383C进行关联。

sub_42383C函数中使用for循环依次比较off_588D80数值。

查看地址off_588D80,可以确定为功能名和对应函数的数组。

Part5 修复缓解建议

厂商暂未发布修复措施解决此安全问题,建议使用此设备的用户随时关注厂商主页或参考网址以获取解决办法:
https://www.dlink.com/en/security-bulletin
————————————————
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com