Ok, ein weiterer Blogeintrag der für nicht Webmaster wohl schier Langweilig sein wird, ich fang einfach mal an :D

“Script Injections” oder auch XSS “Cross Site Scripting” genannt, sind ja nichts unbekanntes mehr, in meinem htaccess Artikel habe ich ja bereits darüber geschrieben. Um das ganze Thema etwas weiter aufzugreifen habe ich mich mal etwas weiter damit beschäftigt. Im Bot-Trap.de Forum (Sollte sich jeder Webmaster mit Spamproblemem auf der Seite übrigens mal ansehen) gab es in einem Beitrag unnötige Arbeit… bereits seit geraumer Zeit einige Diskussionen zum Thema Sicherheit und seit kurzem auch das Thema Injections. Auf der Suche im Web nach einer Liste mit Statistiken über meist verbreite Injection Versuche bin ich leider nicht fündig geworden.

Nach einem hin und her habe ich dann meine .htaccess Regeln zum Blocken von GET und POST Injections angepasst um nicht nur einfach ein Forbidden zu liefern, sondern den "möglichen Angreifer” direkt zu protokollieren. Das Scipt reagiert auf eine angepassten .htacces Eintrag:

#  mod_rewrite
RewriteEngine On
# Log injection trys through Query String
RewriteCond %{REQUEST_METHOD} =GET [OR]
RewriteCond %{REQUEST_METHOD} =POST [OR]
RewriteCond %{REQUEST_METHOD} =HEAD
RewriteCond %{QUERY_STRING} !injectlog\.php [NC]
RewriteCond %{QUERY_STRING} (ftps?|https?):// [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC]
RewriteRule .* /injectlog.php [L,QSA]

Hier wird anstatt den Verdächtigen einen Block vor die Nase zu setzen die Anfrage 1:1 an injectlog.php weitergeleitet, dieses Script ist natürlich mit der ersten Version erst mal ein Proof of Concept. Es besteht die Möglichkeit a) die Angriffe lokal zu protokolieren, dieses Protokoll beinhaltet Uhrzeit & Datum, IP des Angreifers, Requestmethode (GET/POST), Aufgerufene Datei, den Query String und den User Agent (Browser)

Zu dem Lokalem Logfile gibt es noch, der eigentlichen Idee entsprechend, die Möglichkeit das ganze in eine Datenbank zu submitten. Wie gesagt, erstmal proof of concept, die DB wird später natürlich öffentlich verfügbar sein da diese Daten ja doch für den ein oder anderen Webentwickler recht interessant sein können. Aus dem Grund der Öffentlichkeit werden auch nicht alle Daten übermittelt, in späteren Script Versionen könnte man das optional einstellbar gestalten. Derzeit wird bei einem Submit in die Datenbank nur die Version des Scripts, Request Methode, Aufgerufene Datei, Query String und der User Agent übermittelt.

Die Installation ist simpel, einfach die injectlog.php in das root dir der Webseite kopieren und die obige htaccess Anweisung in die eigene .htaccess Datei einfügen.

Der Quelltext

Das Projekt ist nun auf einer Extra Seite ausgegliedert, weitere Informationen gibt es unter abwehr.solariz.de

Amazon Logo Diesen Blog unterstützen?
Bestell dir doch etwas bei Amazon. Nutze diesen speziellen Link, es kostet dich nichts extra und für jeden Kauf darüber erhalte ich eine kleine Gutschrift. Danke!
✉ Marco Götze//

Kommentare

Formate: | Größe: Mb
Anmelden mitoder Benutzernamen eingeben

keine Kommentare