Iptime漏洞分析,未授权、未授权修改账号密码、远程调试(后门)漏洞复现
字数 1680 2025-12-08 12:10:10

IPTIME路由器漏洞分析与复现教学文档

一、漏洞概述

1.1 受影响产品

  • 供应商: ipTIME
  • 产品: AX2004M
  • 版本: 14.19.0
  • 架构: Mips 32位小端架构
  • 保护机制: 仅NX保护,无栈保护

1.2 漏洞类型

  • 未授权访问漏洞
  • 未授权修改账号密码
  • 远程调试(后门)漏洞
  • 远程代码执行风险

二、固件分析准备

2.1 信息收集

  • 通过熵值分析判断固件加密状态
  • 解包获取文件系统
  • 识别关键组件位置

2.2 关键文件定位

  • cgibin目录: Web界面操作转换为系统命令的入口点
  • timepro.cgi: 包含system命令,存在RCE嫌疑
  • 所有功能调用均通过cgi文件处理

三、漏洞详细分析

3.1 身份验证逻辑漏洞

3.1.1 核心验证函数:ftext函数

// 认证检查逻辑
if (httpcon_check_session_url() && !httpcon_auth(1, 1)) {
    return 0;  // 认证失败,终止操作
}

3.1.2 漏洞原理

  • httpcon_check_session_url(): 检查URL是否以/sess-bin/开头
  • httpcon_auth(1, 1): 会话认证检查
  • 漏洞点: 当不提供有效Cookie时,!httpcon_auth(1, 1)返回1,绕过认证

3.2 认证绕过路径分析

路径1:远程调试后门链

  • 访问路径:/cgi/d.cgi
  • 条件:不删除Cookie,让逻辑返回错误
  • 触发隐藏的后门代码块

路径2:未授权操作链

  • 访问路径:非/sess-bin/开头的URL
  • 条件:删除Cookie,绕过认证检查
  • 实现未授权访问敏感功能

3.3 关键函数分析

3.3.1 httpcon_check_session_url()

// 功能:检查URL路径前缀
// 返回:1(需要认证)/ 0(可绕过)
if (URL"/sess-bin/"开头) return 1;
else return 0;

3.3.2 会话验证流程

  1. 提取Cookie中的Session ID
  2. 通过check_session("httpcon", session_id, ...)验证有效性
  3. 有效会话返回1,否则重定向到登录页面

四、漏洞复现实践

4.1 未授权访问复现

步骤:

  1. 删除浏览器Cookie
  2. 退出登录状态
  3. 直接访问管理界面URL
  4. 结果: 成功绕过登录直接访问

4.2 未授权修改账号密码

操作流程:

  1. 在修改密码页面抓包
  2. 获取验证码:访问/sess-bin/captcha.cgi
  3. 构造修改密码请求包
  4. 结果: 成功修改管理员密码

4.3 远程调试后门利用

4.3.1 后门密钥识别

  • 密钥字符串:!@dnjsrurelqjrm*&
  • 参数名称:aaksjdkfj

4.3.2 命令执行构造

POST /cgi/d.cgi HTTP/1.1
aaksjdkfj=!@dnjsrurelqjrm*&
cmd=要执行的系统命令

4.3.3 执行流程分析

  1. 检查fdump=on参数设置
  2. 读取rname参数作为文件名
  3. 获取cmd参数拼接命令字符串
  4. 调用popen()执行系统命令

五、技术细节深入

5.1 CGI文件分析重点

  • timepro.cgi: 包含敏感参数和system调用
  • 所有Web操作都通过cgi文件转换系统命令
  • 需要重点关注参数处理和命令拼接逻辑

5.2 漏洞链完整利用

步骤分解:

  1. 绕过认证: 通过删除Cookie使!httpcon_auth(1, 1)返回1
  2. 路径选择: 访问非/sess-bin/开头的URL
  3. 触发后门: 访问/cgi/d.cgi进入调试界面
  4. 命令执行: 提交密钥和cmd参数实现RCE

5.3 安全检测要点

检测指标:

  • 是否存在/cgi/d.cgi文件
  • 检查aaksjdkfj参数处理逻辑
  • 验证popen函数调用位置
  • 测试认证绕过可行性

六、防护建议

6.1 临时缓解措施

  • 禁用远程调试功能
  • 修改默认访问路径
  • 加强会话验证机制

6.2 根本解决方案

  • 修复身份验证逻辑错误
  • 移除后门代码和调试功能
  • 加强输入验证和命令执行防护

七、总结

本漏洞利用身份验证逻辑错误,结合隐藏的后门功能,实现了从未授权访问到远程代码执行的完整攻击链。关键在于理解认证绕过机制和后门触发条件,通过特定的URL访问和参数构造实现漏洞利用。

核心要点记忆

  • 认证绕过:删除Cookie + 非sess-bin路径
  • 后门触发:d.cgi + 特定密钥参数
  • 命令执行:cmd参数直接注入系统命令
IPTIME路由器漏洞分析与复现教学文档 一、漏洞概述 1.1 受影响产品 供应商 : ipTIME 产品 : AX2004M 版本 : 14.19.0 架构 : Mips 32位小端架构 保护机制 : 仅NX保护,无栈保护 1.2 漏洞类型 未授权访问漏洞 未授权修改账号密码 远程调试(后门)漏洞 远程代码执行风险 二、固件分析准备 2.1 信息收集 通过熵值分析判断固件加密状态 解包获取文件系统 识别关键组件位置 2.2 关键文件定位 cgibin目录 : Web界面操作转换为系统命令的入口点 timepro.cgi : 包含system命令,存在RCE嫌疑 所有功能调用均通过cgi文件处理 三、漏洞详细分析 3.1 身份验证逻辑漏洞 3.1.1 核心验证函数:ftext函数 3.1.2 漏洞原理 httpcon_check_session_url() : 检查URL是否以 /sess-bin/ 开头 httpcon_auth(1, 1) : 会话认证检查 漏洞点 : 当不提供有效Cookie时, !httpcon_auth(1, 1) 返回1,绕过认证 3.2 认证绕过路径分析 路径1:远程调试后门链 访问路径: /cgi/d.cgi 条件:不删除Cookie,让逻辑返回错误 触发隐藏的后门代码块 路径2:未授权操作链 访问路径:非 /sess-bin/ 开头的URL 条件:删除Cookie,绕过认证检查 实现未授权访问敏感功能 3.3 关键函数分析 3.3.1 httpcon_ check_ session_ url() 3.3.2 会话验证流程 提取Cookie中的Session ID 通过 check_session("httpcon", session_id, ...) 验证有效性 有效会话返回1,否则重定向到登录页面 四、漏洞复现实践 4.1 未授权访问复现 步骤: 删除浏览器Cookie 退出登录状态 直接访问管理界面URL 结果 : 成功绕过登录直接访问 4.2 未授权修改账号密码 操作流程: 在修改密码页面抓包 获取验证码:访问 /sess-bin/captcha.cgi 构造修改密码请求包 结果 : 成功修改管理员密码 4.3 远程调试后门利用 4.3.1 后门密钥识别 密钥字符串: !@dnjsrurelqjrm*& 参数名称: aaksjdkfj 4.3.2 命令执行构造 4.3.3 执行流程分析 检查 fdump=on 参数设置 读取 rname 参数作为文件名 获取 cmd 参数拼接命令字符串 调用 popen() 执行系统命令 五、技术细节深入 5.1 CGI文件分析重点 timepro.cgi : 包含敏感参数和system调用 所有Web操作都通过cgi文件转换系统命令 需要重点关注参数处理和命令拼接逻辑 5.2 漏洞链完整利用 步骤分解: 绕过认证 : 通过删除Cookie使 !httpcon_auth(1, 1) 返回1 路径选择 : 访问非 /sess-bin/ 开头的URL 触发后门 : 访问 /cgi/d.cgi 进入调试界面 命令执行 : 提交密钥和cmd参数实现RCE 5.3 安全检测要点 检测指标: 是否存在 /cgi/d.cgi 文件 检查 aaksjdkfj 参数处理逻辑 验证 popen 函数调用位置 测试认证绕过可行性 六、防护建议 6.1 临时缓解措施 禁用远程调试功能 修改默认访问路径 加强会话验证机制 6.2 根本解决方案 修复身份验证逻辑错误 移除后门代码和调试功能 加强输入验证和命令执行防护 七、总结 本漏洞利用身份验证逻辑错误,结合隐藏的后门功能,实现了从未授权访问到远程代码执行的完整攻击链。关键在于理解认证绕过机制和后门触发条件,通过特定的URL访问和参数构造实现漏洞利用。 核心要点记忆 : 认证绕过:删除Cookie + 非sess-bin路径 后门触发:d.cgi + 特定密钥参数 命令执行:cmd参数直接注入系统命令