Kindeditor漏洞 编辑代码内容被执行
kindeditor漏洞描述:在kindeditor编辑代码添加到数据库时没有任何问题,也就是一些HTML代码不会被执行,例如:web编程,这样的代码在首次编辑的时候没有被执行。但是,从数据库里取出来再放到kindeditor里进行修改的时候问题就出现了,这行HTML代码被执行了,结果这样:web编程 变成了超链接的形式。
解决办法:先看下面这张图
这张图是本站后台代码文件,我将从数据库里取出来的内容中的“&”进行了替换,替换成了实体“&”。然后你再取修改之前插入的代码,就可以正常显示了。
特别注意:上图中我使用的是PHP语言来修改的,其他服务器端脚本语言思想是一样的,进行替换。
KindEditor上传解析漏洞
影响版本:<= kindeditor 3.2.1(09年8月份发布的最新版)
漏洞利用:利用windows 2003 IIS解析漏洞拿WEBSHELL
KindEditor列目录漏洞
测试版本:KindEditor 3.4.2 KindEditor 3.5.5
1.1.http://netknight.in/67cms/kindeditor/PHP/file_manager_json.php?path=/
2. //path=/,爆出绝对路径D:AppServwww67cmskindeditorphpfile_manager_json.php
3. 2.http://netknight.in/67cms/kindeditor/php/file_manager_json.php?path=AppServ/www/67cms/
4. //根据爆出的绝对路径,修改path的值为AppServ/www/67cms/
5. 这时将遍历d:/AppServ/www/67cms/下的所有文件和文件名
上传修改拿shell漏洞
影响版本:
KindEditor 3.5.2~4.1
漏洞利用:
打开编辑器,将一句话改名为1.jpg 上传图片,
打开文件管理,进入“down”目录,跳至尾页,最后一个图片既是我们上传的一句话
点击改名
点击改名
打开谷歌浏览器的 审查元素
找到form表单
修改“jpg”为“asp”
名字修改为1 保存
KindEditor优化以及漏洞、BUG修复方案汇总
1 取消上传网络图片选项
### cdKindEditor/plugins/image/image.js第13行
allowImageRemote = K.undef(self.allowImageRemote, true)
将true改为false即可,前后对比图效果如下:
before:
after:
2 解决无法保存空格的BUG
### cdKindEditor/kindeditor.js
### 第752行 将第一个和最后一个\s替换成[ \f\n\r\t\v]完整代码如下:
var re = /([ \f\n\r\t\v]*)]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>([ \f\n\r\t\v]*)/g;
3 解决复制粘贴、点击图片等操作滚动条自动下拉的BUG
### cdKindEditor/kindeditor.js
### 第1521行 将y = box.top + pos.y;替换成
y = pos.y;
4 图片上传路径问题
### 举个栗子:修改图片上传路径为根目录下的atcImg文件夹:
### cdKindEditor/php/upload_json
###$save_path为图片上传的路径$save_url为KindEditor中生成img标签的url路径 修改成下图所示即可:
KindEditor默认上传图片生成的url路径是不带域名的绝对路径,如果我们希望生成之后带上域名就需要对urlType进行设置了.
KindEditor中的urlType有4个参数,默认空值" "、"relative"、"absolute"、"domain"。初始化kindeditor时可以指定以下参数:
urlType : " " //默认为空,绝对路径
urlType :"relative" //相对路径
urlType :"absolute" //绝对路径
urlType : "domain" //带域名的绝对路径。
3种不同的路径效果如下图所示:
绝对路径 :
相对路径 :
带域名的绝对路径:
五 解决文本中插入的程序代码里的HTML实体标签被直接解析出来的BUG
###在PHP中添加此函数 , 在向Kindeditor中插入文本内容之前使用此函数将文本内容中的&符号替换即可解决
六 美化样式
###设置KindEditor生成的iframe中的样式(也就是编辑器内容框的样式)
例如我想 : 修改body的内边距为10px
进入kindeditor.js 第3535行 找到_getInitHtml函数 第一行arr数组里的代码就是iframe的HTML内容
那么直接将style标签中的 'body {margin:0;padding:5px;}' 替换为 'body {margin:0;padding:10px;}' 即可
###整合SyntaxHighlighter至编辑器中
一般大家都是在文章页引入语法高亮插件 , 在这里我想说的是 , 为什么不直接引入至编辑器中呢? 不要嫌麻烦, 带来好处是不言而喻的:
一是可以直接在编辑器就中看到代码被渲染的效果 , 一点对比色都没有的代码在写文章的时候是真滴辣眼睛
二是减少文章页的HTTP请求 , 减少服务器压力 , 提升页面加载速度 , 仅仅引入一个
三是SyntaxHighlighter是异步的 , 访客访问你的文章页假如内容特别多, 那么在DOM没有加载完 , 你的代码就等着不会被着色, 很难受!
废话就不多讲了, 直接上干货
1 首先需要引入SyntaxHighlighter.css在初始化Kindeditor时指定cssPath
cssPath :'./SyntaxHighlighter/styles/shCoreDefault.css'
2 进入kindeditor.js第3594行 将arr.push中的内容替换为如下(在编辑器生成的iframe中引入SyntaxHighlighter的JS文件):
arr.push('