锐*源码-php审计
字数 1062 2025-08-09 19:33:17
锐捷网络-EWEB网管系统代码审计报告
1. 系统路由规则分析
锐捷EWEB网管系统采用以下两种路由规则:
-
基于Action的路由:
/文件夹名/文件名.php?a(action)=flowEasy(方法名) -
基于Controller的路由:
/文件夹名/文件名.php?c(controller)=flowEasy(控制器名)
示例说明
- 访问某个控制器的方法可以通过:
或/mvc/controller.php?a=index/mvc/controller.php?c=index
2. 关键漏洞分析
2.1 命令执行漏洞
漏洞位置
通过全局搜索关键词exec发现关键点。
漏洞原理
-
系统使用
P方法(位于/mvc/lib/core.function.php)接收POST参数 -
攻击者可构造以下POST参数:
mode_urlcommandanswer
-
当
mode_url被赋值为exec时,系统会将这三个参数的值传递到/mvc/lib/core.function.php类的execCli方法中 -
执行流程:
- 检查
command参数是否存在且不为空 - 调用
php_exec_cli函数(疑似系统内部函数)执行命令
- 检查
利用条件
- 必须使用POST请求
- 必须包含以下参数:
mode_urlcommand(用于传递要执行的命令)answer
- 路由参数
a必须设置为index
漏洞利用示例
POST /mvc/controller.php?a=index HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
mode_url=&command=whoami&answer=
3. 审计步骤详解
3.1 关键点定位
- 全局搜索
exec关键词 - 分析
/mvc/lib/core.function.php文件 - 重点关注
P方法和execCli方法
3.2 漏洞验证流程
- 确认
core.function.php文件存在且可访问 - 检查
execCli方法是否对输入参数进行了充分过滤 - 验证
php_exec_cli是否可直接执行系统命令
4. 防御建议
-
输入过滤:
- 对
command参数进行严格过滤 - 使用白名单机制限制可执行命令
- 对
-
权限控制:
- 限制执行命令的用户权限
- 使用沙箱环境执行敏感操作
-
代码修复:
- 移除不必要的命令执行功能
- 使用更安全的替代方案(如特定API)
-
日志监控:
- 记录所有命令执行操作
- 设置异常命令执行告警
5. 扩展审计建议
- 检查系统中其他使用
exec、system、passthru等危险函数的地方 - 审计所有接收外部输入并直接用于系统操作的功能点
- 检查文件包含、反序列化等常见漏洞点
6. 参考信息
- 漏洞文件位置:
/mvc/lib/core.function.php - 关键方法:
P()、execCli() - 危险函数:
php_exec_cli(疑似)
本报告详细分析了锐捷EWEB网管系统的命令执行漏洞,包括漏洞原理、利用方式和防御建议,可作为代码审计和安全加固的参考。