'Shell invertido' - extrair comandos shell do host remoto com entrada controlada por humanos?

3

Eu gostaria de me conectar a uma máquina remota, de preferência via SSH, e depois puxar os comandos de lá.

Para ser preciso, gostaria de fazer uma máquina remota conectar-se à minha máquina local, onde eu teria um console interativo, enviando comandos e vendo a saída.
Funcionalmente, seria semelhante ao Assistente Remoto do Windows ou qual é o nome.

Posso imaginar que eu implementaria um servidor HTTP que teria uma GUI e, a pedido, manteria a conexão para sempre e enviaria qualquer linha que eu digitasse na GUI; e receba tudo o que o outro lado envia como saída. Eu teria apenas que cuidar dos cabeçalhos HTTP. No entanto, isso não é muito elegante.

Existe alguma solução pronta? Ou talvez usando nc ou alguma ferramenta que conectaria o TTY com uma porta de escuta?

    
por Ondra Žižka 20.03.2018 / 16:02

3 respostas

5

Se você executar:

socat "unix-listen:$HOME/.shell-access,mode=600,fork" \
      "exec:$SHELL,pty,stderr,setsid,ctty"

Isso permite que você faça por exemplo:

socat -,raw,echo=0 "unix:$HOME/.shell-access"

localmente, para conectar e interagir com esse shell.

Então você pode redirecionar a porta remota pelo ssh com:

ssh -R "/path/to/socket/on/host:$HOME/.shell-access" user@host

(assume uma versão relativamente recente do openssh (cliente e servidor)).

E então user on host pode interagir com esse shell fazendo isso

socat -,raw,echo=0 "unix:/path/to/socket/on/host"

Em vez de executar $SHELL , você pode executar screen -xRS some-screen-session para anexar uma determinada screen sessão, para que várias pessoas possam ver a mesma sessão de tela.

    
por 20.03.2018 / 16:23
2

Com o tradicional netcat.

servidor:

$ nc.traditional  -lvp 1234 -e /bin/sh

cliente:

$ nc -nv <ip> 1234

Você também pode encaminhar a porta via ssh.

    
por 20.03.2018 / 16:26
0

I would like make a remote machine connect to my local machine, where I would have an interactive console

Crie uma escuta na sua máquina local:

socat file:'tty',raw,echo=0 tcp-listen:PORT

Digite o seguinte comando na máquina remota:

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:YOUR_IP_ADDRESSE:PORT
    
por 16.05.2018 / 12:13

Tags