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 -p
port_number-e
program_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:
mkfifo
pipe_namenc -l -p
port_number<
pipe_name|
program_name>
pipe_nameOn the client:
nc
server_machine_nameport_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
.