关于根据大佬的 (D-Link DSL-3782 的 CVE-2022-34527 漏洞分析)

关于根据大佬的 (D-Link DSL-3782 的 CVE-2022-34527 漏洞分析) 

第一步、提取固件并分析

使用binwalk提取DSL-3782路由器的固件文件,

  binwalk -Me DSL-3782_A1_EU_1.01_07282016.bin

 

然后就可以在系统文件里面随意分析了

 随后查看 /usr/etc/init.d/rcS 配置文件 

 CVE-2022-34527存在于cfg_manager

 

用ida打开cfg_manager

 

 

搜索函数sub_474c78

 

 

使用F5反编译,但是不知道为什么这个版本问题,反编译失败,下面就用别的师傅的图。

进入sub_474c78,v0 = system(byte_4C0160); 中使用system进行命令执行。

但是无法判断byte_4C0160是否为用户可控,寻找byte_4C0160的赋值点,查看byte_4C0160的调用。

根据这段汇编,可以看到byte_4c0160传值给了$s2,然后给了$a0,然后调用了sprintf,然后通过pthread_create调用了我们发现调用system函数的sub_474c78。

 

 

 然后查看伪代码,在.text:00474AC8代码处按P修复。

 

按F5反汇编。

 

 

 

 

 红框标出的地方就是给byte_4c0160赋值的地方,创建的start_routine函数则是最开始定位到的sub_474c78函数。

继续分析给byte_4c0160赋值的代码
该值由v9控制,往上看代码

v9由传递的参数a1,a2控制。那么,如果sub_474AC8的a1,a2可控,就可以进行命令执行了。根据代码的经验,sub_474AC8是一个处理传入start_routine即sub_474c78函数的参数的前置函数,这一段的代码的主要目的是为了执行sub_474c78函数的功能。

代码中显然是在使用某一个api接口,全局搜索Diagnostics_Entry。

 

 

 

 那么该参数是来自web前端,参数由Diagnostics_Entry页面产生故可以利用。

logo
 
 
posted @ 2023-03-27 16:45  酹酒  阅读(219)  评论(0)    收藏  举报