TOTOLINK_NR1800X绕过登录漏洞分析--lighttpd服务
固件提取:
https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html
环境搭建
首先收集信息发现程序是通过lighttpd启动的,架构是小端序的mips架构
因为程序的特殊性,本次复现会通过用户态和系统态两个状态进行复现
用户态
启动
sudo chroot . ./qemu-mipsel-static ./usr/sbin/lighttpd
这里报了错 要指定配置文件
这里说没有/var/run/lighttpd.pid文件 我们创造一个就好
可以看到程序确实是启动了 但是根本就没有回显,这就是用户态造成的问题了,接下来我们用系统态复现
系统态
用户态访问是白板,很显然是哪里出了问题,很大可能是配置文件没有加载全,这种情况就转化为系统态
QEMU启动虚拟机所需要的镜像
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_squeeze_mipsel_standard.qcow2
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta
配置本地
sudo brctl addbr virbr0
sudo ifconfig virbr0 192.168.2.1/24 up
sudo tunctl -t tap0
sudo ifconfig tap0 192.168.2.11/24 up
sudo brctl addif virbr0 tap0
启动之后配置如下图
sudo qemu-system-mipsel -M malta \
-kernel vmlinux-3.2.0-4-4kc-malta \
-hda debian_squeeze_mipsel_standard.qcow2 \
-append "root=/dev/sda1 console=tty0" -nographic \
-net nic -net tap,ifname=tap0,script=no,downscript=no
再配置宿主机
ifconfig eth0 192.168.2.12 up
将文件复制到虚拟环境中
scp -r squashfs-root/ root@192.168.2.12:/root/
遇到了一个报错
我们要指定ssh客户端使用的密钥类型
sudo scp -o HostKeyAlgorithms=+ssh-rsa -r squashfs-root/ root@172.26.71.12:/root/
chroot ./squashfs-root/ /bin/sh
在执行命令启动环境
成功启动环境
登录验证绕过漏洞分析
先通过抓包观察
POST /cgi-bin/cstecgi.cgi?action=login HTTP/1.1
Host: 192.168.2.12
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 29
Origin: http://192.168.2.12
Connection: close
Referer: http://192.168.2.12/login.html
Upgrade-Insecure-Requests: 1
Priority: u=0, i
username=admin&password=55555
响应包
HTTP/1.1 302 Found
Connection: close
Content-type: text/plain
Connection: Keep-Alive
Pragma: no-cache
Cache-Control: no-cache
Location: http://192.168.2.12/formLoginAuth.htm?authCode=0&userName=&goURL=login.html&action=login
Date: Mon, 29 Jul 2024 08:07:07 GMT
Server: lighttpd/1.4.20
Content-Length: 11
protal page
对第一个包进行分析
POST /cgi-bin/cstecgi.cgi?action=login HTTP/1.1 可以知道在cstecgi.cgi中,我们跟进分析,可以根据第一个抓包的内容跟踪程序执行流
而off_44C074对应的是 sub_42AEEC函数
从我们第二个包的分析中可以看出程序执行的是红框框的那部分 http://192.168.2.12/formLoginAuth.htm?authCode=0&userName=&goURL=login.html&action=login
可以跟踪authCode 在lighttpd程序中定位到Form_Login
goURL就是接下来要访问的html文件,authCode则是验证是否正确登录的一个值,
因此我们可以构造下面的url,来绕过登录,进入后台,并且可以获取到cookie的SESSION_ID。
0 条评论
可输入 255 字