Welcome to Geeklog, Anonymous Sunday, November 17 2024 @ 11:46 am EST

File uploads through FCKeditor

  • Tuesday, September 02 2008 @ 03:00 pm EDT
  • Contributed by:
  • Views: 45,398
Security

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.