menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 165-YCCMS chevron_right 004-YCCMS 3.4 任意文件上传漏洞(一).md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    004-YCCMS 3.4 任意文件上传漏洞(一).md
    1.45 KB / 2021-07-17 00:01:28
        # YCCMS 3.4 任意文件上传漏洞(一)
    
    ## 一、漏洞简介
    
    ## 二、漏洞影响
    
    YCCMS 3.4
    
    ## 三、复现过程
    
    在不需要登录的情况上传成功
    
    ![5.png](images/2020_05_26/69b5ef1a4cbe493aa11f36f4e175ca74.png)
    
    定位到漏洞位置: controller\CallAction.class.php
    
    ```php
    public function upLoad() {
            if (isset($_POST['send'])) {
                $_logoupload = new LogoUpload('pic',$_POST['MAX_FILE_SIZE']);
                $_path = $_logoupload->getPath();
                $_img = new Image($_path);
                $_img->xhImg(960,0);
                $_img->out();
                //echo $_path;
                $_logoupload->alertOpenerClose('图片上传成功!','..'.$_path);
            } else {
                exit('警告:文件过大或者其他未知错误导致浏览器崩溃!');
            }
        }
    
    ```
    
    然后跟进到类LogoUpload ,位于public\class\LogoUpload.class.php,上传首要关注上传是是否允许上传非图片格式的文件
    
    ```php
    private function checkType() {
            if (!in_array($this->type,$this->typeArr)) {
                Tool::alertBack('警告:LOGO图片必须是PNG格式!');
            }
        }
    
    private $typeArr = array('image/png','image/x-png');//类型合集
    
    ```
    
    根据Content-Type的值来判断是否是图片格式,只要Content-Type是这两种类型就可以,那直接伪造Content-Type就可以了
    
    ![6.png](images/2020_05_26/6dda804937cb4ca4b3d58c40df85ba94.png)
    
    ## 参考链接
    
    > https://xz.aliyun.com/t/7748#toc-4
    
    
    
    links
    file_download