1. 烽火HG5143D光猫的权限困境与破解动机家里换了电信宽带后最让我头疼的就是这个烽火HG5143D光猫。运营商默认把它配置成了强制网关模式所有流量都必须经过光猫的路由功能。对于普通用户可能无所谓但对于我这种习惯用软路由做流量控制、需要部署旁路由的网络爱好者来说简直是噩梦。这个光猫运行的是Linux系统内核版本3.18.11大概率是基于OpenWRT魔改的。但电信把SSH和Telnet都关了普通用户后台只有最基础的设置选项。更坑的是超级管理员账号被隐藏连修改网关模式的入口都没有。我试过网上流传的通用密码、恢复出厂设置等方法全都无效。这就是为什么需要另辟蹊径——通过抓包和文件系统分析来找突破口。2. 抓包分析的关键突破口2.1 准备工作与环境搭建首先需要准备一台Windows电脑我用的是Win10Fiddler Classic抓包工具新版Fiddler Everywhere反而不好用格式化为FAT32的U盘NTFS格式光猫可能不识别把电脑和光猫192.168.1.1接在同一个局域网建议用网线直连减少干扰。Fiddler安装后要开启HTTPS解密Tools Options HTTPS虽然光猫管理页面是HTTP的但有些接口可能会跳HTTPS。2.2 捕获关键CGI接口在光猫后台操作时我发现一个规律每次点击存储管理页面都会触发一个特殊的CGI请求。通过Fiddler过滤192.168.1.1的流量重点关注/cgi-bin/路径下的请求。最终锁定两个关键接口目录遍历接口http://192.168.1.1/cgi-bin/webproc?getpage/usr/www/...修改getpage参数可以访问任意路径比如改成getpage/etc就能列出/etc目录文件复制接口http://192.168.1.1/cgi-bin/webproc?var:copy/tmpvar:dest/mnt/usb1_1/这个接口竟然没有权限验证可以直接把光猫内部文件复制到U盘注意操作前建议先备份原始请求万一出错可以恢复。我在测试时不小心把/dev目录复制到U盘导致U盘出现一堆设备文件。3. 获取超级管理员凭证的实战步骤3.1 提取关键日志文件通过文件复制接口我把/tmp和/www目录复制到了U盘。在/tmp/web_modelog文件中发现了宝藏——用文本编辑器打开后搜索telecom会看到类似这样的字段loid_passtelecomadmin123456 telecomadmintelecomadmin这就是超级管理员账号telecomadmin和密码但直接登录会失败因为电信做了手脚。3.2 解除隐藏用户限制需要在浏览器访问特殊页面解锁隐藏账号http://192.168.1.1:8080/html/logoffaccount.html勾选显示隐藏用户后保存。这时再用telecomadmin和刚才找到的密码登录就能进入超级管理员后台。4. 开启Telnet服务的曲折历程4.1 后台界面的限制即便拿到超级权限我在后台界面里死活找不到Telnet开关。后来分析/www目录才发现电信把功能入口都删了但服务本身还在系统里。4.2 手动激活Telnet在/www/cgi-bin/目录下发现一个关键文件telnetenable.cgi用VSCode查看源码发现只需要构造特定请求http://192.168.1.1:8080/cgi-bin/telnetenable.cgi?telnetenable1访问后返回success就表示Telnet已开启。实测发现光猫重启后Telnet会关闭需要再次激活。4.3 Telnet登录与提权连接Telnet后使用默认凭证登录用户名telecom 密码nE7jA%5m进入后查看/tmp/telsu文件获取root密码cat /tmp/telsu输出格式类似root:x:0:0:root:/root:/bin/bash第二个冒号后的字符串就是root密码。5. 网络架构改造的终极方案5.1 解除网关锁定在root权限下修改网络配置vi /etc/config/network找到PPPoE相关配置将option ipv6 1改为0关闭IPv6避免干扰然后注释掉原有的WAN口配置。5.2 配置桥接模式新增桥接配置config device option name br-lan option type bridge list ports eth0 list ports eth15.3 旁路由部署实践把光猫改回桥接模式后我的软路由运行OpenWRT重新接管拨号。拓扑结构变成光猫桥接 → 软路由拨号流量控制 → 交换机 → 各终端设备实测网络延迟从原来的15ms降到5ms而且可以自由配置DDNS、端口转发等高级功能。整个改造过程中最耗时的其实是排查电信的隐藏限制。比如他们修改了/etc/shadow的权限常规方法看不到密码哈希。后来发现密码其实明文存储在/tmp下的日志里这种安全措施真是让人哭笑不得。