漏洞描述
漏洞复现设备:BL-AC3600漏洞原理:路由器中存在远程代码执行简述:该漏洞存在于BL-AC3600及更高版本,文件 /cgi-bin/lighttpd.cgi 中的 easy_uci_set_option_string 函数。对 routepwd 参数的操作会导致命令注入。攻击者可以利用该漏洞远程发起攻击。
固件模拟
mips32小端序,还是MipsR3000,尝试firmae之类的自动化工具,但无法直接模拟,因此还是采用qemu模拟。
首先需要去模拟一个固件所依赖的环境
make list-defconfigs
默认给出的配置文件可以通过这个指令查询
这里选用qemu_mips32r2el_malta_defconfig生成配置文件
make qemu_mips32r2el_malta_defconfig
这一步会让我们的menuconfig自动根据想搭建的环境进行配置
但只是基础配置,想开启openssh之类的还得自己去里面改
make menuconfig
第一个Target options就是设置镜像,像模拟的环境,大小端序之类的,都是在里面
第六个Target packages就是配置目标包
进入这个networking开启我们之后需要的
bridge-utils
openssh-server
如果没有就是缺少对应的环境,需要自己下
sudo apt install bridge-utilssudo apt install openssh-server
make编译好后启动文件应该会放在/buildroot-2024.08.2/output/images/下,不过默认的start-qemu.sh只有基本的启动项,为了方便我们之后传固件和做调试,可以修改sh文件
#!/bin/shBINARIES_DIR="${0%/*}/"# shellcheck disable=SC2164cd "${BINARIES_DIR}"mode_serial=falsemode_sys_qemu=falsetap_interface="tap0" # 默认的TAP接口名称tap_ip_host="192.168.100.1" # 宿主机的IP地址tap_ip_guest="192.168.100.2" # 虚拟机的IP地址while [ "$1" ]; do case "$1" in --serial-only|serial-only) mode_serial=true; shift;; --use-system-qemu) mode_sys_qemu=true; shift;; --tap-interface) tap_interface="$2"; shift 2;; --use-tap) use_tap=true; shift;; --) shift; break;; *) echo "unknown option: $1" >&2; exit 1;; esacdoneif ${mode_serial}; then EXTRA_ARGS='-nographic'else EXTRA_ARGS='-serial stdio'fiif ! ${mode_sys_qemu}; then export PATH="/home/blonet/Desktop/buildroot-2024.08.2/output/host/bin:${PATH}"fiif ${use_tap}; then # 创建并配置TAP接口 sudo ip link delete "${tap_interface}" 2>/dev/null # 如果 TAP 接口已存在,先删除 sudo ip tuntap add dev "${tap_interface}" mode tap # 创建 TAP 接口 sudo ip addr add "${tap_ip_host}/24" dev "${tap_interface}" # 为 TAP 接口分配宿主机IP地址 sudo ip link set "${tap_interface}" up # 启用 TAP 接口 # 配置 QEMU 使用 TAP 网络 NET_CONFIG="-netdev tap,id=net0,ifname=${tap_interface},script=no,downscript=no -device pcnet,netdev=net0"else # 使用用户模式网络 NET_CONFIG="-net nic,model=pcnet -net user"fiexec qemu-system-mipsel -M malta -kernel vmlinux -drive file=rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0 ip=${tap_ip_guest}::${tap_ip_host}:255.255.255.0::eth0:off" ${NET_CONFIG} ${EXTRA_ARGS} "$@"
启动登录后在模拟出的环境下再创建个接口
ip addr add 192.168.100.2/24 dev eth0ip link set eth0 up//在虚拟机内部,配置其网络接口(例如 eth0)以与宿主机在同一网段
可以ping一下能不能和宿主机ping通
更改设置
利用busybox里的vi修改)
vi /etc/ssh/sshd_config
找root登录对应行
把注释去掉,后面的后缀改成 yes
传输固件,提一点如果宿主机openssh版本比较新会有报错因为现代 SSH 客户端(如 OpenSSH 8.8 及以上版本)默认禁用了 ssh-rsa
和 ssh-dss
密钥类型,因为它们被认为不够安全。
不过加入-o HostKeyAlgorithms=+ssh-rsa就能解决
sudo scp -r squashfs-root/ [email protected]:~/#sudo scp -o HostKeyAlgorithms=+ssh-rsa -r squashfs-root/ [email protected]:~/chmod -R 777 squashfs-root/
挂载固件
mount -o bind /dev ./squashfs-root/devmount -t proc /proc ./squashfs-root/procchroot squashfs-root/ /bin/sh
在固件目录里能找到lighttpd文件,这就是LBlink所使用的webserver服务,去etc文件夹找相关配置
拉起webserver主程序
/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
这里启动的时候会有个报错
提示缺少/var/lighttpd.pid,应该是少了一个日志文件导致无法启动,创建对应文件
make qemu_mips32r2el_malta_defconfig
0
还需要启动ubusd服务/sbin/ubusd start
再次启动lighttpd
还有一个办法就是直接找附带内核,配置文件的整合包拉起
逆向分析与漏洞挖掘
开始做逆向分析的时候,可以实现的切入点就会多很多
我自己的习惯还是利用emba,firmwalker这种分析工具跑的同时自己去人工审一下
一般最先下手的还是CGI这类直接接收用户输入的接口
先来看下firmwalker的分析结果
像这边给出的就是一个md5加密后的管理员口令
还有就是
这种firmware.sh,upgrade文件夹下的内容很可能就是固件升级相关的逻辑,
设备开启的telent接口,之后就可以考虑命令注入开启telent反弹shell
包括还有一个 /usr/lib/libblinkapi.so 文件
不出意外是个API动态链接库 ,这种都是重点的分析对象
我们可以去对一些功能点抓个包,比如修改密码这种功能点
make qemu_mips32r2el_malta_defconfig
1
可以很明确的看到是 lighttpd.cgi 这个cgi脚本在处理这个请求
去分析一下这个脚本
对请求进行了一些验证,之后调用了share_func来对json数据做进一步处理
share_func是一个动态链接的函数,我要去找到对应的DLL文件
又出现了刚刚说的libblinkapi.so文件,
去libblinkapi.so里分析一下这个share_func
接收了json数据给了v13
访问字符串常量数组aCfgType, 偏移了一个固定值,最后读到的就是type了
把type类读到了v4,
把type对应的值,也就是setmanpwd给了v15
v15转存到了v20
在下面遍历指针表,寻找匹配的函数,如果找到了就会调用这个函数,json数据也会再交给那个函数处理
setmanpwd对应的函数
分析一下这个函数,函数逻辑还是比较简单的
创建了两个缓冲区
把缓冲区给了v24
做了个空json的检查
其实就是构造了一个 v17为 cfgType: setmanpwd
针对我们输入的密码其实没做什么过滤,最后拼接到chpasswd.sh root后就被执行了
换句话来讲,只要我们做一点简单的分割加个管道符就能实现命令注入
只要在我们的抓包数据里去修改一下"routepwd":"123123avbc"就可以实现注入了
漏洞整体逻辑还是比较简单的,主要是分享一下本人在挖掘这个漏洞时的思路
这个漏洞已经被公开,其他信息可以在nvd看到
nvd链接:https://nvd.nist.gov/vuln/detail/CVE-2025-4076
结束
招新小广告
ChaMd5 Venom 招收大佬入圈
新成立组IOT+工控+样本分析 长期招新
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...