FCKeditor漏洞利用集锦

FCKeditor是何物?可能很少有人知道,但相信大部分的人都用到过。FCKeditor是一款在线编辑器,能够在线进行文字和图片的编辑等工 作,通常会作为一个编辑部件嵌入其他的一些程序中。我们平时泡论坛,写博客,经常可以在网页中对我们的文字或图片进行简单的编辑,没错,你使用的很可能就 是FCKeditor。但正是使用面如此广的一款软件,却存在相当严重的漏洞,黑客可以轻易地上传asp木马,从而得到系统的权限。下面我们来对 FCKeditor进行一次测试,了解一下漏洞形成的原理。

确认程序为FCKeditor

要对漏洞进行测试,首先我们要确认网站中使用的编辑功能是不是由FCKeditor进行支持的。确认的方法很简单,打开网站带有编辑功能的页面,通 常是发表文章或帖子的页面。单击IE菜单栏上的“查看”按钮,选择“源文件”,以“FCKeditor”为关键字进行搜索,如果能搜索到,那么基本上可以 确认该编辑功能使用的是FCKeditor。例如著名的博客程序Pjblog就可以通过这种方法得知其使用的就是FCKeditor。不过确认是 FCKeditor并不代表其就有漏洞,因为这个漏洞只存在于其2.2版本和之前的版本中,但是目前存在漏洞的FCKeditor还是比较多的。

图1.FCKeditor的应用十分广泛

上传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功能做得很强大,在安全性方面却很薄弱。

图2.成功上传asp木马

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

漏洞的修复

FCKeditor的漏洞因上传功能而起,因此只要我们将上传功能彻底关闭就可以了。打开位于FCKeditor安装目录 editor/filemanager/browser/default/connectors/asp/文件夹中的config.asp文件,将其中的 ConfigIsEnabled参数后面的值改为False,这样做的目的是将FCKeditor的文件上传功能关闭,漏洞当然也就无法被黑客利用了。

图3.关闭文件上传功能

其实最简单的方法就是升级FCKeditor的版本,升级后漏洞就不存在了。如果FCKeditor是嵌入在网站程序中的,那么可能升级后会比较麻烦,这时采用第一种方法即可。

 

*******************************************************************************************

2006-02-09日milw0rm公布了FCKEditor的一个上传漏洞。FCKEditor是一款有多个语
言版本的(asp,cgi,aspx,php,cfm,...)的在线编辑的class,很多web系统都使用了这
个class。其实这个东西的漏洞,国内早有人挖过,比如asp版(nb文章系统由于使用这个
导致的上传漏洞),这里我们看看php版本的:
/editor/filemanager/browser/default/connectors/php/config.php

行35-36:

$Config['AllowedExtensions']['File'] = array() ; //允许的上穿类型
$Config['DeniedExtensions']['File'] = array('php','php3','php5','phtml','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg','cgi') ;//禁止上传的类型

我们看$Config['DeniedExtensions']['File']里禁止的类型显然不够,我们可以上传php2、php4、inc、pwml、asa、cer ...等等。我们在看看具体的upfile函数

/editor/filemanager/browser/default/connectors/php/commands.php

function FileUpload( $resourceType, $currentFolder )
{
.......................

$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ; //得到文件的后缀(以.为标志取最后1个)

global $Config ;

$arAllowed = $Config['AllowedExtensions'][$resourceType] ;
$arDenied = $Config['DeniedExtensions'][$resourceType] ;

if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) ) //判断合法后缀
{
$iCounter = 0 ;

while ( true )
{
$sFilePath = $sServerDir . $sFileName ;

.......................

move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
//上传 注意它保存的文件直接用的$sFilePath = $sServerDir . $sFileName,而没有使用$sExtension为后缀
//导致在win下在上传文件后面加个.来突破[未测试]
........................
}

为什么说这个漏洞为"意识漏洞"呢?如果我们把AllowedExtensions/DeniedExtensions的设置"反"一下:

$Config['AllowedExtensions']['File'] = array('rar','zip') ; //允许的上穿类型
$Config['DeniedExtensions']['File'] = array() ;//禁止上传的类型

把设置DeniedExtensions改为设置AllowedExtensions,就不会出现上面的漏洞了,不过这样在某些情况下,照样可以突破,问题还是出在这里:

move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
//上传 注意它保存的文件直接用的$sFilePath = $sServerDir . $sFileName,而没有使用$sExtension为后缀

在apache下,因为"apache文件名解析缺陷漏洞"而出现漏洞[未测试]。

小结:
其实很多web程序员都有这个"意识漏洞",在过滤上传文件类型时,不应该‘被动’的去过滤非法后缀,应该是‘主动’过滤允许上传的类型。

 

*******************************************************************************************

FCKeditor的入侵心得体会

晚上和宝看个台湾的站,后台套用的是FCKeditor的系统.
这貌似是个全世界都在用的编辑系统,什么韩国日本台湾美国的站都在用

再入侵的时候,宝发现的心得我记录下:

http://www.xxx.tw/admin/FCKedito ... s/asp/connector.asp

打开这个地址就可以上传任何类型的文件了,我和宝上传的是.asa的,在编辑器的目录下正常的显示出了马.
但一时间找不到上传地址,后来经过推断,确定马儿上传到的位置是:
http://www.xxx.tw/UserFiles/all/1.asa
经过我们的思路整理,得出了 "Type=all" 这个变量是自己定义的,在这里创建了all这个目录,而且新的目录没有上传文件格式的限制.

比如输入:
http://www.xxx.tw/admin/FCKedito ... s/asp/connector.asp

所传的文件就到了 http://www.xxx.tw/UserFiles/cnandbao/下了

经过进一步的考虑,
如果这样输入:http://www.xxx.tw/admin/FCKedito ... s/asp/connector.asp
就可以传到网站的根目录下,这样只要网站支持什么脚本,你传什么脚本的马就可以了.

所传的文件就到了网站根目录下了

posted on 2013-03-06 16:44  davidkam  阅读(506)  评论(0编辑  收藏  举报