查看原文
其他

九维团队-绿队(改进)| 记一次5G CPE设备安全测试

fuhei 安恒信息安全服务 2022-09-07



前言



在某次安全研究中,笔者遇到了一个CPE设备,可以简单理解为一个4G/5G路由器,在这里将一些测试过程及思路记录下来,供大家参考。


(注:为避免泄露产品信息,上并非实际测试设备)




01

固件提取



设备的整体外观较为简单,因此直接拆机后尝试使用串口连接。 


连接后发现登录需要密码,尝试弱口令未果。于是准备通过boot dump内存的方式获取固件内容。
sf read 目标内存地址 数据源地址 长度



02

配置文件注入



由于dump内存比较复杂费时,因此进一步通过设备默认口令登录后台,查看存在的功能点以分析可能存在的攻击面。 

登录后台后注意到存在“诊断”和“WAN配置”。因为这两个功能在之前的一些测试中出现过大量的命令注入、文件覆盖等漏洞。于是决定以此为攻击入口。

设备提供配置文件下载功能,下载配置文件后发现并未加密  :


通过通读配置文件,可以发现其中存在snmp服务,可参考网站:
https://net-snmp.sourceforge.io/wiki/index.php/Tut:Extending_snmpd_using_shell_scripts
*左右滑动查看更多

根据网站内容可知,通过extend的方式能够执行命令。那么修改配置加入
\r\nextend test (command)

再重新上传,即可实现命令注入:




尝试执行telnetd反弹shell,发现不存在telnetd,且nc等都存在阉割无法直接反弹shell。

最后发现设备开了ssh但是没有密码,于是想到使用U盘或wget获取并修改shadow来更改root密码,进入系统 。



03

命令注入漏洞



返回继续看诊断ping功能,尝试IP处拼接命令发现存在白名单过滤,这里已经getshell,于是直接返回查看源码。  

只对addr有过滤,但没有对ifname进行过滤,因此可以通过控制ifname来进行命令注入 。



04

安全加固建议



对于开发者来说,在开发时应尽量避免对参数直接引用拼接,可以在所有参数前加一个过滤函数,避免直接使用用户提交的配置文件。

PCB板在出厂时应尽量设置设备密码并抹去UART等调试口,避免攻击者直接进入设备,提取固件,并且在此攻击面上添加一些额外的攻击。


05

总结



总体来说,整体漏洞挖掘过程较为顺畅。里UART口虽然存在密码,但是一般可以通过重刷内核或者boot dump的方式进行提取。

另外很重要的一点便是攻击面的分析,往往需要大胆假设,小心求证。大胆去猜测程序背后的实现逻辑以及可能存在的安全问题,并通过不断地尝试去进行求证。

全面攻击分析往往可以加快整个测试的进度,帮助快速定位漏洞点。




—  往期回顾  —





关于安恒信息安全服务团队安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存