诺基亚贝尔 G-1425-MA 移动 GPON 光猫 get shell

以前的光猫直接拆机接 TTL 串口里面直接就是 /bin/sh ,新版光猫改成了一个受限的 shell,不知道密码几乎无法进行任何操作。

通过 TTL 串口获得 shell

拆开机器,找到并连接 TTL 串口。

G-1425-MA_UART

设备在开机后,串口有 CFE 和 Linux 内核的输出。CFE 有密码,启动完成后得到一个受限的 shell (vtysh),只能运行 ifconfig, ip, route, ping, nslookup, ps, top 这几个命令。

Limited_shell

输入 enable 不需要密码,里面的 user 指令不允许添加用户,shell 指令需要密码,并且连续输错 3 次会锁定登录 300s。这样就只能从允许使用的这几个命令里面下手。

hint

输入 ip 回车之后,发现 ip 命令支持 netns,输入以下指令,就可以得到 shell 了。

1
2
ip netns add 8964
ip netns exec 8964 /bin/sh

由于 shell 使用了一个空的网络命名空间,因此无法用这个 shell 进行网络配置。但我们可以使用这个 shell 来进行其他所有操作并从中获取密码。

密码获取

输入 cfgcli -a 提取设置,寻找形如<Password ml="64" rw="RW" t="string" v="LZ8gkScDdQUp2k+it/ADtw==" ealgo="ab"></Password>的项,v=里面就是加密后的密码。使用 nokia-router-cfg-tool.py 进行解密得到明文密码。

由此可以得到密码如下:

串口 shell 密码 LA(ImvZx%8
Web CMCCAdmin 默认密码 aDm8H%MdA
CFE 用户名 telecomadmin 密码 nE7jA%5m (该密码无法从设置里面获取)

得到密码后,就可以在串口的 vtysh 里面依次输入

1
2
3
enable
shell
LA(ImvZx%8

得到一个可以正常进行网络配置的 shell。

附:得到密码之后可以进行的操作

设置优化

1
2
3
4
5
6
7
8
9
10
# 设置 RMS 注册成功
cfgcli -s InternetGatewayDevice.X_CT-COM_UserInfo.Status 0
cfgcli -s InternetGatewayDevice.X_CT-COM_UserInfo.Result 1
# 关闭 JVM
cfgcli -s InternetGatewayDevice.SoftwareModules.ExecEnv.1.Enable false
cfgcli -s InternetGatewayDevice.SoftwareModules.ExecEnv.2.Enable false
# 最大客户端连接数 200
cfgcli -s InternetGatewayDevice.Services.X_CT-COM_MWBAND.TotalTerminalNumber 200
# 关闭环路检测
cfgcli -s InternetGatewayDevice.LANDevice.1.X_CT-COM_LoopbackDetection.LoopbackEnable false

开机启动脚本

光猫的 init 会在最后调用 /config/postapp.sh 脚本,可以创建这个文件并写入自定义的开机启动项。

开启 SSH

1
cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.SSHEnable true

在 /etc/passwd 里面添加名为 user,UID 为 0 的账户,并用 passwd user 设置密码

1
user:x:0:0:Linux User,,,:/home/root:/bin/sh

删除 iptables 里面 22 端口的 REJECT 项(放入开机启动脚本),然后就可以使用 user 账户进行 ssh 连接。

一些调试用 Web 页面

下列页面需要使用超级用户登录才能使用,user 用户访问会跳回登录页面

开启 Telnet
http://192.168.1.1/system.cgi?telnet
Dump 设置
http://192.168.1.1/dumpdatamodel.cgi
修改省份
http://192.168.1.1/opid_setting.cgi?set