CVE-2018-17066复现
type
status
date
slug
summary
tags
category
icon
password
AI summary
0x01
记录
复现一下cve,首先在官网下载固件
查看下文件类型是u-boot
使用binwalk提取文件系统
M
参数,递归扫描文件
e
参数,提取固件中的文件
安装binwalk(推荐)
如非必要不要选择下面的安装方式(笔者曾尝试过,这样会删除很多依赖,辛辛苦苦搭起来ubuntu环境全烂了)
提取完后如图所示
接下来我们将
goahead
的环境搭起来,goahead
在bin目录下qemu启动goahead
看报错,缺少lib目录下ld,我们在当前目录下创建lib并将ld放在文件夹下即可
有很多缺少库的报错,我们根据报错将库放入即可
最后结构如图所示
qemu运行,然后不出意外的又失败了
可以看见goahead报错cannot open pid file,我们就去程序里找
ida搜索字符串
是无法fopen
off_480e50
发现是没有/var/run/goahead.pid,创建一个
又报错please execute nvram_daemon first!
发现缺失/var/run/nvramd.pid
报错failed to convert to binary ip data
定位到lan_ipaddr
卡住…
看见网上的办法都是ida远程调试hook掉,待我研究研究qemu远程调试
疑问
如何确定是哪个二进制文件?我看网上全是直接开始分析goahead,但是在漏洞挖掘中我们是不知道哪里有漏洞的,如何确定漏洞所在的文件?
0x02
记录
书接上回,让我们看看如何解决failed to convert to binary ip data报错
经过本人实测,远程调试patch是最可靠的方法
具体操作如下
1.虚拟机选择桥接
2.将在ida的
dbgsrv
目录下linux_server
和linux_server64
文件复制到ubuntu下3.赋予
linux_server
和linux_server64
可执行权限sudo chmod +x ./linux_server linux_server64
4.
ifconfig
查看虚拟机ip5.在ubuntu上运行
linux_server
并运行goahead
sudo qemu-mipsel -g 1234 -L ./ ./bin/goahead
在ida里填好ip,端口
6.打断点,运行
7.修改v0的值为0,即可继续运行
打开
http://192.168.0.105/dir_login.asp
,即可进入登陆界面(不能在ubuntu打开,困扰了我好久😢,用kali打开的,本机也可)搭好之后我们要登录进去,我选择修改前端(也可以patch)
在
_DIR-816.img.extracted/squashfs-root/etc_ro/web
中找到dir_login.asp
,注释掉禁止输入空字符的js即可至于为什么这样做,主要是为了绕过登录代码
这个程序的登录逻辑是从
nvram_bufget
获得用户名和密码放在v2,v3。用户输入的用户名和密码经过base64编码放在var和v7中,解码后的用户名和密码放在v10,v11中v2,v3值为0,当v10,v11为0时即可绕过检查
访问
http://192.168.0.5/d_wizard_step1_start.asp
找到漏洞点,
ls
测试一下不行,那用burp抓下包
在datetime处注入命令
发过去,success
详细看下代码,从web获得输入的datetime的值放在var
&unk_47c2b8
为date -s \"%s\"
,var可以由用户控制,存在命令注入疑问
复现cve最大的感触是寻找漏洞才是最关键的,这个漏洞出现在cgi上,cgi更容易产生漏洞?