Tunel de dos vías con netcat
A veces es necesario realizar una tunel tcp de dos vías (TCP Two-way tunnelling) para enrutear una conexión “momentaria” de un host a través de otro host.
Hay muchas formas de resover esta problema (con iptables, tuneles ssh, etc.) pero una forma rápida y con pocos privilegios es utilizando un pipe y netcat.
mkfifo /tmp/tmp-pipe nc -l 10022 0 < /tmp/tmp-pipe | nc remote-host.com 22 1> /tmp/tmp-pipe
A sí levantamos un listen socket en el puerto 10022 que realmente nos llevará al host “remote-host.com” puerto 22.
Es más, podriamos dejear que el puerto 10022 (por decir uno) apunte localmente al puerto 22 (ssh).
mkfifo /tmp/tmp-pipe nc -l 10022 0 < /tmp/tmp-pipe | nc localhost 22 1> /tmp/tmp-pipe
Ahora si nos autentificamos por ssh (desde un equipo remoto) al puerto 10022, podemos ver que en los logs queda que la conexión es proveniente de localhost
Referencia
http://www.skullsecurity.org/wiki/index.php/Linux_Commands#Exploitation