金山 V8 终端安全系统 pdf_maker.php 命令执行漏洞

漏洞描述

金山 V8 终端安全系统 pdf_maker.php 存在命令执行漏洞,由于没有过滤危险字符,导致构造特殊字符即可进行命令拼接执行任意命令

漏洞影响

金山 V8 终端安全系统

FOFA

app="猎鹰安全-金山V8+终端安全系统"

漏洞复现

存在漏洞的文件为

Kingsoft\Security Manager\SystemCenter\Console\inter\pdf_maker.php
<?php
require_once (dirname(__FILE__)."\\common\\HTTPrequest_SCpost.php");
/*
{
   "kptl" :
{
"set_exportpdf_cmd" :
    {
    "url" : "http://172.18.254.146/report/system/main.php?userSession=5784727B-7AEA-4EFE-B0CB-DDD6DA1CABD3&guid=1AC380D9-                580C-49A8-B6EC-787CF50FA928&VHierarchyID=ADMIN",
    "fileName":"test.pdf"
    }
}
*/


    //$post = file_get_contents("php://input");

    /*
    $post = array("kptl"=>
            array("set_exportpdf_cmd"=>array(
                "url"=>"http://172.18.254.146/report/system/main.php?userSession=5784727B-7AEA-4EFE-B0CB-DDD6DA1CABD3&guid=1AC380D9-580C-49A8-B6EC-787CF50FA928&VHierarchyID=ADMIN",
                "fileName"=>"test1234.pdf"
                )
            ));
            */






    $url = $_POST["url"];
    $fileName =  $_POST["fileName"];
    $batName=$fileName;
    if ($url == null || $fileName == null)
    {
        $return["nResult"] = __LINE__;
        echo json_encode($return,JSON_UNESCAPED_UNICODE);
        return ;
    }

    $url = base64_decode($url);
    $nameStr = base64_decode($fileName).date("Y-m-d").".pdf";
    $fileName="..\\htmltopdf\\".$nameStr;

    system('mkdir ..\\htmltopdf');


    $cmd = '..\\..\\wkhtmltopdf.exe "'.$url.'" '.$fileName;
    if (getApacheVersion()>=24) { //apache 2.4 php 7 版本 只能在  bat中运行
        $cmd =" del ".$fileName;

        exec($cmd);
        $url_= str_replace('%','%%', $url);
        $cmd = '..\\..\\wkhtmltopdf.exe "'.$url_.'" '.$fileName;
        $batName ="exec_wkhtmltopdf.bat";
        $myfile = fopen($batName , "w");
        //$cmd =iconv("UTF-8", "gbk", $cmd );
        fwrite($myfile, $cmd);
        fclose($myfile);
        $cmd =$batName ;
        exec($cmd);
        $cmd =" del ".$batName;
        exec($cmd);
    }else
    {
    system($cmd);
    }
    // echo $url;
    $return = array("nResult" => "0","fileName" =>$nameStr,"url"=>$url);
    echo json_encode($return,JSON_UNESCAPED_UNICODE);

?>
这里传入 base64加密的拼接命令即可执行任意命令

漏洞POC

Last updated

Was this helpful?