在研究CVE-2020-8949 漏洞的时候,学到一个新的执行命令的技巧,这个漏洞在远程执行命令的时候,执行的命令之间带有空格会被过滤掉,我试过很多种方式,用 替换空格,或者用${IFS}代替,都会被过滤。然后执行了一下busybox ,看到里面有个大部分路由器不常见的命令,正式这个命令让我成功的上传木马,获取到了路由器稳定的shell,控制权限。 请各位大佬往下看,后面会介绍这个路由器中不常见的命令。
Gocloud路由器在我们日常生活中很少见,甚至都没怎么听说过,这个厂商的路由器经常用在企业或者网吧,没错,就是那个万象管理系统的网吧。下面是路由器登录的界面 以下Gould路由容易受到OS命令注入的影响:受影响的版本: GOCLOUD S2A_WL-固件版本4.2.7.16471 GOCLOUD S2A-固件版本4.2.7.17278 GOCLOUD S2A-固件版本4.3.0.15815 GOCLOUD S2A-固件版本4.3.0.17193 GOCLOUD S3A(K2P MTK版本)-固件版本4.2.7.16528 GOCLOUD S3A-固件版本4.3.0.16572 GOCLOUD ISP3000英特尔®至强®E5-2660-固件版本4.3.0.17190 这款路由器基本上集中在中国,并且数量还不少。 在shodan 可以搜索到,搜索规则如图所示。 下图是我通过弱口令登录进去的 此漏洞的触发点在系统工具诊断工具中, 在url的“ ping”功能中,可以通过用“;”转义来注入命令。在注入命令的开头和结尾处 漏洞触发需要在认证之后。
POC: http://IP:PORT/cgi-bin/webui/admin/tools/app_ping/diag_ping/ ;$(echo cHM=|base64 -d); /5/56/false.com_利用如下图所示
但是在利用的时候,我遇到了一些字符给我带来问题的问题,例如“ /”,因此我使用base64编码有效负载,这个设备中有base64 这个命令。
$(echo command|base64 -d) 这其中的command 是要转成base64格式的。 base64 -d 是解码 整个意思是, 打印出命令,然后用base64解码,解码完之后执行。
接下来看看如何利用, 弱口令 admin/admin 首先是上传木马,利用路由器中的wget命令。 上传的木马需要根据路由器的指令架构传递对应的M。 这里是X86的架构。 指令架构:Linux Router 3.10.108 #5 SMP Fri May 22 12:40:55 CST 2020 x86_64 GNU/Linux 注: 此设备是有base64 命令,虽然执行命令中带有/ - 等字符会被过滤,但是可以使用base64进行编码发送,然后解码执行。 如下图,左边是执行上传命令 右边的服务器接收到路由器的下载请求 执行木马
https://sku11army.blogspot.com/2020/02/gocloud-rce-in-gocloud-routers.html