File uploads through FCKeditor
- Tuesday, September 02 2008 @ 03:00 pm EDT
- Contributed by: Dirk
- Views: 45,459
A user by the name of t0pP8uZz has demonstrated that the file upload capabilities of FCKeditor, as shipped with Geeklog, can be used to directly upload various sorts of files to a website running Geeklog. The file types are still restricted by FCKeditor's whitelist of allowed types, so it's not possible to upload PHP scripts or the like. Still, this is not something that should be possible as it has the potential for malicious use.
The issue affects Geeklog 1.4.1 and 1.5.0 and possibly other versions when FCKeditor was updated manually.
We will be addressing this problem in the upcoming 1.5.1 release of Geeklog. In the meantime, here's a list of things you can do now:
Remove FCKeditor
If you're not using FCKeditor on your site, you can simply remove the entire fckeditor directory from your webspace. Please note that disabling the Advanced Editor option in the Configuration is not enough.
Disable uploads
If you want to continue using FCKeditor but don't need the ability to upload files through it, you can disable that option in FCKeditor. Please find the following file:
- for Geeklog 1.4.1 (FCKeditor 2.3.1): fckeditor/editor/filemanager/upload/php/config.php
- for Geeklog 1.5.0 (FCKeditor 2.6): fckeditor/editor/filemanager/connectors/php/config.php
In either file, find the line that reads
$Config['Enabled'] = true ;
and change it to = false;
You may want to check for both config files, in case you upgraded from an earlier Geeklog version by overwriting the files. Since the position of the file within FCKeditor changed, you may still have a copy of the old file on your site.
Prevent direct upload
If you need both FCKeditor and the ability to upload files through it, you can prevent direct execution of the upload script. The location of the upload script depends on the version of FCKeditor:
- for Geeklog 1.4.1 (FCKeditor 2.3.1): fckeditor/editor/filemanager/upload/php/upload.php
- for Geeklog 1.5.0 (FCKeditor 2.6): fckeditor/editor/filemanager/connectors/php/upload.php
At the beginning of the upload.php file, after the copyright notice but before the first require(...)
, add this piece of code:
if (strpos($_SERVER['PHP_SELF'], 'upload.php') !== false) {
die('This file can not be used on its own!');
}
Again, you may want to check both locations, in case you have an older copy of the upload script around.