FCKeditor 富文本编辑器漏洞通告

jackxiang 2009-4-28 18:12 | |
FCKeditor 2.6.4 released 之前版本,全部存在严重漏洞,请立即检查您的服务器、程序中是否调用了FCKeditor编辑器,如果存在,请升级到 2.6.4 released版本。
如果不需要上传功能,请将上传功能相关文件删除,如果需要上传功能,请严格限制上传文件后缀,并配置目录权限,禁止上传目录的PHP、ASP、JSP执行权限。



我们发现在一些产品中集成了带有严重漏洞的 FCKeditor 富文本编辑器。请管理员和程序员自查自己的系统、程序。



下月开始,系统部将对服务器上的 FCKeditor 进行专项扫描,届时如果发现仍然存在漏洞的FCKeditor,将对相关责任人进行相应处理。





FCKeditor是一款流行的富文本编辑器,还支持强大的文件上传功能,可以工作在asp,aspx,php,perl,python等脚本环境,由于用户多

功能强大,所以也成为了黑客重点攻击对象。



一些程序员喜欢将某个版本的FCKeditor打包,每次程序都调用这个版本,一些程序也会直接集成该编辑器,往往这种习惯都

导致将一个旧版本的编辑器嵌入到了程序中.



漏洞示例(asp下):

http://www.xxx.com/admin/FCKeditor/editor/filemanager/browser/default/browser.html?Type=../&Connector=connectors/asp/connector.asp

将type改为../,这样将跳出目录文件类型的限制,还可以进行目录遍历.

即使做了不让跳转,配合服务器的一些缺陷也可以得到webshell,比如Windows2003服务器使用fckeditor建立一个xx.asp的目录,那么向

这个目录下上传任意文件,比如jpg(包含可执行脚本代码),都可以被服务器执行.

webshell地址:

http://www.xxx.com/shell.cer



漏洞示例(jsp下):

查看配置和列出目录下的文件:

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



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

webshell地址:

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



漏洞示例(php下):

fckeditor采用黑名单方式进行过滤,Windows下上传xxx.php+空格即可绕过检测.

另外PHP版本对媒体类型没有做任何限制,可以上传任意文件.



以上漏洞均在最新版本(2.6.4)中解决,可以在http://www.fckeditor.net/download下载到最新版本.





另外一些fckeditor的设置,如果你不提供上传服务,或者有更好的上传方案,那删除掉目前的上传功能是非常必要而且彻底的!(删除FCKeditor\editor



\filemanager).



根目录下的fckconfig.js可以进行具体的设置,根据以下开关来限制上传的风险(多一种类型就多一种风险,没必要的请关闭)

FCKConfig.LinkBrowser = true;

FCKConfig.ImageBrowser = true ;

FCKConfig.FlashBrowser = true ;

FCKConfig.LinkUpload = true ;

FCKConfig.ImageUpload = true ;

FCKConfig.FlashUpload = true ;



对你存储上传文件的目录,比如UserFilesPath = "~/UserFiles",禁止下面的脚本文件执行.



新版本中提供这么个函数:

private bool CheckAuthentication()

{

// WARNING : DO NOT simply return "true". By doing so, you are allowing

// "anyone" to upload and list the files in your server. You must implement

// some kind of session validation here. Even something very simple as...

//

// return ( Session[ "IsAuthorized" ] != null && (bool)Session[ "IsAuthorized" ] == true );

//

// ... where Session[ "IsAuthorized" ] is set to "true" as soon as the

// user logs in your system.



return false;

}



去掉注释,写入

try{

return ( Session[ "IsAuthorized" ] != null && (bool)Session[ "IsAuthorized" ] == true ;

}

catch{return false;}



在登录后台成功的地方写入session,Session["IsAuthorized"] = true;即可,这样就不会任何人都可以进行上传等操作了.





PS:FCKeditor检测路径关键字editor/filemanager, 另外fckconfig.js 是编辑器的配置文件,里面有允许&拒绝上传的文件类型配置等,这个文件基本不会

   改名.

PS2:因为FCKeditor的广泛使用,黑客仍然会重点攻击该编辑器,所以不推荐使用该程序,建议使用内部开发的一些富文本编辑器

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1737/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2009-4-28 18:13
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]