概述
Dlink路由器 CNVD-2018-01084复现分析
0x01 背景介绍
D-Link DIR 615/645/815路由器1.03及之前的固件版本存在远程命令执行漏洞。该漏洞是由于service.cgi中拼接了HTTP POST请求中的数据,造成后台命令拼接,导致可执行任意命令。
cnvd上的漏洞说明:https://www.cnvd.org.cn/flaw/show/CNVD-2018-01084
0x02 固件分析
-
在官网获取漏洞版本的固件:DIR645A1_FW102B08.bin
-
解压固件,获得文件系统
(1)安装sasquatch
需要安装sasquatch https://github.com/devttys0/sasquatch
(2)binwalk
获得完整的文件系统
CGI中一般通过getenv或stdlib库函数getenv来获得环境变量获取post过来的数据,
getenv
要注入的命令放到request_uri环境变量时候成功
0x03 固件仿真
使用qemu user mode 对固件进行部分仿真,对象是cgibin
chroot . ./qemu-mipsel-static ./htdocs/cgibin
由于chroot . 改变根目录 无法搜索环境变量 qemu-mipsel-static
将其拷贝至当前目录 以./qemu-mipsel-static调用
发现提示unknown command cgibin
使用IDA分析main函数,发现:
将第一个参数与XXX.cgi做对比,选择执行XXX_main函数
那么,使用qemu -0方式 指定第一个参数
chroot . ./qemu-mipsel-static -0 "service.cgi" ./htdocs/cgibin
现在只要确定漏洞的调用链,并构造HTTP POST请求即可。
0x04 漏洞分析
命令注入一般发生在危险函数出现的地方,例如system, execve,execlp
以本漏洞的cgibin文件为例,使用IDA对system溯源分析
漏洞在lxmldbc_system函数
溯源可得
构造 EVENT=&shell_cmd& 则对于
lxmldbc_system(“event %s > /dev/null”, v5)
等价为:system(event & shell_cmd & > /dev/null)
可注入shell_cmd
溯源至main函数,构造完整的POST请求
CGI中一般通过getenv来获得环境变量获取post过来的数据。在cgibin中未找到stdin,scanf这样的函数或者字符串,因此把要注入的命令当做输入参数传递不能成功,仔细检查每一个genenv,把要注入的命令放到request_uri环境变量时候成功。
In cgibin_parse_request
最终脚本:
sudo chroot . ./qemu-mipsel-static
-0 "service.cgi"
-E REQUEST_METHOD="POST"
-E CONTENT_LENGTH=100
-E REQUEST_URI="service.cgi?EVENT=%26ls%ls"
-E CONTENT_TYPE="application/x-www-form-urlencoded"
-E HTTP_COOKIE="uid=ztl"
./htdocs/cgibin
异常错误??
在IDA中搜索:
可视化调用链:
0x05 动态调试
sudo chroot . ./qemu-mipsel-static -strace -g 1234
-0 "service.cgi"
-E REQUEST_METHOD="POST"
-E CONTENT_LENGTH=100
-E REQUEST_URI="service.cgi?EVENT=%26ls%26"
-E CONTENT_TYPE="application/x-www-form-urlencoded"
-E HTTP_COOKIE="uid=ztl"
./htdocs/cgibin
发现问题在cgibin_parse_request函数
动态调试,修改对应寄存器的值,使得可以正常运行至system
跳过 sess_validate函数(仿真环境没有路由器的证书等配置)
成功执行ls函数,并打印
0x06 漏洞利用
构造EVENT=&shell_cmd&
即可注入shell_cmd
以删除某文件为例
最终效果:
最后
以上就是无限未来为你收集整理的Dlink路由器 CNVD-2018-01084 远程命令执行漏洞 复现分析的全部内容,希望文章能够帮你解决Dlink路由器 CNVD-2018-01084 远程命令执行漏洞 复现分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复