在正在到来的物联网时代,路由器是一个家庭里面的核心,连接着各种智能设备,路由器会被更多的黑客盯上,用于发动DDos,传播木马、病毒、挖矿软件等。本文以D-Link路由器的一个远程命令执行漏洞为例带你入门路由器漏洞分析。
一、环境
1. attifyOS:智能设备固件分析环境(下载:https://github.com/adi0x90/attifyos )
2. 固件二进制文件DIR-645_FIRMWARE_1.03.ZIP (下载:ftp://ftp2.dlink.com/PRODUCTS/DIR-645/REVA/DIR-645_FIRMWARE_1.03.ZIP )
二、环境启动
1. 运行`fat.py`
2. 输入你下载的zip的路径,在输入下brand就可以了
3. 最后再就是输入user firmadyne的密码,密码也是firmadyne
4. 如果不是root用户运行还会输入用户密码
5. 最后即可启动成功
访问192.168.0.1即可
三、漏洞分析
先解压,再解开固件(M是递归扫描的意思,e是extract,提取的意思)
unzip DIR-645_FIRMWARE_1.03.ZIP binwalk -Me dir645_FW_103.bin
那就可以得到固件的根目录
/home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root [oit@ubuntu] [1:22] > ls bin etc htdocs lib proc sys usr www dev home include mnt sbin tmp var
只有htdocs里面和web相关的二进制程序,实际的bin程序基本都是调用busybox
跟进htdocs看看两个bin文件都是mips 32的elf文件,fileaccess.cgi是权限控制相关的
/home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root/htdocs [oit@ubuntu] [2:06] > file cgibin cgibin: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), stripped /home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root/htdocs [oit@ubuntu] [2:06] > file fileaccess.cgi fileaccess.cgi: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), stripped
漏洞在cgibin文件里面,IDA打开,main函数判断假如访问的是service.cgi就调用servicecgi_main
servicecgi_main里面先判断请求的方法,只处理get和post(其实后面都是走一样的路径,所以这个get和post利用都可以),之后是调用cgibin_parse_request,解析CONTENT_TYPE,CONTENT_LENGTH
之后便是解析参数,其中EVENT跟SERVICE都是会调用lxmldbc_system
而lxmldbc_system会调用system执行command,而且是没有任何过滤的,那就存在命令注入的风险了
那么我们得到一种命令执行的挖掘方法就是:通过system反向解引用就可以了
四、漏洞利用
访问一下`http://192.168.0.1/service.cgi`(具体ip根据实际修改),是可以访问的
最后即可利用
如果是利用SERVICE字段就得加个ACTION参数
五、参考链接
https://cr0n1c.wordpress.com/2018/01/08/exploiting-cheap-labor/