FCKeditor漏洞总结 经常被挂马的网站请注意(转)

FCKeditor介绍
FCKeditor是一款功能强大的开源在线文本编辑器(DHTML editor),它使你在web上可以使用类似微软Word 的桌面文本编辑器的许多强大功能。它是轻量级且不必在客户端进行任何方式的安装。 FCKeditor兼容Firefox, Mozilla, Netscape 和IE。
FCKeditor官司方网址:http://www.fckeditor.net/
FCKeditor在线DEMO:http://www.fckeditor.net/demo
FCKeditor下载直址:http://www.fckeditor.net/download
确认程序为FCKeditor
要对漏洞进行测试,首先我们要确认网站中使用的编辑功能是不是由FCKeditor进行支持的。确认的方法很简单,打开网站带有编辑功能的页面,通常是发表文章或帖子的页面。单击IE菜单栏上的“查看”按钮,选择“源文件”,以“FCKeditor”为关键 字进行搜索,如果能搜索到,那么基本上可以确认该编辑功能使用的是FCKeditor。例如著名的博客程序Pjblog就可以通过这种方法得知其使用的就是FCKeditor。不过确认是FCKeditor并不代表其就有漏洞,因为这个漏洞只存在于之前的版本中,但是目前存在漏洞的 FCKeditor还是比较多的。
Google搜索:inurl:Fckeditor/editor
上传asp木马
确定网站中使用的是FCKeditor后,可以直接在IE地址栏中输入:http://www.***.com/FCKeditor /_samples/default.html。默认情况下可以打开一个FCKeditor编辑页面,有些精简版的FCKeditor会将 _samples文件夹删除,因此可能出现“找不到网页”的情况。在出现的页面中点击“插入/编辑图像”图标,打开“图像属性”窗口,点击其中的“浏览服 务器”服务器按钮,将出现一个文件上传页面。我们在这个页面上单击鼠标右键,选择“属性”,在“地址”一项中将找到这个页面的真实地址:主机租用

http://www.***.com/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/asp/connector.asp。主机租用

将 找到的地址复制到IE地址栏中打开,出现一个上传文件管理页面,此时我们就可以上传我们的asp木马了,不过在上传之前我们需要将asp木马的后缀名改为 asa,因为FCKeditor限制了asp文件的上传,却没有限制asa文件的上传,而asp文件和asa文件的执行效果是一样的,这就是 FCKeditor的漏洞所在——上传文件的过滤不严。
上传asp木马完成后,就可以在浏览器中执行木马,此时我们得到的是一个webshell,可以对网站中任意文件进行操作,如果想黑掉网站,也是轻而易举的事。可见,虽然FCKeditor功能做得很强大,在安全性方面却很薄弱。主机租用

如果通过上面的步骤进行测试没有成功,可能有以下几方面的原因:
1.FCKeditor没有开启文件上传功能,这项功能在安装FCKeditor时默认是关闭的。如果想上传文件,FCKeditor会给出错误提示。
2.网站采用了精简版的FCKeditor,精简版的FCKeditor很多功能丢失,包括文件上传功能。
3.FCKeditor的这个漏洞已经被修复。
FCKeditor上传路径
比如输入:主机租用

http://[target]/[path]/FCKeditor/editor/filemanager/browser/default/browser.html?Type=all&Connector=connectors/asp/connector.asp主机租用

上传文件地址是UserFiles/all/1.asa
“Type=all” 这个变量是自己定义的,在这里创建了all这个目录,而且新的目录没有上传文件格式的限制.
type=xxx
所传的文件就到了http://[target]/[path]/UserFiles/xxx/下了
type=../
所传文件就到网站根目录了.
FCKeditor的JSP版漏洞
查看配置和列出目录下的文件:主机租用

http://www.xxx.com/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=FileUpload&Type=Image&CurrentFolder=%2F主机租用

上传shell的地址:主机租用

http://www.xxx.com/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector主机租用

跟版本有关系.并不是百分百成功.
FCKeditor的PHP版漏洞
1. 上传文件漏洞,适用版本2.4.2以下:
fckeditor/editor/filemanager/upload/php/upload.php 61行未对Media类型进行上传文件类型的控制,导致用户上传任意文件。修补办法:更新到最新的2.5版本。或者在config.php文件中,添加对Media类型的文件类型限制。
2. 被动过滤:
config.php:主机租用

$Config['AllowedExtensions']['File'] = array() ;
$Config['DeniedExtensions']['File'] = array(‘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’) ;主机租用

字典越来越大啊 :) 。我们先测试先以前的exp,上穿aa.php. 这样的文件结果变成了 aa_php. 看来还有其他变化啊:主机租用

function FileUpload( $resourceType, $currentFolder )
{
$sErrorNumber = ‘0′ ;
$sFileName = ” ;主机租用

……….
// Replace dots in the name with underscores (only one dot can be there… security issue).
if ( $Config['ForceSingleExtension'] ) //多了个$Config['ForceSingleExtension']的配置 默认是ture
$sFileName = preg_replace( ‘/\\.(?![^.]*$)/’, ‘_’, $sFileName ) ; //这里替换了文件名里多余的. 即:1.1.php–>1_1.php主机租用

$sOriginalFileName = $sFileName ;主机租用

// Get the extension.
$sExtension = substr( $sFileName, ( strrpos($sFileName, ‘.’) + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ; //替换后取后缀,因为上面的替换所以保证了文件名里只有一个. 即:1_1.php—>php主机租用

$arAllowed = $Config['AllowedExtensions'][$resourceType] ;
$arDenied = $Config['DeniedExtensions'][$resourceType] ;主机租用

if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )//判断
{
………….主机租用

if ( is_file( $sFilePath ) )主机租用

{
$iCounter++ ;
$sFileName = RemoveExtension( $sOriginalFileName ) . ‘(‘ . $iCounter . ‘).’ . $sExtension ;主机租用

/*
这里判断有没有相同的文件名,如果有这改为在后缀前加一个(n). 如:_phs–>(1)._phs
那么我们可以利用产生的这个(n).不呢?答案是:NO 因为我们提交_php 经过
// Get the extension.
$sExtension = substr( $sFileName, ( strrpos($sFileName, ‘.’) + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ;
这里时strrpos($sFileName, ‘.’)为空所以 还是:_php–>php 这个是没有办法通过上面的判断语句的
*/主机租用

$sErrorNumber = ‘201′ ;主机租用

}
else
{
move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;主机租用

通过上面的分析,好象没办法了?。呵呵 我们可以不用.嘛,在win下还有一个空格呢 :) 提交1.php+空格 就可以过去所有的。不过空格只支持win系统 *nix是不支持的[1.php和1.php+空格是2个不同的文件]主机租用

最后说明下,默认fckeditor是不让上传文件的:config.php:
// SECURITY: You must explicitelly enable this “connector”. (Set it to “true”).
$Config['Enabled'] = false ;

漏洞的修复
FCKeditor的漏洞因上传功能而起,因此只要我们将上传功能彻底关闭就可以了。打开位于FCKeditor安装目录 editor/filemanager/browser/default/connectors/asp/文件夹中的config.asp文件,将其中的 ConfigIsEnabled参数后面的值改为False,这样做的目的是将FCKeditor的文件上传功能关闭,漏洞当然也就无法被黑客利用了。
其实最简单的方法就是升级FCKeditor的版本,升级后漏洞就不存在了。如果FCKeditor是嵌入在网站程序中的,那么可能升级后会比较麻烦,这时采用第一种方法即可。主机租用

转载于:https://www.cnblogs.com/solomon_Blog/archive/2010/11/05/1869709.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.下载最新版的FCKEDITOR 2.解压缩到你的站点根文件夹中名为FCKEDITOR的文件夹中(名称必须为FCKEDITOR,因为配置文件中已经使用此名称来标示出FCKEDITOR的位置) 3.现在,编辑器就可以使用了,如果想要查看演示,可以按下面方法访问: http:///FCKeditor/_samples/default.html 注意:你可以将FCKEDITOR放置到任何文件夹,默认情况下,将其放入到FCKEDITOR文件夹是最为简单的方法.如果你放入的文件夹使用别的名称,修改配置文件夹中编辑器BasePath参数,如下所示: oFckeditor.BasePath="/Components/fckeditor/"; 另外,FCKEDITOR文件夹中所有以下划线开头的文件夹及文件,都是可选的,可以安全的从你的发布中删除.它们并不是编辑器运行时必需的 如何将FCKEDITOR整合进我的页面? 由于目前的版本提供的FCKEDITOR仅提供了JAVASCRIPT式的整合,因此,这里仅讲述如何应用JAVASCRIPT来整合FCKEDITOR到站点中,当然,其他各种语言的整合,你可以参考_samples文件夹中的例子来完成 1,假如编辑器已经安装在你的站点的/FCKEDITOR/文件夹下.那么,第一步我们需要做的就是在页面的HEAD段中放入SCRIPT标记以引入JAVASCRIPT整合模块.例如: 其中路径是可更改的 2,现在,FCKEDITOR类已经可以使用了.有两个方法在页面中建立一个FCKEDITOR编辑器: 方法1:内联方式(建议使用):在页面的FORM标记内需要插入编辑器的地方置入以下代码: script type="text/javascript"> var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ; oFCKeditor.Create() ; 方法2:TEXTAREA标记替换法(不建议使用):在页面的ONLOAD事件中,添加以下代码以替换一个已经存在的TEXTAREA标记 window.onload = function() { var oFCKeditor = new FCKeditor( 'MyTextarea' ) ; oFCKeditor.ReplaceTextarea() ; } This is the initial value. 3.现在,编辑器可以使用了 FCKEDITOR类参考: 下面是用来在页面中建立编辑器的FCKEDITOR类的说明 构造器: FCKeditor( instanceName[, width, height, toolbarSet, value] ) instanceName:编辑器的唯一名称(相当于ID) WIDTH:宽度 HEIGHT:高度 toolbarSet:工具条集合的名称 value:编辑器初始化内容 属性: instanceName:编辑器实例名 width:宽度,默认值为100% height:高度,默认值是200 ToolbarSet:工具集名称,参考FCKCONFIG.JS,默认值是Default value:初始化编辑器的HTML代码,默认值为空 BasePath:编辑器的基路径,默认为/Fckeditor/文件夹,注意,尽量不要使用相对路径.最好能用相对于站点根路径的表示方法,要以/结尾 CheckBrowser:是否在显示编辑器前检查浏览器兼容性,默认为true DisplayErrors:是否显示提示错误,默为true; 集合: Config[Key]=value; 这个集合用于更改配置中某一项的值,如 oFckeditor.Config["DefaultLanguage"]="pt-br"; 方法: Create() 建立并输出编辑器 RepaceTextArea(TextAreaName) 用编辑器来替换对应的文本框 如何配置FCKEDITOR? FCKEDITOR提供了一套用于定制其外观,特性及行为的设置集.主配置文件名为Fckconfig.js 你既可以编辑主配置文件,也可以自己定义单独的配置文件.配

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值