Serverangriff? brauche Hilfe



feiaweng

New Member
Hallo,

ich habe in meinen Apachelogs folgendes gefunden:
Code:
SRC-IP DATUM "GET /?file=../../../../../../proc/self/environ%00 HTTP/1.1" 200 270 "-" "<?php system(\"id\"); ?>"

oder auch

Code:
SRC-IP DATUM "GET /index.php?option=com_simpledownload&controller=../../../../../../../../../../../../../../../proc/self/environ%00 HTTP/1.1" 301 20 "-" "<?php system(\"id\"); ?>"

Ich weiss jetzt nicht, ob da was passiert ist, mich irritiert der HTTP 200 Code.
Wenn ich die URL www.domain.tld/?file=../../../../../../proc/self/environ eingebe, lande ich auf der Hauptseite. Weiss aber nicht, wie der Angreifer das mit dem <?php system(\"id\"); ?> in die URL eingefügt hat.
Hat jemand ne Idee?
Bin etwas nervös deswegen. Auf dem Server liegen Kundendaten.

Danke im Voraus

Gruss feiaweng
 
Code:
<?php system(\"id\"); ?>
Das müsste hier doch der User Agent sein wenn ich mich nicht irre, die Requests werden eben von einem Script auf einem kompromittierten Server getätigt.
Letzterer Aufruf ist ein Exploit-Versuch für eine Joomla Komponente.

Meines Erachtens nach normales Hintergrundrauschen.

Der 200er im ersten Request ist zwar unschön muss aber noch nichts heissen, wenn einfach die Default Page für solche Requests ausgegeben wird ist es zwar ein 200er aber ungefährlich.

Wie sehen deine PHP Settings aus? Insbesondere allow_url_include und allow_url_fopen sollten auf Off stehen falls nicht unbedingt benötigt.
 
Da der erste Request auf / lautet (mit dem GET-Parameter ?file=....) ist der 200er also völlig normal, denn es wird ja die Default-Seite der Domain aufgerufen, also vermutlich die index.php
Diese Aufrufe dürften Bots sein, die versuchen, Sicherheitslücken in auf dem Server laufenden Scripten zu finden, um darüber dann an System-Dateien und Informationen zu gelangen. Das ist normales Grundrauschen...
 
puh, danke Leute, das beruhigt mich schon sehr.
allow_url_include und allow_url_fopen stehen auf Off.
Ich werde versuchen das System noch etwas sicherer zu machen.
Glaub nicht, das in normalen Requests ?file= oder ?mod=, oder ?page= zu finden sind. Ich könnte ja mod_security installieren, und Aufrufe wie ?file= unterbinden. Mit apache selber geht das ja leider nicht.
Ich dachte der Aufruf "<?php system(\"id\"); ?>" ist dasselbe als wenn ich in der bash den Befehl id aufrufe.
Nochmal vielen Dank. :)
 
Glaub nicht, das in normalen Requests ?file= oder ?mod=, oder ?page= zu finden sind.
Je nach verwendeten Scripten sind diese Parameter durchaus normal, so arbeitet beispielsweise das Woltlab Burning Board mit dem page-Parameter. Da müßtest du dir also deine Seiten vorher genau ansehen, bevor du diese Parameter per mod-security sperrst. Bei sauber programmierten Scripten werden die in deinem Beispiel genannten Parameter ja auch sauber ausgefiltert und stellen kein Problem da.

Ich dachte der Aufruf "<?php system(\"id\"); ?>" ist dasselbe als wenn ich in der bash den Befehl id aufrufe.

Ja.

Gruß
Markus
 
Das Directory-Traversal kann man im Zweifelsfalle mit der php Funktion realpath evaluieren, liegt der ausserhalb des webroots ist meist was unschönes im Gange ;)
 
Oder gibt es auch Skripte die sowas benötigen? Ich glaube nicht.

Ist nicht auszuschließen, aber betrifft vermutlich eher Spezialfälle. Und die kennt der Webmaster normalerweise auch...
Prinzipiell ist es eine Sache des jeweiligen Scriptes (also beispielsweise der index.php), solche Sachen sauber abzufangen. Für PHP wurde mit realpath ja schon eine Möglichkeit genannt, die man nutzen kann.
Es kommt ja auch immer drauf an, welche Maßnahmen du bei einem solchen Zugriff einleitest. Sperrst du die IP komplett, kann es passieren, daß du auch legitime Besucher deiner Webseite aussperrst - beispielsweise Proxy-User in einer Firma, DSL-User mit einer dynamisch vergebenen IP-Adresse. Die Aufrufe können ja auch von einem verseuchten Heim-PC kommen und nach der Zwangstrennung bekommt dann ein anderer die IP und kann auch nicht zugreifen.
Letztendlich ist es immer eine Abwägungssache, auf solche Requests zu reagieren. Wenn deine PHP-Scripte sauber programmiert sind, dienen die Maßnahmen letztendlich nur dazu, Logs klein zu halten.
 
Hi,

"../../proc/self/environ" im Query-String kann man sicherlich mit mod_security o.ä. komplett sperren. allow_url_fopen=off ist hier leider kein Schutz, da ja eine lokale Datei eingebunden wird, deren Inhalt über den HTTP-Referer manipuliert werden kann.

CU
Tom09
 
Hallo,

die PHP Scripte sind nicht von mir, es geht hier um Wordpress Installationen.
Aber die Anregung /proc/environ per mod_security zu sperren nehm ich mal auf.
Diese URL benötigt bestimmt keiner :-)
Was mir aber noch einfiel ist, dass auf meinem Apache der Suhosin Patch mit drauf ist.
Dazu finde ich nämlich im Log folgendes:
Dec 13 13:41:05 server suhosin[26982]: ALERT - ASCII-NUL chars not allowed within request variables - dropped variable 'page' (attacker '118.97.50.11', file '/pfadzuwebpaket/index.php')
Das gibt mir noch eine gewisse Sicherheit, danke Suhosin.
Ich weiss noch, ich hab vor einiger Zeit mal mit mod_security rumgespielt, und nur Probleme damit bekommen. Seiten konnten nicht mehr aufgerufen werden, SQL-Abfragen gingen nicht mehr, etc.
Ich guck mir das nochmal an, damit ich nur das sperre, was unbedingt sein muss.

Gruss feiaweng
 
Aus der mod_security config:

Code:
## -- Configuration ----

# Turn ModSecurity on ("On"), set to monitoring only 
# ("DetectionOnly") or turn off ("Off").
#
SecRuleEngine On

Einfach ein paar Tage in "DetectionOnly" laufen lassen, Logs in Sachen false positives analysieren und Regeln dementsprechend anpassen. ;)
 
so mod_security ist installiert, und steht auf DetectionOnly
############
SecRuleEngine DetectionOnly
############

Leider habe ich von mod_security keine Ahnung. Werde mich mal einlesen.
Momentan suche ich nur die Syntax um ../ zu sperren, und den Pfad der
/proc/self/environ zu sperren.
Aber da hab ich noch nichts gefunden.

Gruss feiaweng
 
Back
Top