漏洞分析
这次出问题的点是upnp
程序
1 | home/oit/Downloads/_router HG532e.rar-0.extracted/_HG532eV100R001C01B020_upgrade_packet.bin.extracted/squashfs-root/bin [oit@ubuntu] [18:36] |
是MIPS32位大端格式
UPnP 是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。
丢到IDA中分析
1 | LOAD:004074FC la $a1, aNewstatusurl # "NewStatusURL" |
分析upnp描述信息后 发现该设备支持名为DeviceUpgrade
的一种服务类型 设备可以通过这种服务更新固件 具体过程是向“/ctrlt/DeviceUpgrade_1”
这个地址提交请求 请求中包含NewStatusURL及NewDownloadURL两个元素。
远程管理员可以通过该漏洞在设备上执行任意命令 将shell元字符 注入NewStatusURL以及NewDownloadURL元素中
先调用了一个xml相关的函数,获取参数的值,很明显的看到了参数拼接的行为,之后调用了system
函数
1 | snprintf($s0, 0x400, 'upg -g -U %s -t '1 Firmware Upgrade Image' -c upnp -r %s -d -', NewDownloadURL, NewStatusURL) |
不过还有一个认证机制需要 Authorization
头 才能过掉 check
, 否则会 401
实际测试
尝试直接运行脚本失败了
1 | root@ml-vm:/home/oit/tools/fat# ./sources/extractor/extractor.py -b iot -sql 127.0.0.1 -np -nk "./HG532e.rar" images |
打算用qemu运行一个虚拟机来搞
1 | root@ml-vm:/mnt/hgfs/IOTEXP/_router HG532e.rar.extracted/_HG532eV100R001C01B020_upgrade_packet.bin.extracted# sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic -net nic -net tap,ifname=br0,script=no,downscript=no |
但是一直没有打开shell
换了一个磁盘和内核,成功地开启了虚拟机但是网络配置没有成功
未完待续。。
修改了一下/etc/network/interfaces
成功了
1 | scp -r ./squashfs-root root@192.168.104.187:/root |
文件拷贝进去
进入虚拟机之后开启服务
exp
1 | import threading, sys, time, random, socket, re, os, struct, array, requests |
确实成功了
但是没有虚拟机上没有这个命令emmm