中国移动 光猫 TEWA-7560B 开启telnet 及超级管理员密码 破解过程
网上搜了下这个型号的,搜不到
大概看了下其他型号的,基本都是一个url开启telnet然后找到备份文件读到管理员密码
关键在于怎么开启telnet
看下前端
账号密码在路由器的背面,以个人为例子:

登录后直接开F12看一下,搜telnet:

可以看到有FEATURE_TELNET的css在hgs_customer.js被remove了,是否remove取决于/json/config.json,网页中搜FEATURE_TELNET看一下:

可以看到除了FEATURE_TELNET还有 FEATURE_ADMIN这个CSS在控制,搜一下 FEATURE_ADMIN

可以看到hgs_update_data.js中移除了 FEATURE_ADMIN,通过getLogStatus的GET获取是不是admin,看一下这个GET:
http://192.168.1.1/getLogStatus?waitTimeoutMs=500
{
"login": true,
"isAdmin": false,
"busyLevel": 0
}
修改代码
那么接下来就是修改数据,修改前端和后端任意一个都可以,
- 修改后端的话 就拦截
getLogStatus和/json/config.json,并修改里面的数据
- 修改前端就改js,
前端方便一点,这里修改前端
hgs_update_data.js直接在data.isAdmin前加data.isAdmin=true,或者直接改为if(false)
hgs_customer.js简单点把remove相关的代码都删了.
看一下效果,telnet出来了

打上钩,点击保存看一下->震惊了,直接就保存上了! 没有任何校验
对应的请求:
curl 'http://192.168.1.1/setObjs' \
-H 'Accept: */*' \
-H 'Accept-Language: zh-CN,zh;q=0.9' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
-b 'token=d81e2312872deccdc59e7ec81be2932e' \
-H 'Origin: http://192.168.1.1' \
-H 'Pragma: no-cache' \
-H 'Referer: http://192.168.1.1/' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-Requested-With: XMLHttpRequest' \
--data-raw '[{"TelnetEnable":true,"TelnetUserName":"CMCCAdmin","TelnetPassword":"aDm8H%MdA","fullPath":"InternetGatewayDevice.DeviceInfo.X_CMCC_ServiceManage."}]' \
--insecure
http://192.168.1.1/getObjs?waitTimeoutMs=5000
[{
"fullPath": "InternetGatewayDevice.DeviceInfo.X_CMCC_ServiceManage.",
"FtpEnable": "1",
"FtpUserName": "para",
"FtpPassword": "xxxx",
"FtpPort": "21",
"TelnetEnable": "1",
"TelnetWANEnable": "0",
"TelnetUserName": "CMCCAdmin",
"TelnetPassword": "aDm8H%MdA",
"TelnetPort": "23",
"SSHEnable": "0",
"SSHUserName": "",
"SSHPassword": "",
"SSHPort": "22",
"SerialEnable": "0"
}]
ftp及其他功能同理

telnet
已经开启了我们登录看一下

登录成功,看一下cpu:
cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 400.00
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
processor : 1
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 400.00
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
Hardware : hsan
Revision : 0000
Serial : 0000000000000000
cat /etc/hi_version
product name :hsan
product version :HSAN_3.3.19.linux1
version type :release
product author :Hisilicon
sdk version :HSAN_3.3.19.linux1
flash type :spi
release time :2024-12-05 16:34:19
海思(Hisilicon)HSAN 系列 SoC.ARMv7-A 架构,Cortex-A9 双核
找一下管理员密码(该密码同时还是telnet->su(root权限)的密码):
find / -name "*backup*" -o -name "*config*" 2>&1 | grep -v "Permission" | grep -i xml
找到了
/config/conf/cfm/config_default.xml
/config/work/backup_lastgood.xml
/config/work/backup_lastgood.xml_md5
/tmp/mnt/usb1/._backup_lastgood.xml
/usr/cmcc_app/backup_b_lastgood.xml
/usr/local/factory/defaultconfig.xml
最终找到在
/config/work/backup_lastgood.xml
原始文件位于同目录/config/work/lastgood.xml
看一下,搜CMCCAdmin,找到了超级管理员的密码

关于怎么禁止超级密码更新/停用上报/
由于是TR069(hgcwmp),从远程拉取了一个/tmp/lastgood.b64,然后base64解码然后解压(相关代码位于hi_cwmp.so的port_after_download函数中),来实现的动态密码
所以只要把网络->宽带设置->网络连接->1_TR069_R_VID_4034->启用 勾掉就好了
上报相关的信息位于网络->远程管理->省级数字家庭管理平台服务器->远程管理配置
里面有2个账号密码及ACS服务器的url,通过抓包可以知道
第一个账号是用于ACS 后台触发Download开关,返回一个服务器的lastgood.b64,地址是http://112.16.168.100:8080/cms/SCTY18860A9C/lastgood.b64
第二个账号是用于下载http://112.16.168.100:8080/cms/SCTY18860A9C/lastgood.b64时的验证
这意味着只要知道设备的SN以及对应的2个账号密码(估计是根据sn生成的),就可以获取到任意移动路由器的超级密码.
默认不让保存的,对应的css为HGS_REMOTE_MANAGE HGS_REMOTE_MANAGE_1,修改为可以保存就可以保存
勾掉使能周期上报也可以防止密码修改,
因为url是http://acs.zj.chinamobile.com:9090/ACS-server/ACS,会被TR069解析为正确ip,所以任意勾选掉一个都可以使周期上报失效
周期上报后会下载/tmp/lastgood.b64,并更新密码
如果想调试相关代码,可以把周期上报时间调短,然后保存,这样会频繁的更换密码.个人用的frida调试的
直接kill相关进程是不行的 因为会触发watchdogd 重启这些进程 并触发更新密码
禁用远程插件
这些插件会实时统计所有连接的设备及在线情况以及每个设备的使用流量,
有部分是给对应的远程控制app用的andlink
确实有部分是监控流量的cmccdpi
但是其实无所谓的,服务端肯定还有监控,只不过不能知道具体什么设备使用了这些流量而已
原理:Felix(OSGi 框架)通过加载jar包来实现各种插件
首先telnet用su获取root权限
OSGi相关配置在
/usr/cmcc_app/conf/config.properties
可以修改配置文件.想简单直接删除/修改后缀名下面的文件
/usr/cmcc_app/
com.chinamobile.smartgateway.andlink_2.6.2.jar
com.chinamobile.smartgateway.appcore_3.2.0.jar
com.chinamobile.smartgateway.cmccdpi_4.3.2.JiaKuan.jar
com.chinamobile.smartgateway.cmccdpi_4.3.2.JiaKuan_GXI.jar (广西)
com.cmcc.hy.speedtest_1.0.jar
com.cmcc.wuyougateway_5.0.5.jar
清空缓存 rm -rf /usr/cmcc_app/cache/felix-cache/*
然后重启程序killall java 或者 重启光猫reboot
需要注意此时移动的app控制光猫 也不能用了
如何开启ipv6
把安全->广域网访问设置 打开
把安全->防火墙 关闭就好了
但是,这样非常不安全!!!!正确做法应该和云服务器一样做端口映射,开启特定端口,但是光猫上web界面没有,需要自己修改iptable
或者桥接二级有高级防火墙的路由
光猫ipv6地址通过光猫telnet执行ip -6 addr show dev br0获得
其他下挂设备ipv6对应获得即可
这是我跑在光猫上(跨平台编译)的测试例子:
http://[2409:8a28:86:85b0:daee:42ff:fece:dac0]:8081/
总结
居然后端一点验证都没有,真的是....
现在仅对root(telnet)用户做了超密的校验,如果后端所有接口都加上超密的校验.就很难破解了
ps:
1.现在超级管理员密码都是动态的,每次获取到的可能不一样,应该是设备的SN+秘钥(比如时间戳) 生成出来的,秘钥是动态换的,通过备份文件可以获取到最新的
2.部分光猫有的功能,有超级管理员密码也没有办法开启,有一部分配置文件写死的,有一部分是通过地区判断的,通过该方法可以全部开启
3.超级管理员的密码也是su的root权限的密码!!!
4.这个海思芯片的程序是真的难编译,架构写的是armv7,但是不支持硬浮点,golang编译退到标准armv5可以解决GOOS=linux GOARCH=arm GOARM=5,C代码的话由于官方没有提供arm-none-linux-eabi(linux软浮点)只有arm-none-eabi(裸板)和arm-none-linux-gnueabihf(硬浮点),macos和windows编译全部跑不通,ai说linux有这个包,没linux,没测试
5.他居然有redis 默认密码位于/etc/redis.conf 为HG#win@2022,内容为进程内存使用统计信息