KindEditor 这款在线编辑器,在编辑代码内容时存在一个较为隐蔽的隐患:首次将代码存入数据库时一切正常,例如像 web编程 这样的 HTML 片段,保存后显示无误。然而,一旦从数据库中取出并再次放回编辑器进行修改,问题便会显现——原本的纯文本竟然被渲染成了可点击的超链接。这实际上是编辑器在回显时对代码内容进行了二次解析,将本应展示的标签直接当作 DOM 元素执行。
如何解决?先看下面这张图:

这是本站后台的一段 PHP 处理代码。核心思路十分简单:从数据库取出内容后,将其中的 & 符号全部替换为 HTML 实体 &。这样一来,编辑器便会将其视为普通文本,不会再解析成 HTML 标签。若使用其他后端语言(如 Java、Python),替换思路完全相同——在输出到编辑器之前进行一次实体转义即可。
KindEditor上传解析漏洞
该漏洞影响 KindEditor 3.2.1 及更早版本(2009年8月发布)。攻击方式利用 Windows 2003 的 IIS 解析漏洞,将图片文件伪装成可执行的脚本,从而获取网站的 WebShell。简单来说,就是上传一个包含一句话木马的图片(如 1.jpg),然后借助 IIS 的特性使其被当作 ASP 文件来执行。
KindEditor列目录漏洞
测试版本:KindEditor 3.4.2 和 3.5.5。攻击手法通过几个简单的 HTTP 请求即可实现:
- 访问
https://netknight.in/67cms/kindeditor/php/file_manager_json.php?path=/,直接暴露服务器绝对路径(例如D:\AppServ\www\67cms\kindeditor\php\file_manager_json.php)。 - 获取绝对路径后,修改 path 参数为相对路径(比如
AppServ/www/67cms/),即可遍历整个网站根目录下的所有文件和文件夹名。
关键在于 file_manager_json.php 文件未对 path 参数进行严格过滤,导致攻击者能够任意读取服务器目录结构。
上传修改拿shell漏洞
影响版本:KindEditor 3.5.2 到 4.1。利用流程如下:
- 打开编辑器,将一句话木马的后缀改为
1.jpg,上传图片。 - 进入文件管理,找到
down目录,翻至最后一页,最后一个图片即为刚上传的文件。 - 点击“改名”,在表单中将
jpg改为asp,保存。

关键步骤:使用谷歌浏览器打开审查元素(F12),定位到改名的表单。请看图:

找到这个 form 表单:

将 jpg 改为 asp:

然后名字改为 1,点击保存:

一句木马随即生成,连接地址为:https://www.*.com/upfiles/down/1.asp。整个过程利用了编辑器文件管理功能中,对已上传文件的类型校验不严——只需在改名时通过审查元素修改类型参数,便可将之前当作图片上传的文件改回可执行的脚本格式,从而获取网站控制权。
