某日志设备漏洞挖掘-从后台RCE到前台RCE
字数 1019 2025-08-09 13:33:42

某日志设备漏洞挖掘:从后台RCE到前台RCE

前言

本文详细记录了对某日志设备的漏洞挖掘过程,从信息收集到后台RCE,再到前台RCE的完整流程。该漏洞已通知厂商并完全修复。

信息收集阶段

1. 获取设备使用手册

  • 重点关注以下功能点:
    • 网络连通性配置
    • 日志查看功能
    • 系统备份功能
    • 默认凭证信息

2. 获取系统源码

  • 发现目标设备提供系统源码下载
  • 下载后本地审计Web目录源码

3. 查找默认凭证

  • 通过官方教学帖子发现默认账号密码
  • 尝试使用默认凭证登录后台成功

后台RCE漏洞挖掘

1. 可疑文件分析

  • 发现command-html.php文件可疑
  • 该文件将cmd参数传递给cmdhandle.php

2. 命令执行分析

  • 检查cmdhandle.php文件:
    • 无任何过滤直接执行传入的命令
    • 可能是设备的调试页面

3. 漏洞验证

  • 直接访问cmdhandle.php并传入命令
  • 确认具有高权限执行能力
  • 成功写入Webshell获取控制权

前台RCE漏洞挖掘

1. 重新审计代码

  • 由于后台Webshell失效,转向寻找前台RCE

2. 配置文件分析

  • 检查配置文件发现:
    • 配置路径信息
    • 默认MySQL账号密码
    • 无直接可利用的关键信息

3. 认证机制分析

  • 发现后台功能使用chksession进行身份验证
  • 目标转向寻找无身份验证的文件

4. 快速筛选方法

  • 使用命令删除所有包含身份验证的文件:
    rm -rf $(grep -ril 'chksession()' ./)
    
  • 大幅减少需要审计的文件数量

5. 发现前台RCE

  • 通过关键字搜索发现命令执行点
  • sy_addmount.php文件中:
    • username参数用户可控
    • 直接拼接进命令执行部分
    • 无任何过滤措施

6. 漏洞验证

  • 发送POST请求:
    POST /account/sy_addmount.php
    username=|id
    
  • 成功执行系统命令
  • 发现多处类似无验证命令拼接漏洞

总结

关键漏洞点

  1. 默认凭证未修改:设备使用默认账号密码
  2. 后台调试接口暴露cmdhandle.php无过滤执行命令
  3. 前台命令注入:多个文件存在无验证的命令拼接

修复建议

  1. 强制修改默认凭证
  2. 移除或严格限制调试接口访问
  3. 对所有用户输入进行严格过滤和验证
  4. 实施最小权限原则
  5. 对命令执行函数使用白名单限制

审计技巧

  1. 优先查找命令执行函数:system(), exec(), passthru()
  2. 快速筛选无认证文件的方法
  3. 关注用户可控参数到危险函数的传递路径

本案例展示了从信息收集到漏洞挖掘的完整过程,强调了默认凭证管理和输入验证的重要性。

某日志设备漏洞挖掘:从后台RCE到前台RCE 前言 本文详细记录了对某日志设备的漏洞挖掘过程,从信息收集到后台RCE,再到前台RCE的完整流程。该漏洞已通知厂商并完全修复。 信息收集阶段 1. 获取设备使用手册 重点关注以下功能点: 网络连通性配置 日志查看功能 系统备份功能 默认凭证信息 2. 获取系统源码 发现目标设备提供系统源码下载 下载后本地审计Web目录源码 3. 查找默认凭证 通过官方教学帖子发现默认账号密码 尝试使用默认凭证登录后台成功 后台RCE漏洞挖掘 1. 可疑文件分析 发现 command-html.php 文件可疑 该文件将 cmd 参数传递给 cmdhandle.php 2. 命令执行分析 检查 cmdhandle.php 文件: 无任何过滤直接执行传入的命令 可能是设备的调试页面 3. 漏洞验证 直接访问 cmdhandle.php 并传入命令 确认具有高权限执行能力 成功写入Webshell获取控制权 前台RCE漏洞挖掘 1. 重新审计代码 由于后台Webshell失效,转向寻找前台RCE 2. 配置文件分析 检查配置文件发现: 配置路径信息 默认MySQL账号密码 无直接可利用的关键信息 3. 认证机制分析 发现后台功能使用 chksession 进行身份验证 目标转向寻找无身份验证的文件 4. 快速筛选方法 使用命令删除所有包含身份验证的文件: 大幅减少需要审计的文件数量 5. 发现前台RCE 通过关键字搜索发现命令执行点 sy_addmount.php 文件中: username 参数用户可控 直接拼接进命令执行部分 无任何过滤措施 6. 漏洞验证 发送POST请求: 成功执行系统命令 发现多处类似无验证命令拼接漏洞 总结 关键漏洞点 默认凭证未修改 :设备使用默认账号密码 后台调试接口暴露 : cmdhandle.php 无过滤执行命令 前台命令注入 :多个文件存在无验证的命令拼接 修复建议 强制修改默认凭证 移除或严格限制调试接口访问 对所有用户输入进行严格过滤和验证 实施最小权限原则 对命令执行函数使用白名单限制 审计技巧 优先查找命令执行函数: system() , exec() , passthru() 等 快速筛选无认证文件的方法 关注用户可控参数到危险函数的传递路径 本案例展示了从信息收集到漏洞挖掘的完整过程,强调了默认凭证管理和输入验证的重要性。