0x00:前言
中国电信是三大运营商中最大的固网宽带接入服务提供商,同时也是最早开始建设光纤宽带的运营商。如下图,从早期的e8-C,到后来的天翼智能网关1.0,2.0,3.0以及最新的4.0,其固网光纤终端接入设备(后统称:光猫)始终走在三大运营商的最前列。我们希望能通过一系列的文章对电信光猫进行深入浅出的介绍,重点分析其中涉及网络安全的技术细节。
0x01:文章内容
前一篇文章中,我们对电信光猫的软硬件做了简单的介绍,并重点分析了电信光猫启动脚本,试图缕清光猫启动流程以及关键服务。本文将在此前基础上重点分析电信光猫中的两款WEB服务器,二者之间的关系,光猫管理平台与电信智能插件应用平台的业务逻辑。碍于能力有限,学识浅薄,如有不对之处,还望多多指教!
0x02:inetd启动代码分析
2.1、/etc/inetd.conf配置文件分析
电信光猫采用inetd进程来统一托管tftp,telnet,ssh以及ftp服务器,这一点从/etc/inetd.conf配置文件中可以看出,如下图。这样做有一个好处,减小系统资源开销。
下图是ps命令执行结果的截图(只显示了TCP协议端口),可以看到ftp,ssh和telnet端口均由inetd进程监听。只有当外部用户连接特定网络服务时,inetd进程才会创建新的线程(Thread)响应用户服务。
2.2、iptables防火墙规则
一开始本没打算在这一子标题中讲iptables,但是前面截图已经明确看出光猫启动之后是启动监听了22(SSH)端口的,那就不再藏着掖着了。
下图为对光猫IPv4地址扫描的结果,可以看出22端口是被filtered了的,那么我们可以推测光猫肯定是在防火墙上进行了设置,禁止外部对22端口访问。后文,我们会通过实验来验证这一点。
下图为光猫防火墙导出内容,其中有一条挂载在INPUT上的规则链inacc。可以看到,光猫将所有访问22端口(SSH)的数据包全部DROP掉了,这也就是为什么前述扫描操作得到的22端口是filtered状态。
我们尝试在inacc链中22端口DROP规则之前,添加了一个ACCEPT规则。添加之后,inacc规则链内容如下图。由于iptables从上到下逐一匹配规则链,一旦匹配,则命中执行。因此,新添加针对22端口的ACCEPT规则后,理论上对22端口的访问都不会被过滤。
下图为添加22端口ACCEPT防火墙规则后的nmap扫描结果,可以看到22端口已经处于open状态。
尝试连接光猫22端口,发现需要输密码,尝试使用useradmin,telecomadmin账户,均成功获得root权限shell。而且,这个shell是没有session timeout的,可以任意玩耍,尤其是需要长时间做分析的时候会很爽。不过,每次光猫重启之后,需要先通过telnet root shell修改防火墙,然后才能捯饬这个root权限的SSH shell。
0x03:Web应用分析
从天翼光猫3.0起,光猫中运行了2个WEB srv,一个是运行于光猫系统上的boa WEB srv,另一个则是运行于lxc容器中uhttpd WEB srv。在浏览chinadsl.net上关于lxc容器的文章后,形成了一种错觉,boa WEB srv和uhttpd WEB srv分别响应80端口和8080端口,或者分别响应useramdin和telecomadmin。但是,经过对2个服务器及WEB应用代码的分析,发现这的确是一种错觉。
3.1、boa WEB srv
Boa WEB srv是一个专门针对嵌入式应用环境开发的,属于个头儿小能力大的那种。不过,遗憾的是boa WEB srv已经停更很久了【1】。最近爆出来与boa WEB srv相关的新闻应该要数利用boa SDK攻击印度能源基础设施了【2】。没错,我们的电信光猫里也跑了这个,不过光猫里的boa是在源代码基础上二次开发的,不会受到【2】中所说的攻击。
3.1.1 boa进程信息
如前所述,inetd进程只托管了SSH,telnet和tftp服务器,boa WEB srv 是作为一个独立进程运行的。从下图ps命令的输出结果便可知道。
通过对启动脚本和/bin/startup文件的分析,初步判断boa WEB srv应该是由/bin/startup负责启动的,并且有后台进程在监控boa进程,一旦boa进程崩溃挂掉了,boa进程会被重新启动。
3.1.2 对/home/httpd/boa.conf配置文件的分析
Boa WEB srv服务器配置文件是/home/httpd目录下的boa.conf文件。下图为/home/httpd/boa.conf配置文件的一部分截图。从中,可以知道boa WEB srv的版本信息以及服务器监听的端口信息。
下图为nestat命令的截图,从中可以看到,/bin/boa进程监听的8080端口,与前述boa配置文件不符。因此,我们认为/bin/boa程序内部硬编码了监听端口。
另外,从配置文件中可以看出,boa web srv支持的文档类型包括以下3类的脚本文件,并且这些文件可以位于任何目录。
—— cgi程序
—— asp脚本
—— html脚本
此外,boa配置文件还限定了对web根目录及其子目录的访问权限,如下图所示。但是,boa实际运行时并非采用HTTP Basic认证,而是通过用户身份来限制对特定目录的访问。
3.1.3 boa WEB根目录分析
从boa配置文件中可以看到对应的WEB根目录为web(/home/httpd/web),如下图所示。
Web根目录中文件信息如下图。后文中,还会提到这个目录结构,索性就费点神整理了一下。
3.2、uhttpd WEB srv
在lxc容器内部,天翼光猫运行的是OpenWrt系统,其默认的服务器为uhttpd。
3.2.1 uhttpd启动脚本
/opt/upt/framework/saf/rootfs/etc/init.d/uhttpd启动脚本(部分)截图如下。后文,容器内部地址均从容器内部根地址开始,即把/opt/upt/framework/saf/rootfs映射为容器内部“/”
3.2.2 uhttpd配置文件
uhttpd WEB srv配置文件为/etc/config/uhttpd,如下图。从图中可以看出,uhttpd监听的端口被配置为IPv4和IPv6上的80(HTTP)和8443(HTTPS)。
然而,通过查看ps命令执行结果,发现该配置文件中的端口并未被设置为监听状态,即uhttpd进程在IPv4和IPv6上监听了80端口,并未监听4443端口。以下分别为从光猫Linux中查看到的netstat信息和从lxc容器中查看到的netstat信息。
查看ps命令输出结果,发现uhttpd被调用执行时的输入参数,判断应该是手动设定了监听端口,因此才会出现未按配置文件要求监听8443端口。
3.3、boa 与 uhttpd二者关系
为了验证二者间关系,尝试将uhttpd配置文件/etc/config/uhttpd中监听的WEB端口设置为8888,如下图。
修改配置文件并重启光猫后,netstat命令执行结果如下图,可知:
—— 没有任何进程监听IPv4或IPv6的80端口;
—— uhttpd已经成功监听IPv4和IPv6的8888端口;
—— 但依然没有监听4443端口。
使用nmap对光猫进行端口扫描的结果如下图,从下图可以看到:
—— uhttpd监听的8888端口默认是没有被防火墙拦截;
—— SSH和DNS端口依旧被防火墙拦截。
基于以上两点,我们可以做出以下推断:
—— 防火墙规则的默认动作为ACCEPT;
—— SSH和DNS服务默认是开启了的,仅仅是防火墙通过设置规则将其禁用而已;
—— 如果能够通过光猫web 应用关闭防火墙,理论上是可以直接获得光猫telnet及SSH shell。
对比uhttpd监听端口修改前后智能插件模块信息对比,可以发现修改后页面无法呈现智能插件运行状态,由此可以推断:
—— lxc容器用于承载运营商的智能插件。
为了进一步验证uhttpd是否对外提供web服务,我们进一步将lxc容器内/www/index.html页面内容修改如下:
在保存修改并重启光猫后,我们直接访问http://192.168.1.1:8888,浏览器显示空白页,但是通过页面title,确定页面正确解析。
访问源代码中提及的http://192.168.1.1:8888/cgi-bin/luci,得到如下页面。通过对网页源代码的比对分析,确定该页面对应了lxc容器中/usr/lib/lua/luci/view/register.html。
查看lxc容器中/www/cgi-bin/luci,源代码如下:
根据前述分析内容,可以得出初步判断:
—— boa WEB srv提供了用户,包括useradmin及telecomadmin账户,端对光猫的基本配置操作;
—— lxc容器中uhttpd仅仅提供了光猫注册功能,主要负责完成智能插件相关的操作,具体分析会在后续文章中lxc容器部分详细讲解。
—— 如前所述,boa WEB srv实现了对asp脚本的支持,可以在web 根目录下任意位置运行asp脚本。通过网上搜索,基本排除了借助Novel公司开源项目mono实现asp支持的可能,也就是电信或者友华自己实现了基于boa WEB srv的asp运行环境!电信,666!友华,666!
0x04:小结
按照预期进度,本文完成了对/etc/inetd脚本及光猫防火墙的简单介绍,也对光猫两个WEB服务器进行了分析,大致明白了二者的分工和彼此关系。如果时间允许,会尽快完成关于天翼网关3.0最后一部分的分析内容。如果对本文内容感兴趣,欢迎留言催更!
0x05:参考
【1】Boa Webserver// http://www.boa.org
【2】微软称黑客利用Boa服务器中的漏洞攻击能源行业组织//https://venustech.com.cn/new_type/aqjx/20221124/24843.html#:~:text=微软在11月22日发布报告,称发现攻击者利用Boa%20web服务器中的漏洞攻击能源行业组织%E3%80%82,Recorded%20Future曾于2022年4月披露针对印度多个电网运营商的攻击活动,但没有详细说明攻击媒介%E3%80%82