Command Injection — Injeção de Comandos OS
Command Injection ocorre quando input do usuário é passado para shell commands. Veja exemplos em Python subprocess, PHP exec() e Node.js com bypass de filtros.
O Que É Command Injection
Command Injection permite que um atacante execute comandos arbitrários do sistema operacional no servidor, quando a aplicação passa input do usuário diretamente para funções de shell (exec, system, popen, subprocess com shell=True). Diferentemente de RCE por desserialização, command injection é frequentemente mais fácil de encontrar — qualquer funcionalidade que interpreta comandos OS (ping, dig, convert, ffmpeg) é candidata.
Exemplo Real de Ataque
GET /api/v1/network/ping?host=8.8.8.8
HTTP/1.1 200 OK
{"result": "PING 8.8.8.8 56 bytes of data. 64 bytes from 8.8.8.8..."}
# Payload de injeção:
GET /api/v1/network/ping?host=8.8.8.8;cat+/etc/passwd
HTTP/1.1 200 OK
{"result": "PING 8.8.8.8...
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:..."}
# Payload com subshell (bypass de filtro simples):
GET /api/v1/network/ping?host=8.8.8.8$(cat /app/.env)Impacto no Negócio e Compliance
Execução de comandos como o usuário da aplicação (geralmente www-data, node, ou python) — leitura de todos os arquivos acessíveis, instalação de backdoors, exfiltração de credenciais, movimentação lateral na rede interna. Impacto equivalente a RCE com CVSS 9.8.
Como Remediar
# ❌ INSEGURO — shell=True com input do usuário
import subprocess
cmd = f"ping -c 1 {user_host}"
output = subprocess.run(cmd, shell=True, capture_output=True)
# ✅ SEGURO — lista de argumentos, sem shell=True
import subprocess, shlex, ipaddress
def safe_ping(host: str) -> str:
# Valide que é realmente um IP ou hostname válido
try:
ipaddress.ip_address(host) # Válido se for IP
except ValueError:
raise ValueError(f"Host inválido: {host}")
# Lista de args — sem interpolação de shell
result = subprocess.run(
["ping", "-c", "1", host],
capture_output=True, text=True, timeout=5
)
return result.stdoutComo a Veyronn Detecta Esta Vulnerabilidade
Mapeamos todas as funcionalidades que podem invocar processos externos: tools de diagrama de rede, conversores de arquivo, ferramentas de análise, e APIs de sistema. Testamos com metacaracteres de shell (;, |, &&, $(cmd), `cmd`, %0a) e variantes encoded.
Vulnerabilidades Relacionadas
Pronto para Contratar seu Próximo Pentest?
Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.
