• 极致CMS两处漏洞复现/存储xss/文件上传Getshell


    0x00产品介绍

    影响产品/版本:

    极致CMS

    =>v 1.5 <=v 1.7

    厂商目前已修复

    见官网更新

    0x01测试过程:

    漏洞名称:存储xss,前台打后台管理员cookie

    黑盒过程:

    首先我们在后台创建一个允许用户发布文章的栏目

    前台发表文章,xss在标题位置

    来到后台,点开标题,成功弹框

    成功执行与存储


    打COOKIE试试,成功获取cookie


    成功获取cookie,因为是本地演示的,所以就不用xss平台来打了

    白盒过程:

    根据一路追踪
    发现目录A是网站目录的后台文件,后端文件审计没问题
    来看看前端文件tql
    代码审计发现是问题出现在前端文件article-list.html内的问题
    191行 这里这里没有实体化编码导致的后台存储xss漏洞
    输出函数未经过滤没有实体化编码

    }
                    ,cols: [[ //表头
                      {field: 'id', title: 'ID', 50, sort: true, fixed:'left'}
                      ,{type:'checkbox'}
                      ,{field: 'orders', title: '排序',  100, edit:'text',sort: true}
                      ,{field: 'new_tid', title: '栏目', sort: true}
                      ,{field: 'tuijian', title: '推荐', templet: '#tuijian'}
                      ,{field: 'title', title: '标题', edit:'text', sort: true}
                      ,{field: 'new_litpic', title: '缩略图',templet: '#litpic'} 
                      {foreach $fields_list as $v},{field: '{$v['field']}', title: '{$v['fieldname']}'}{/foreach}
                      ,{field: 'new_isshow', title: '审核',100, templet: '#isshow'}
                      ,{field: 'new_addtime', title: '时间'}
                      {if(checkAction('Article/editarticle') || checkAction('Article/deletearticle') || checkAction('Article/copyarticle'))}
                      ,{field: '', title: '操作',280, toolbar: '#rightbar', fixed:'right'}
                      {/if}
    
                    ]]
                  })

    文件article-list.html

    修复建议 1.去掉该功能,很鸡肋。没鸟用
    2.在输出函数上实体化编码
    3.文章发表那块增加xss等过滤函数

    漏洞2:文件上传,Getshell

    极致cms >=1.5 <= v1.7 版本存在直接Getshell漏洞

    黑盒过程:

    进入后台发现了一个有意思的东西后台--->系统设置--->基本设置--->高级设置http://localhost/admin.php/Index/index.html

    这里可以设置允许前台上传文件,还可以设置文件类型,如果是加入PHP后缀的,结果如何?后台拿不到shell,前台不直接打了吗。

    去看看前台上传点 (http://localhost/login/index.html) 在这里注册一个用户登录进去,点击发布文章


    上传成功,右键点击访问上传的php文件

    白盒过程:

    在安装的时候,系统会默认写入一个允许上传的文件类型到数据库,再配合上允许前台上传这个功能,可直接后台修改,成功上传php文件/install/db.php
    INSERT INTO `jz_sysconfig` (`id`,`field`,`title`,`tip`,`type`,`data`) VALUES ('21','fileType','允许上传文件类型', NULL,'0','pdf|jpg|jpeg|png|zip|rar|gzip|doc|docx|xlsx');
    增加PHP后缀到后台即可


    再看前台用户上传处的检查/Home/c/CommonController.php

    //检测是否允许前台上传文件
            if(!$this->webconf['isopenhomeupload']){
               $data['error'] =  "Error: 已关闭前台上传文件功能";
               $data['code'] = 1004;
               JsonReturn($data);
            }
            foreach($_FILES[$file]['name'] as $k=>$v){
                $pix = explode('.',$v);
                $pix = end($pix);
                $fileType = webConf('fileType');
                if(strpos($fileType,strtolower($pix))===false){
                    $data['error'] =  "Error: 文件类型不允许上传!";
                    $data['code'] = 1002;
                    JsonReturn($data);
                }

    Ok这里很明了,只与设置的允许上传类型做了对比

  • 相关阅读:
    用一个案列详细讲解UITextFiled
    iOS开发中的内存分配(堆和栈)
    一次性解决导航栏的所有问题
    iOS 枚举的巧用
    iOS高仿app源码:纯代码打造高仿优质《内涵段子》
    如何实现百度外卖APP个人中心头像"浪"起来的动画效果
    手把手教你修改iOS版QQ的运动步数
    UIView的layoutSubviews和drawRect方法何时调用
    内存恶鬼drawRect
    iOS 离屏渲染的研究
  • 原文地址:https://www.cnblogs.com/0daybug/p/13246722.html
Copyright © 2020-2023  润新知