Jörgs Webnotizen

Nervige Upload-Bots

Auf einem Webspace mit einigen von mir selbst programmierten Webseiten läuft ein Cronjob, welcher mir bei Neueinträgen in ein PHP-Errorlogfile eine Benachrichtigungs-Email schickt. Ein Lockfile-Mechanismus sorgt dafür, dass ich weitere Benachrichtigungen erst dann erhalte, nachdem ich mir die Fehlermeldungen auf einer speziell dafür eingerichteten Webseite angeschaut habe, so dass ich nicht mit Mails bombardiert werde. Allerdings nerven in letzter Zeit einige Bots, die mit Uploads PHP-Error verursachen.

PHP Warning: Unknown: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/path/to/htdocs) in Unknown on line 0
PHP Warning: File upload error – unable to create a temporary file in Unknown on line 0

Da ich mit der open_basedir Direktive in der php.ini den Zugriff auf bestimmte Verzeichnisse eingeschränkt habe, können Uploads nicht in /tmp zwischengespeichert werden.

In den Access Logfiles konnte ich zwei Arten von URLs diesen Fehlermeldungen zuordnen:

/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&method=form&cid=20&6bc427c8a7981f4fe1f5ac65c1246b5f=cf6dd3cf1923c950586d0dd595c8e20b

/assets/modules/evogallery/js/uploadify/uploadify.php

Offensichtlich suchten die betreffenden Bots nach Joomla- und MODX-Systemen mit ungepatchten Erweiterungen (JCE bzw. Evogallery).

Bei den Post-Requests auf die Joomla-URL wurde zudem der User Agent „BOT/0.1 (BOT for JCE)“ gesendet. Da dieser aber leicht geändert werden kann, blocke ich die Upload-Zugriffe in der .htaccess Datei, wenn der Query String bzw. Request URI auf einen charakteristischen Teilstring matcht:


RewriteEngine on

# [...]

RewriteCond %{QUERY_STRING} option=com_jce [OR]
RewriteCond %{REQUEST_URI} uploadify\.php
RewriteRule .* - [F,L]

… wobei ich bei der URL-Struktur meiner Webseite davon ausgehen kann, dass die beiden Strings darin nicht enthalten sein können. Seit dem .htaccess Eintrag habe ich keine Benachrichtigungsmails mehr von diesen Bots erhalten.

Tags: Apache, PHP