java 富文本 xss_KindEditor开源富文本编辑框架XSS漏洞

article/2025/9/16 16:11:19

原标题:KindEditor开源富文本编辑框架XSS漏洞

*原创作者:卫士通 安全服务事业部 天龙,叶龙,本文属FreeBuf原创奖励计划,未经许可禁止转载

0×01 前言

KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。

KindEditor 使用 Java 编写,可以无缝地与 Java、.NET、PHP、ASP等程序集成,比较适合在CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。

在最近的渗透测试工作中,接触到了KindEditor输入框架,经过几番测试发现代码对XSS的防护还是挺全面的,感觉到底是开源代码,就是不一样,但是总感觉哪里不对,也就边放弃边继续。

最终发现该框架还是存在一个XSS注入的问题,而且由于利用框架的时候都会将用户输入存入数据库,并对其他用户进行展示,进而引发了危害巨大的存储型XSS漏洞。

0×02 测试过程

首先,你得找到一个(女朋友)使用这种框架的网站,通过查看加载的js文件确认是否包含KindEditor框架(外观如下图):

c07e2ce18977b4353a5419f0cead5636.png

然后开始测试,随意输入一段字符

5fa879b59c5363e6f224233bdaa7c3bf.png

我们找的示例网站中,在本地对提交的数据进行了编码,但是很明显可以看出是ASCII Hex编码,解码看到明文。

然后尝试输入可以引入标签的尖括号<> (下图中的
是客户端自己添加的)

ef8dbe8a3a338e6af120581b0387a7e3.png

解码后,我们可以看到开发人员在本地对尖括号进行了HTML编码,上burp,直接截取重放,过了客户端编码。

可是当我们输入<>时,我们看到了返回结果中已经将该位置的内容重置成了test1(也就是用户名)

c53839c0aa3a29d6ef47f9e12f943362.png

这也就意味着服务端中的过滤机制进行了正则匹配的过滤,只要<>包含特定内容,就直接替换成一个固定值。

这样我们就不能成功的引入<>标签了,也就很难加入<>标签,但是该位置的内容也不能结合属性标签进行注入,所以我们还是要想新的办法来先过服务端的过滤机制。

尝试对<>进行编码,但是很不幸的是,进行了编码后,发现返回的内容要么乱码,要么是标签被作为内容直接插入,如下图(如果是标签会被标识为蓝色)。

d8fb2cfb9bab7b34fe5a8be1460739e6.png

这就意味着服务端是过了,但是KindEditor对输出的内容进行了转义,使其不能作为标签插入HTML页面中。

接着又尝试输入空标签<>

输入空标签之后,我们看到<>标签已经被完整返回回来了,但是总感觉开源代码不会这么简单,果然在相关页面上,alert语句并没有被执行,但是在html文档中可以看到<>已经被成功识别为一个标签了。

9fe1c60d44fade20a6435d9229d37265.png

分析原因,应该是,在我们的<>标签插入html文档中的时候,整个页面已经load完成了,所以<>标签并没有执行。

既然,<>标签没有被执行,那我们可以通过事件方案来触发进行执行啊,所以开始引入onclick事件,

d10cc22ad07fd805e8f7efff82d055b6.png

从返回结果来看,一切都那么完美,感觉就要胜利了,然而当我们将鼠标点上去的时候,所有的幻想都破灭了,弹出一个新标签页,然后什么也没有了,说好的弹窗呢。查看页面

36845a1ad8fa832c0ecc4322389798eb.png

完美的开源代码,将事件处理函数修改了,所以不能成功执行。通过测试其他的事件和使用Java伪协议,都是同样的问题,在on和java之后添加了下划线。到底是开源代码,服了,好吧,该放弃这个女朋友了。

但是总感觉哪里有问题,不该是这样的结局,开始重新整理思路: <>空标签可以帮我们绕过服务端基本的过滤机制,但是新加入的<>不能被成功执行,事件处理函数又被KindEditor给清洗了,那可不可以试试其他标签,不需要其他通过事件监听来触发的标签呢,还真被我找到了,成功穿过KindEditor的围堵。

2c927dea7f9bf46780ea365239ffaae8.png

ea91596979a4419bae432935c9571cef.png

终于,看到了我们最喜爱的弹窗,收工。(由于还在于框架作者进行联系,所以这里不方便透漏具体的注入代码)。

0×03 源码分析

为了确定是网站开发人员使用的问题还是KindEditor本身的问题,我们前往官网下载它的源代码进行分析。

整个项目的目录结构如下

3595a2cbf18930c65be4004ed7b993c9.png

打开KindEditor-all.js文件,开始分析。

如果KindEditor本身做了处理,肯定是以关键字filter定义的,全局搜索filter。发现代码中filter相关的参数被_formatHtml函数调用。

c0f28f91a7f2f1d82b0880dcccc0810a.png

找到该函数的定义

57855f4df02193a03436b4d55a235af8.png

从函数定义中我们可以看到KindEditor确实对输入内容进行了相关的过滤,只是在过滤时并未完美处理所有的输入情况。通过分析源代码我们也可以看到,KindEditor确实也没有对我们输入的标签进行过滤,从而引发了XSS注入的问题。

0×04 总结

从KindEditor的官方网站http://kindeditor.net的案例页面我们可以看到国内还是有很多网站使用了相关技术,下面是一些使用这些网站的厂商。

6b05cdc5531b2cb7db90addc4a9399df.png

b005c3a6b634080c9ebe2cd8605c9c1c.png

但是之后,对上面提到的网站进行测试,发现其中的一部分网站已经没有在使用相关代码了,但是从KindEditor的github主页上看到还是有很大一部分人关注这一项目,这就证明还是有很多人在使用这一框架。

只要使用就可能会存在这样的存储型的XSS漏洞,至于XSS漏洞的危害,就不需要多说了。

0×05 防范措施

在开发过程中开发人员不能过度依赖第三方库所做的防范,还是需要在内容输出时进行Html编码,或者完善已有的过滤规则,从而杜绝类似的注入攻击。

0×06 感谢

感谢斌爷在整个测试过程中对我前端相关技术的指导,这个女朋友有你一半。

*原创作者:卫士通 安全服务事业部 天龙,叶龙,本文属FreeBuf原创奖励计划,未经许可禁止转载返回搜狐,查看更多

责任编辑:


http://chatgpt.dhexx.cn/article/iy5XLDOU.shtml

相关文章

CTFshow——信息收集11-20

Web11 解题方法&#xff1a; 发现本题没有可配置环境&#xff0c;题目提示域名其实也可以隐藏信息&#xff0c;比如ctfshow.com就隐藏了一条信息 我们在网络搜索一个域名服务对ctfshow.com进行查询 查看更多&#xff0c;在TXT记录中发现了flag Web12 解题方法&#xff1a;…

kindeditor=4.1.5文件上传漏洞复现

0x00&#xff1a;背景 KindEditor是一套开源的HTML可视化编辑器&#xff0c;主要用于让用户在网站上获得所见即所得编辑效果&#xff0c;兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。 0x01:漏洞描述 漏洞存在于小于等于kindeditor4.1.5 编辑器里&#xff0c;你能上传…

KindEditor编辑器上传修改拿shell漏洞

法客论坛《team.f4ck.net》 90sec论坛《www.90sec.org》 疯子博客《http://Madman.in》 作者&#xff1a;relywind 影响版本&#xff1a; KindEditor 3.5.2~4.1 漏洞利用&#xff1a; 打开编辑器&#xff0c;将一句话改名为1.jpg 上传图片&#xff0c; 打开文件管理&#xff0c…

kindeditor在服务器上上传图片显示叉叉,什么原因?,kindeditor=4.1.5 文件上传漏洞利用...

kindeditor<4.1.5 文件上传漏洞 - Kindeditor <4.1.5 file upload vulnerability and use 漏洞存影响版本&#xff1a;小于等于4.1.5的kindeditor 编辑器 漏洞影响&#xff1a;上传任意. txt 和. html 文件 漏洞存在动态脚本语言&#xff1a; php/asp/jsp/asp.net 漏洞存…

[应用漏洞]KindEditor<=4.1.5 文件上传漏洞利用

一、KindEditor KindEditor 是一套开源的在线HTML编辑器&#xff0c;主要用于让用户在网站上获得所见即所得编辑效果 二、漏洞介绍 影响版本&#xff1a;KindEditor 3.5.2~4.1 简介&#xff1a;Kindeditor能够上传doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2,wps,p…

网站漏洞修补 Kindeditor上传漏洞

2019独角兽企业重金招聘Python工程师标准>>> 很多建站公司都在使用Kindeditor开源的图片上传系统&#xff0c;该上传系统是可视化的&#xff0c;采用的开发语言支持asp、aspx、php、jsp,几乎支持了所有的网站可以使用他们的上传系统&#xff0c;对浏览器的兼容以及手…

Kindeditor 漏洞导致网站被植入木马文件的解决办法

很多建站公司都在使用Kindeditor开源的图片上传系统&#xff0c;该上传系统是可视化的&#xff0c;采用的开发语言支持asp、aspx、php、jsp,几乎支持了所有的网站可以使用他们的上传系统&#xff0c;对浏览器的兼容以及手机端也是比较不错的&#xff0c;用户使用以及编辑上传方…

Kindeditor上传漏洞复现(CVE-2017-1002024)

Kindeditor上传漏洞复现&#xff08;CVE-2017-1002024&#xff09; 文章目录 Kindeditor上传漏洞复现&#xff08;CVE-2017-1002024&#xff09;1. 漏洞简述2. 组件概述3. 漏洞原理4. 漏洞复现5. 漏洞验证5. 漏洞修复意见 复现环境下载地址 土豪专用下载链接 https://download.…

KindEditor 文件上传漏洞验证

KindEditor 文件上传漏洞 漏洞描述影响范围漏洞验证漏洞修复 漏洞描述 漏洞存在于KindEditor编辑器里&#xff0c;你能上传.txt和.html文件&#xff0c;支持php/asp/jsp/asp.net,漏洞存在于小于等于kindeditor4.1.5编辑器中。 这里html里面可以嵌套暗链接地址以及嵌套xss。Ki…

[渗透]kindeditor4.1.5文件上传漏洞

漏洞等级&#xff1a;高危 Kindeditor是一套开源的HTML可视化编辑器&#xff0c;主要用于让用户在网站上获得所见即所得编辑效果&#xff0c;兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。 漏洞描述&#xff1a; Kindeditor能够上传doc,docx,xls,xlsx,ppt,htm,html…

利用KindEditor漏洞上传网马

KindEditor是常用的富文本编辑器&#xff0c;里边有上传的功能&#xff0c;如果上传文件类型控制的不好&#xff0c;可能就会给网站带来安全问题&#xff0c;比如上传了网马&#xff0c;可能对我们的服务器就造成了伤害。 首先通过搜索引擎查到使用kindeditor的位置&#xff0c…

kindeditor php 漏洞,KindEditor漏洞、优化以及漏洞、BUG修复方案汇总

Kindeditor漏洞 编辑代码内容被执行 kindeditor漏洞描述:在kindeditor编辑代码添加到数据库时没有任何问题,也就是一些HTML代码不会被执行,例如:web编程,这样的代码在首次编辑的时候没有被执行。但是,从数据库里取出来再放到kindeditor里进行修改的时候问题就出现了,这行…

kindeditor编辑器文件上传漏洞

kindeditor编辑器版本小于4.1.5存在文件上传漏洞&#xff0c;可利用该漏洞上次网页、文本文件&#xff0c;可网站进行篡改&#xff0c;添加赌博、反共等违法信息。 通过扫描器发现该网站存在编辑器。 通过浏览器访问&#xff0c;确定该编辑器为kindeditor编辑器。 确定该编辑…

关于网站后台KindEditor编辑器存在安全漏洞

[TO一、 漏洞基本情况 Kindeditor上的uploadbutton.html是用于文件上传功能的页面&#xff0c;因其upload_json.*上传功能文件允许被直接调用&#xff0c;从而实现上传htm,html,txt等文件到服务器&#xff0c;攻击者利用此漏洞可直接在上传的htm,html文件中添加跳转到违法网站…

linux重启后etc目录被还原,干货分享丨如何恢复Linux下误删etc目录数据

对于运维工作者来说,可能最让人担心的,是服务器宕机; 最让人无助的,是被DDOS; 而最让人心惊肉跳的,是rm -rf *这个命令…… 当你执行rm -rf命令时,万一哪个变量没赋值 听说过被删空服务器么? mysql数据库不是在运行吗? linux能删除正在执行的文件?反正是彻底删除了……

苹果手机sim卡无效怎么办_苹果手机解锁密码忘了怎么办

现在手机对于我们每一个人来说都是非常重要的&#xff0c;所以会设定屏幕密码以防隐私被他人看到。但是也避免不了忘记屏幕密码的时候&#xff0c;那么苹果手机解锁密码忘了怎么办呢&#xff1f;下面小编给大家介绍下苹果手机密码忘了怎么解锁的各种办法。 苹果手机解锁密码忘了…

navicat还原mysql备份文件时roll back

一、navicat还原mysql备份文件时roll back&#xff0c;导致的原因是因为备份文件过大&#xff0c;需要更改mysql安装目录中的my.ini。 二、到mysql安装目录中找到my.ini文件。 三、右键用记事本打开&#xff0c;先搜索文件中有没有max_allowed_packet。 四、如果没有找到max_a…

parsed mapper file卡住不动解决思路

发现问题就直接搜索了起来&#xff0c;总结下&#xff1a; 1、断点org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory&#xff0c;所有catch方法都打断点 2、检查mapper语法是否正确 3、断点导致&#xff0c;去掉所有断点&#xff0c;控制台上 m…

My SQL—CRUD初阶(增删改查)

这里写目录标题 回顾My SQL基本CRUD(增删改查)操作新增查找全列查找指定列查询指定查询字段为表达式查询字段指定别名去重排序条件查询模糊查询分页查询 修改删除 回顾 类似的&#xff0c;SQL Server 和Oracle也是采取类似的方式来组织数据的&#xff0c;这样的数据库叫做“关系…

balenaEtcher烧录U盘/SD卡恢复方法

今天用balenaEtcher-portable-1.5.115烧录了SD卡&#xff0c; 结果发现自己的笔记本不支持SD卡启动&#xff0c;就想把SD卡恢复了&#xff0c;结果发现win7无法恢复。度娘给的方法太费劲还不保证成功&#xff0c;就谷歌找了一下&#xff0c;很容易就找到了方法&#xff08;原文…