D-Link DSL-3782代码注入漏洞CVE-2022-34527分析

电子说

1.2w人已加入

描述

 

作者:景琇

提取固件并分析

 

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

 

代码

查看/usr/etc/init.d/rcS

 

#Web serverif [ ! -d "/var/boaroot/html/" ] || [ ! -d "/var/boaroot/cgi-bin/" ]; then/userfs/bin/boa -c /boaroot -d &/bin/rm -rf /var/boarootelse/userfs/bin/boa -c /var/boaroot -d &fi

 

说明boa为web server。

定位漏洞点

查询资料,官网说漏洞点出在cfg_manager的byte_4C0160中,使用IDA寻找一下。

代码

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

代码

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

代码

addiu $s2,$v0,(byte_4c0160-0x4c0000)是MIPS的相加指令,即$s2=$v0+(byte_4c0160-0x4c0000),跟进查看。

代码

 

.text:00474BD8                 addiu   $s2, $v0, (byte_4C0160 - 0x4C0000).text:00474BDC                 move    $a0, $s2.text:00474BE0                 move    $a1, $zero.text:00474BE4                 jalr    $t9 ; memset.text:00474BE8                 li      $a2, 0x80.text:00474BEC                 li      $v0, 0x70  # 'p'.text:00474BF0                 beq     $s0, $v0, loc_474C58.text:00474BF4                 lw      $gp, 0x10($sp).text:00474BF8                 la      $t9, sprintf.text:00474BFC                 lui     $a1, 0x4A  # 'J'.text:00474C00                 move    $a0, $s2.text:00474C04                 li      $a1, aTracerouteNM10  # "traceroute -n -m 10 -w 2 %s > /tmp/var/"....text:00474C08                 jalr    $t9 ; sprintf.text:00474C0C                 move    $a2, $s1.text:00474C10                 lw      $gp, 0x10($sp).text:00474C14.text:00474C14 loc_474C14:                              # CODE XREF: .text:00474C70↓j.text:00474C14                 la      $t9, pthread_create.text:00474C18                 li      $a2, sub_474C78

 

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

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分