suexec2 und Webshell

sundriver

Registered User
Hallo@all,

System: RootDS Apache 2.2.0 PHP 5.2.4 Confixx3.3.1 SuSE10.1 procmail Postfix Courier -- open_basedir und disable_functions = show_source, system, shell_exec, passthru, popen, proc_open

Bei mir läuft PHP als suPhp - CGI ohne Probleme, nur mit suexec habe ich Probleme, wenn ich z.B auf meinem Account ein webshell.pl Script in /cgi-bin lege und es über den Browser starte passiert alles mit den Rechte und der UID und GID des Accountes. Allerdings habe ich keine Probleme mit einem Execute Befehl nach /etc zu springen und mir alles auflisten zu lassen. Ich kann nach Belieben lesen ausser die Files haben 640 . Das macht mir grosse Sorge denn ich kann zum Beispiel auch alle MailDir's einsehen da ich diese nicht auf 750 setzen kann da dann Courier und Co. streiken..

Wie kann ich, ähnlich wie in suPhp, unterbinden das der User aus seinem Account raus springen kann und fröhlich alles lesen kann?

ein suexec2 -V zeigt :
Code:
 -D AP_DOC_ROOT="/srv/www"
 -D AP_GID_MIN=96
 -D AP_HTTPD_USER="wwwrun"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=96
 -D AP_USERDIR_SUFFIX="public_html"

Mein DocRoot liegt aber in /srv/www/htdocs/ , der Rest passt. Würde ein neu Compilieren der suexec2 auf die aktuellen Verhältnisse eventuell Abhilfe schaffen?

cu
Sundriver
 
Ich hab versucht mich bzgl. auf deinen Vorschlag hin schlauer zu machen, meine oben genannte Konfiguration ist ja im Prinzip modular vom Apache geladen. Wie ist das mit suphp? Müsste Apache dann nicht vom chroot aus nach aussen auf das php-cgi zugreifen können?

Hänge grad irgendwie fest das zu verstehen.. Das mit den Maildir's habe ich mit 750 geschafft.

cu
Sundriver
 
Eine chroot-Umgebung enthält alle benötigten Dateien. D.h. es gibt sogar innerhalb der chroot die Datei /etc/passwd. Diese Datei muß aber nicht identisch mit der realen /etc/passwd sein. Ggf. kann diese sogar leer sein. (Hat aber den Nachteil, daß jeder sofort sieht, daß er im Chroot ist.)

D.h. alle Binaries die der Apache zum laufen braucht, müssen auch in der Chroot vorhanden sein. Gerade CGI-Interpreter die erst aufgerufen werden, wenn eine entsprechende Seite verlangt wird.
Ob die Apache-Module/-Config ebenfalls vorhanden sein muß kommt darauf an, wann Apache in das Chroot eingesperrt wird.

huschi.
 
O.K. das klingt Plausibel. Jetzt muss ich mich nur noch schlau machen wie ich das ganze hinbekomme. Du weist ja, Murphys Gesetze.. Da muss meine Testmaschine jetzt dran glauben ;-)

cu
Sundriver
 
Back
Top