用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8599|回复: 9
收起左侧

[Others] ci整合fck的漏洞思考。

[复制链接]
发表于 2010-1-27 03:58:41 | 显示全部楼层 |阅读模式
论坛上好多人都用在ci里面添加fck。。问题是,fck本身的漏洞比较多。。好容易成为攻击目标。。
    fck2.42一下版本的漏洞大家都知道。。今日我测试了一下fck2.6.5版本。。同样存在漏洞。。在测试页,成功上传文件5523%2Ephp#;123.jpg,看清楚了。。这个执行的文件是php文件,实际执行的是5523.php文件,也就是这个只是伪jpg。。
    fck2.6.5上传对jpg做检查php字符。。但是如果是加密插入jpg中,就难过滤。。正如上面的,成功上传5523%2Ephp#;123.jpg木马,然后执行。。后面的结果就不堪设想。。

    其中解决办法就是,禁用fck上传功能,并且删除用于上传的文件和函数( 这样的需要对fck熟悉,可行性有待商讨)

    如果我们把fck编辑器图片上传功能禁用或删除了,那么要写东西要插入图片的时候只能通过自己写的上传页面上传(记得做管理验证才允许上传),然后得到地址,再插入。。这样比较麻烦。。

    不知道各位有没有更好解决办法?? (换其他可以上传的编辑器?)
发表于 2010-1-27 10:43:28 | 显示全部楼层
新版的 CKEditor 也有这个漏洞吗?

PS: 楼主是怎么做的伪jpg 文件呢?
发表于 2010-1-27 15:19:39 | 显示全部楼层
自己写个上传。
 楼主| 发表于 2010-1-27 22:44:25 | 显示全部楼层
回复 2# Hex

回来了,明天去移动游荡一下。。

在2.6.5中http://www.ci.com/fckeditor/editor/filemanager/connectors/test.html  有一个test.html,这个文件只是做测试(自带的),但是功能很强大。
一旦开通了上传功能就可以了。5523%2Ephp#;123.jpg如果你用一张图片直接改这个名字,就可以上传。。如果用一个php文件改成这样,是上传失败,也就是fck在上传的时候,对文件的信息做了测试,如果不是图片字段头的话就会过滤,上传失败。。

问题是,这样的过滤并不够。php木马一句话就可以了。经过加密特殊处理后,插入jpg做成伪jpg就有好大机会通过验证了(这样要看机率,一般的fck都可以判断出来)。

既然可以上传5523%2Ephp#;123.jpg文件,这个漏洞就存在了。有机会给人上传php木马或者jpg木马。

所以集成fck的童鞋要注意,这个自带的test.html文件一定要删除。。

gg一下, 好多人都没有删。

不知道hex对这样漏洞有什么看法?。。是自己写一个上传,要插入图片,自己插入上传图片的地址么??
发表于 2010-1-27 23:23:22 | 显示全部楼层
我最近用 CKEditor 3.0 做了一个上传,CKEditor 默认貌似没有这个上传功能了,需要自己写,或者用 CKFinder 来做。
我感觉上传还是自己用 CI 实现吧,也不复杂。
 楼主| 发表于 2010-1-28 00:05:09 | 显示全部楼层
回复 5# Hex


我都觉得是应该自己写上传。。

上传图片文件,怎么插入fck中,还没有写得出来。特别光标前后都有文字。别人说是要做遍历,水平所限,暂时还写不出来。ci上传文件后,自动插入地址到fck中,所插入的光标位置前后都有文字。。不知道论坛上谁有类似的代码可否提供参考。。
发表于 2010-1-28 08:47:17 | 显示全部楼层
不要用2.X。
CKEditor 3.1, released on 6 January 2010
http://ckeditor.com/download
发表于 2010-1-28 10:55:26 | 显示全部楼层
用其他 PHP 程序写的上传是可以结合到 CKEditor 的图像对话框中的。
 楼主| 发表于 2010-1-28 22:39:40 | 显示全部楼层
好,谢谢各位建议。。我回去再试试写。。
发表于 2012-10-15 22:45:21 | 显示全部楼层
这是php获取数据的漏洞,其实和fck没有直接关系。

你可以在php版本5.3左右发现,在url中,只要带#就相当于后面的被注解掉了。

5523%2Ephp#;123.jpg这样的文件。重点在于#号。

你把这样的文件上传到php中,相当于上传了5523%2Ephp,而#和之后的字符被php给过滤掉了。

其实解决方法很简单。
一个是做下过滤。
一个是把上传目标目录设置为不允许执行php就可以了。
第三个是:
ci最强大的一点就是,你可以把出了index.php的所有目录,移到web目录以外。
然后把附件目录放到web根目录里。然后在web根目录里,只给index.php执行权限。其他的一律不允许执行php。这样就算他上传了木马也没用。

本版积分规则