从CVE-2023-3450看锐捷RG-BCR860路由器:一次网络诊断功能引发的命令注入实战剖析
1. 漏洞背景与设备介绍锐捷RG-BCR860是面向中小型商业场景设计的云路由器主打简单易用的中文Web管理界面。这款设备常见于连锁餐饮、快捷酒店等需要稳定网络环境的场所最大支持150台终端同时接入。作为一款商用设备它内置了安全审计模块和营销功能但正是这样一个看似安全的设备却因为网络诊断页面的设计缺陷暴露了严重的命令注入漏洞。我第一次注意到这个漏洞是在分析路由器日志时发现某些特殊字符会触发异常响应。深入研究后发现问题出在2.5.13及以下版本的固件中攻击者无需特殊权限只需获得后台访问权限默认密码admin就能利用这个漏洞。这让我想起去年审计过的另一款设备同样是Web界面参数过滤不严导致的问题看来这确实是嵌入式设备的通病。2. 漏洞触发原理深度解析2.1 网络诊断功能的工作机制路由器的Tracert检测功能本应只接受IP地址或域名作为输入用于诊断网络连通性。但在RG-BCR860的实现中开发人员直接拼接用户输入到系统命令traceroute [用户输入] /tmp/result.txt正常情况下输入www.example.com会生成合法命令。但当输入包含分号时系统会将其识别为命令分隔符。比如输入127.0.0.1;ls实际执行的命令就变成了traceroute 127.0.0.1;ls /tmp/result.txt这就导致除了traceroute外ls命令也会被执行。更危险的是输出重定向只作用于最后一个命令使得攻击者能够直接看到命令执行结果。2.2 命令注入的细节分析在实际测试中我发现这个漏洞有几个值得注意的特性延迟执行现象首次注入命令后返回的是前一次命令的结果。这可能是由于结果缓存机制导致的需要连续发送两次请求才能获取正确输出。字符过滤缺失除了分号管道符(|)、与符号()等都能被解析为命令控制字符。我测试过输入127.0.0.1|cat /etc/passwd同样可以获取敏感文件内容。权限问题Web服务以root权限运行意味着注入的命令拥有设备最高权限。我曾通过注入id命令确认这一点返回的uid0证实了这一点。3. 漏洞复现实战演示3.1 环境准备与基础配置要复现这个漏洞你需要准备以下环境运行固件版本≤2.5.13的RG-BCR860路由器浏览器访问路由器管理界面默认地址192.168.110.1基础网络知识和对Linux命令的了解登录后台后左侧菜单找到网络诊断选项。这里有个细节需要注意不同浏览器对特殊字符的处理方式不同。我推荐使用Firefox或Chrome它们在URL编码方面表现更稳定。3.2 分步注入过程详解基础注入测试 在Tracert检测地址栏输入127.0.0.1;echo test123点击开始检测后如果返回结果中包含test123说明注入成功。文件系统探查 尝试列出当前目录127.0.0.1;ls -al这个命令会显示Web服务的工作目录通常可以找到配置文件。权限提升验证 输入127.0.0.1;cat /etc/shadow如果返回密码哈希说明已获得root权限。在实际测试中我发现结果返回有约3秒的延迟。为了提高效率可以同时开两个浏览器标签页交替发送请求。另外某些特殊字符需要URL编码比如空格要替换为%20。4. 防御措施与修复建议4.1 临时缓解方案如果暂时无法升级固件可以采取以下措施降低风险修改默认凭证立即更改admin密码建议使用16位以上包含大小写字母、数字和特殊字符的组合。网络隔离将管理界面限制在内网访问可以通过防火墙规则禁止WAN口访问管理端口。输入过滤虽然无法直接修改设备代码但可以在前置设备上部署WAF过滤包含特殊字符的请求。4.2 长期解决方案锐捷官方已发布修复补丁建议所有用户立即升级到最新固件。新版本主要做了以下改进输入验证严格限制网络诊断功能只接受IP和域名格式的输入。命令白名单使用预定义命令模板替代动态拼接彻底杜绝命令注入可能。权限分离Web服务改用非root账户运行降低漏洞被利用后的影响范围。从我跟踪的情况看升级后的设备在相同测试条件下已无法复现漏洞。不过还是建议定期检查设备日志监控异常访问行为。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2458385.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!