Eu tenho um aplicativo c / c ++ encadeado que fornece um shell reverso pty instalado em vários clientes linux que todos eles conectam de volta ao mesmo servidor / porta
Agora eu preciso encontrar um método confiável para interagir com um host específico para que eu possa, por exemplo, bash script / alias depois.
usando socat Eu acho que deveria ser como continuar a ouvir e esperar por um host específico para selecionar e bifurcar e interagir com seu shell e fechar / sair se não for esse host específico, eu pensei que algo assim funcionaria
socat TCP-LISTEN:8080,fork SYSTEM:'[ $(hostname) != "host.d.com" ] && { exit;}',pty,stderr
mas não me dá nenhuma saída, eu tentei com um comando simples como
socat TCP-LISTEN:8080,fork SYSTEM:'/usr/bin/id',pty,stderr
e recebo esse erro toda vez que um cliente se conecta
socat[1567] E write(5, 0x7faa9c802c00, 341): Input/output error
tenha em mente que eu recebo o shell usual esperando por entrada com este comando que está funcionando bem para o primeiro cliente que se conecta em
socat - TCP-LISTEN:8080
Eu também tentei com a opção ncat --allow do nmap ncat -lvvp 8080 --keep-open --max-conns 1 --allow some ip/host
mas infelizmente não posso usá-lo porque hosts são nados sob o mesmo IP
Então, existe alguma solução para este problema que me permita gerenciar / selecionar / interagir com vários shells de cliente reverso sem ter que usar porta diferente para cada cliente também estou mantendo isso simples para testes, mas eu preciso que ele funcione por SSL é por isso que eu estou tentando com socat e ncat
Eu já vi alguns projetos python no github, mas eles são todos bugs e fracos