记一次5G CPE设备的安全测试 #### 缘起 想想已经几年没更新博客了,正好最近有空来去去灰除除草。博客停更的这些时间一直在转型从Web到物联网,再到现在的车联网。因此博客的往后的更新也会主要围绕物联网车联网来跟新。另外这些文章也会同步跟新到知识星球。 #### 初识 设备是某个项目中遇到的一个CPE,可以简单理解为一个4G/5G路由器。 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/22/1645506807175.png) (避免泄露产品信息,网上随便找了个图) 设备外观比较简单,直接拆机尝试使用串口连接。 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/22/1645512290468.png) 连接后发现登录需要密码,尝试弱口令未果,于是准备通过boot dump内存的方式获取固件内容。 `sf read 目标内存地址 数据源地址 长度` ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/24/1645670958679.png) #### 探索 通过设备默认口令登录后台,查看一些功能点可能存在的攻击面 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/24/1645671523430.png) 这里注意到存在诊断和导入配置,显然这两个入口会相对较为简单。 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/24/1645671648466.png) 通过生成存档功能导出配置,查看是否存在可控参数。发现存在snmpd服务,并且可以通过XML控制其配置。 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646030928901.png) 参考`https://net-snmp.sourceforge.io/wiki/index.php/Tut:Extending_snmpd_using_shell_scripts`可以通过extend的方式执行命令 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646031061557.png) 直接尝试执行telnetd反弹shell,发现不存在telnetd,并且nc等都存在阉割无法直接反弹shell。 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646031194634.png) ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646030852622.png) 最后发现设备存在USB口,于是插入U盘替换shadow文件成功getshell ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646031374219.png) #### 尾声 返回继续看诊断,尝试IP处拼接命令发现存在白名单过滤,这里已经getshell了于是直接返回查看源码。 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646031832487.png) ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646031852445.png) 显然这里只对addr进行了过滤,并没有过滤ifname。于是直接拼接ifname即可执行任意命令 ![](https://cdn.jsdelivr.net/gh/fuhei/image@main/2022/2/28/1646031936551.png) https://www.lovei.org/upload.html https://www.lovei.org/js.svg http://lovei.org/termux.apk file://../../../../../../../etc/hosts [file://../../../../../../../etc/hosts](file://../../../../../../../etc/hosts) file://../../../../../../../system/etc/hosts [file://../../../../../../../system/etc/hosts](file://../../../../../../../system/etc/hosts) [file:///etc/hosts](file:///etc/hosts)
你写得非常清晰明了,让我很容易理解你的观点。
这篇文章写得深入浅出,让我这个小白也看懂了!