freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

电信天翼网关3.0分析—中
2023-04-19 01:11:19
所属地 四川省

0x00:前言

中国电信是三大运营商中最大的固网宽带接入服务提供商,同时也是最早开始建设光纤宽带的运营商。如下图,从早期的e8-C,到后来的天翼智能网关1.0,2.0,3.0以及最新的4.0,其固网光纤终端接入设备(后统称:光猫)始终走在三大运营商的最前列。我们希望能通过一系列的文章对电信光猫进行深入浅出的介绍,重点分析其中涉及网络安全的技术细节。

0x01:文章内容

前一篇文章中,我们对电信光猫的软硬件做了简单的介绍,并重点分析了电信光猫启动脚本,试图缕清光猫启动流程以及关键服务。本文将在此前基础上重点分析电信光猫中的两款WEB服务器,二者之间的关系,光猫管理平台与电信智能插件应用平台的业务逻辑。碍于能力有限,学识浅薄,如有不对之处,还望多多指教!

0x02inetd启动代码分析

2.1/etc/inetd.conf配置文件分析

电信光猫采用inetd进程来统一托管tftptelnetssh以及ftp服务器,这一点从/etc/inetd.conf配置文件中可以看出,如下图。这样做有一个好处,减小系统资源开销。

1681835366_643ec566086b6fffdc38c.png!small?1681835366424

下图是ps命令执行结果的截图(只显示了TCP协议端口),可以看到ftp,ssh和telnet端口均由inetd进程监听。只有当外部用户连接特定网络服务时,inetd进程才会创建新的线程(Thread)响应用户服务。

1681835382_643ec576829ce1caa01b4.png!small?1681835383012

2.2、iptables防火墙规则

一开始本没打算在这一子标题中讲iptables,但是前面截图已经明确看出光猫启动之后是启动监听了22(SSH)端口的,那就不再藏着掖着了。

下图为对光猫IPv4地址扫描的结果,可以看出22端口是被filtered了的,那么我们可以推测光猫肯定是在防火墙上进行了设置,禁止外部对22端口访问。后文,我们会通过实验来验证这一点。

1681835414_643ec596365f8aa4e16e3.png!small?1681835414879

下图为光猫防火墙导出内容,其中有一条挂载在INPUT上的规则链inacc。可以看到,光猫将所有访问22端口(SSH)的数据包全部DROP掉了,这也就是为什么前述扫描操作得到的22端口是filtered状态。

1681835514_643ec5fa9c0dbaf65ac77.png!small?1681835515183

我们尝试在inacc链中22端口DROP规则之前,添加了一个ACCEPT规则。添加之后,inacc规则链内容如下图。由于iptables从上到下逐一匹配规则链,一旦匹配,则命中执行。因此,新添加针对22端口的ACCEPT规则后,理论上对22端口的访问都不会被过滤。

1681835567_643ec62f108a5cd7a78a7.png!small?1681835567497

下图为添加22端口ACCEPT防火墙规则后的nmap扫描结果,可以看到22端口已经处于open状态。

1681835579_643ec63bd45dd79714fa0.png!small?1681835581152

尝试连接光猫22端口,发现需要输密码,尝试使用useradmintelecomadmin账户,均成功获得root权限shell。而且,这个shell是没有session timeout的,可以任意玩耍,尤其是需要长时间做分析的时候会很爽。不过,每次光猫重启之后,需要先通过telnet root shell修改防火墙,然后才能捯饬这个root权限的SSH shell

1681835633_643ec67140e50e85c9c5d.png!small?1681835633591

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命令的输出结果便可知道。1681835708_643ec6bcd782c8b11953d.png!small?1681835709265

通过对启动脚本和/bin/startup文件的分析,初步判断boa WEB srv应该是由/bin/startup负责启动的,并且有后台进程在监控boa进程,一旦boa进程崩溃挂掉了,boa进程会被重新启动。

1681835752_643ec6e8536c23a2c5b6a.png!small?1681835752786

3.1.2 /home/httpd/boa.conf配置文件的分析

Boa WEB srv服务器配置文件是/home/httpd目录下的boa.conf文件。下图为/home/httpd/boa.conf配置文件的一部分截图。从中,可以知道boa WEB srv的版本信息以及服务器监听的端口信息。

1681835789_643ec70d79c590873dd6b.png!small?1681835790473

下图为nestat命令的截图,从中可以看到,/bin/boa进程监听的8080端口,与前述boa配置文件不符。因此,我们认为/bin/boa程序内部硬编码了监听端口。

1681835823_643ec72f8994327cd542e.png!small?1681835824057

另外,从配置文件中可以看出,boa web srv支持的文档类型包括以下3类的脚本文件,并且这些文件可以位于任何目录。

—— cgi程序

—— asp脚本

—— html脚本

1681835870_643ec75e4a186c872d75a.png!small?1681835870672

此外,boa配置文件还限定了对web根目录及其子目录的访问权限,如下图所示。但是,boa实际运行时并非采用HTTP Basic认证,而是通过用户身份来限制对特定目录的访问。

1681835914_643ec78ad2a4256484772.png!small?1681835915421

1681835921_643ec791a84e176a461fb.png!small?1681835922181

1681835927_643ec797264f8b26dd59a.png!small?1681835927576

3.1.3 boa WEB根目录分析

boa配置文件中可以看到对应的WEB根目录为web/home/httpd/web),如下图所示。

1681835969_643ec7c1bb83d330f4e5f.png!small?1681835970621

Web根目录中文件信息如下图。后文中,还会提到这个目录结构,索性就费点神整理了一下。

1681835988_643ec7d48eef3c455ceed.png!small?1681835989055

3.2uhttpd WEB srv

lxc容器内部,天翼光猫运行的是OpenWrt系统,其默认的服务器为uhttpd

1681836070_643ec8263ef342e6a0a5e.png!small?1681836070747

3.2.1 uhttpd启动脚本

/opt/upt/framework/saf/rootfs/etc/init.d/uhttpd启动脚本(部分)截图如下。后文,容器内部地址均从容器内部根地址开始,即把/opt/upt/framework/saf/rootfs映射为容器内部“/”

1681836368_643ec9502ab67d5d2a1ac.png!small?1681836369074

3.2.2 uhttpd配置文件

uhttpd WEB srv配置文件为/etc/config/uhttpd,如下图。从图中可以看出,uhttpd监听的端口被配置为IPv4和IPv6上的80(HTTP)和8443(HTTPS)。

1681836487_643ec9c7391d80c254681.png!small?1681836488472

然而,通过查看ps命令执行结果,发现该配置文件中的端口并未被设置为监听状态,即uhttpd进程在IPv4IPv6上监听了80端口,并未监听4443端口。以下分别为从光猫Linux中查看到的netstat信息和从lxc容器中查看到的netstat信息。

1681836566_643eca16a03bd420d3266.png!small?1681836567118

1681836577_643eca21531b1ebe4397e.png!small?1681836577767

查看ps命令输出结果,发现uhttpd被调用执行时的输入参数,判断应该是手动设定了监听端口,因此才会出现未按配置文件要求监听8443端口。

1681836605_643eca3dafb3833d4cb38.png!small?1681836606129

1681836611_643eca43dcd3092447d0e.png!small?1681836612302

3.3boa uhttpd二者关系

为了验证二者间关系,尝试将uhttpd配置文件/etc/config/uhttpd中监听的WEB端口设置为8888,如下图。

1681836643_643eca638d25727d54cfd.png!small?1681836644127

修改配置文件并重启光猫后,netstat命令执行结果如下图,可知:

—— 没有任何进程监听IPv4或IPv6的80端口;

—— uhttpd已经成功监听IPv4和IPv6的8888端口;

—— 但依然没有监听4443端口。

1681836665_643eca7975aa87f38040a.png!small?1681836666345

1681836765_643ecadd49124c4b0f7c4.png!small?1681836766087

使用nmap对光猫进行端口扫描的结果如下图,从下图可以看到:

—— uhttpd监听的8888端口默认是没有被防火墙拦截;

—— SSH和DNS端口依旧被防火墙拦截。

1681836881_643ecb5155db7816162de.png!small?1681836882019

基于以上两点,我们可以做出以下推断:

—— 防火墙规则的默认动作为ACCEPT;

—— SSH和DNS服务默认是开启了的,仅仅是防火墙通过设置规则将其禁用而已;

—— 如果能够通过光猫web 应用关闭防火墙,理论上是可以直接获得光猫telnet及SSH shell。

对比uhttpd监听端口修改前后智能插件模块信息对比,可以发现修改后页面无法呈现智能插件运行状态,由此可以推断:

—— lxc容器用于承载运营商的智能插件。

为了进一步验证uhttpd是否对外提供web服务,我们进一步将lxc容器内/www/index.html页面内容修改如下:

1681837185_643ecc81c8feb1bd70e31.png!small?1681837186655

在保存修改并重启光猫后,我们直接访问http://192.168.1.1:8888,浏览器显示空白页,但是通过页面title,确定页面正确解析。

1681837229_643eccad7158631d9f862.png!small?1681837230076

访问源代码中提及的http://192.168.1.1:8888/cgi-bin/luci,得到如下页面。通过对网页源代码的比对分析,确定该页面对应了lxc容器中/usr/lib/lua/luci/view/register.html

1681837269_643eccd5c0b7f7f7675fe.png!small?1681837270734

查看lxc容器中/www/cgi-bin/luci,源代码如下:

1681837292_643eccec4a3c48ae7d4ce.png!small?1681837292711

根据前述分析内容,可以得出初步判断:

—— 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

# 终端安全 # 操作系统 # 物联网安全 # IoT安全 # 光猫
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录