Posso canalizar / redirecionar um aplicativo de console através do netcat para que possa ser usado remotamente?

9

É possível "canalizar" uma instância de um aplicativo de console por meio do netcat, portanto, o netcat está aguardando uma nova conexão e redireciona o stdin e o stdout pela conexão de rede.

    
por jammmie999 14.06.2013 / 20:48

1 resposta

15

Bem, conforme documentado na Wikipedia e na documentação netcat , há uma opção -e que causa para gerar (xe) um programa após o recebimento de uma conexão, anexando o soquete a stdin, stdout e stderr do processo. Exemplo de uso:

nc -l -pport_number-eprogram_name

Os exemplos geralmente mostram /bin/sh ou bash sendo usado como o program_name . O uso desta opção é desencorajado porque basicamente abre um portal de acesso anônimo e sem senha em sua máquina. Claro, isso é mitigado usando um programa com menos energia do que o shell (um que não tem a capacidade de escapar para um shell), minimizando o uso e mantendo-o em segredo. No entanto, os desenvolvedores originais de netcat acharam que esta opção era uma má idéia que eles a desativaram por padrão, e a condicionaram sob a opção de compilação “GAPING_SECURITY_HOLE”. Isto é mencionado brevemente neste NetCat Tutorial e outra documentação netcat .

Uma pesquisa no Google levou-me a discussões sobre este problema noutros sites do Stack Exchange: Stack Overflow e Server Fault . Vários colaboradores ofereceram a seguinte técnica para fazer a mesma coisa sem usar a opção -e (por exemplo, em uma versão de netcat que tenha a opção -e desabilitada):

On the server:
mkfifopipe_name
nc -l -pport_number<pipe_name  | program_name>pipe_name

On the client:
nc server_machine_name port_number

Algumas notas:

  • Em algumas versões de netcat , -l implica em -p , você deve dizer apenas -l e, em seguida, o número da porta.
  • Você pode querer envolver sua solução em um loop while true .
por 14.06.2013 / 23:58