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 会话验证流程
- 提取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 命令执行构造
POST /cgi/d.cgi HTTP/1.1
aaksjdkfj=!@dnjsrurelqjrm*&
cmd=要执行的系统命令
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参数直接注入系统命令