关键漏洞信息 漏洞标题 Buffer Overflow / Command Injection (insufficient input validation) in UTT Jinqi 750W /goform/formPdbUpConfig (Denial of Service / Potential RCE) 概要 厂商: UTT (AiTai) 产品: Jinqi 750W 受影响的固件: <= v5v3.2.2-191225 固件下载: 链接 漏洞类型: 缓冲区溢出 / 命令注入 / 输入验证不足 影响: 一个未授权或已授权的攻击者(取决于设备访问和认证配置)可以构造一个恶意的POST请求到/goform/formPdbUpConfig,利用policyNames参数。该参数未经适当验证,并最终用于格式化系统调用(如doSystem("xx%s", Var);),可能导致缓冲区溢出和/或命令执行,引发设备崩溃(DoS)或在特定条件下可能的远程代码执行。 技术详情 /gfoform/pdbupconfig被cover了之后,教程演示了如何通过policyNames参数注入和创建web可读文件。 概念验证(PoC) 发送以下POST请求到设备的HTTP管理接口(例如使用 192.168.1.1 ): 重现步骤 1. 确保一个Jinqi 750W设备正在运行受影响的固件(<= v5v3.2.2-191225),并且其web管理界面可访问(例如 http://192.168.1.1 )。 2. 在需要时使用有效的管理凭证。PoC演示了Digest认证请求头;调整为符合设备的认证方式。 3. 向/goform/formPdbUpConfig发送包含恶意policyNames值的特制请求(参视频PoC)。 4. 会观察到以下一种或多种现象: - 在可写位置(如 /etc_ro/web/1.txt )创建文件,表示命令执行。 - HTTP服务崩溃、进程重启或设备重启,表示缓冲区溢出/DoS。 - 任何相关的日志或系统信息可以通过串口、SSH或web界面观察到。 代码和二进制分析总结 输入处理缺少对 policyNames 的严格验证(没有严格的长度检查,没有有效值的白名单)。 用户控制的数据被传递到格式化上下文中,最终进入一个系统调用路径(有格式字符串问题和shell命令注入的风险)。 代码很可能使用了不安全的格式化函数(例如 sprintf 、 vsprintf )或构造shell命令字符串用于 system() / popen() 而没有适当的转义。 当HTTP服务以高权限运行时,利用可能会有严重的后果(文件修改、权限坚持、配置篡改)。 影响 即时影响: 远程攻击者可以导致设备崩溃(拒绝服务)或根据固件和环境执行任意shell命令。 进一步风险: 如果文件系统是可写的并且web可访问区域可修改,攻击者可以放置webshell或脚本以实现长期访问和横向移动。 影响范围: 所有运行受影响固件版本的Jinqi 750W设备。 缓解和修复 厂商/固件修复 1. 严格验证输入: 对 policyNames 和其他参数进行白名单处理允许的值; 强制最大长度和可接受的字符集。 2. 避免基于shell的命令构造: 用更安全的API或style调用替换shell命令组成,这些API或调用将参数作为数组传递,而不是单个shell解释字符串。 3. 使用安全的格式化函数: 用 snprintf 替换 sprintf / vsprintf ,并在每次写入时验证缓冲区边界。 4. 以最少权限运行服务: 确保HTTP服务以最小权限运行,无法修改临界文件系统区域。 5. 静态/动态分析和模糊测试: 为HTTP参数解析和命令执行路径添加单元测试和模糊测试。 管理员操作缓解措施 1. 固件升级: 一旦厂商发布修复固件,请应用补丁。 2. 限制管理访问: 通过ACL、VPN或管理VLAN限制对管理接口的访问; 不要对公共互联网开放。 3. 加强身份验证: 使用强密码、禁用默认帐户并尽可能更改默认管理端口。 4. 监测和检测: 监测异常HTTP请求、意外文件创建或频繁进程重启; 启用日志记录和警报。 负责任的披露建议 1. 向UTT提交完整报告(包括PoC、截图和重现步骤)。建议一个60天的初始响应窗口进行修复。 2. 厂商确认修复并发布固件后,发布公共咨询,包括缓解步骤和检测指南。 3. 如果厂商没有响应,考虑升级到CERT或其他协调披露渠道,在广泛可用之前公开漏洞。避免在广泛可用补丁之前发布可利用的PoC。