ronnie3402/linpriv-map
GitHub: ronnie3402/linpriv-map
一款轻量级 Linux 权限提升枚举工具,针对 15 个常见提权向量进行快速离线检测并提供分级报告和利用建议。
Stars: 0 | Forks: 0
# linpriv-map 🗺️



## 🔍 什么是 linpriv-map?
`linpriv-map` 是 LinPEAS 的轻量级替代工具。它不会导出所有内容,而是检查 **15 个特定的权限提升向量**,显示**带有颜色编码的发现结果**,并为每个发现建议**确切的下一步操作**。
## ⚡ 特性
- ✅ 涵盖 15 个权限提升向量
- ✅ 颜色编码输出 — CRITICAL / HIGH / INFO / NOT FOUND
- ✅ 为每个发现提供带有确切命令的漏洞利用提示
- ✅ 本地 GTFOBins 参考 — 无需联网
- ✅ 将报告保存为纯文本或 JSON 格式
- ✅ 运行所有检查或针对特定向量进行检查
- ✅ 每次扫描结束时提供清晰的汇总表
## 🛠️ 安装
```
# Clone 仓库
git clone [https://github.com/](https://github.com/)/linpriv-map.git
cd linpriv-map
# 创建 virtual environment
python3 -m venv venv
# 激活 virtual environment
source venv/bin/activate
# 安装 dependencies
pip install -r requirements.txt
# 运行工具
python3 linpriv-map.py --help
```
## 🚀 使用方法
```
# 运行所有检查
python3 linpriv-map.py
# 运行特定检查
python3 linpriv-map.py --check suid
# 在摘要中仅显示 critical 发现
python3 linpriv-map.py --severity critical
# 保存 plain text 报告
python3 linpriv-map.py --output myscan
# 保存 JSON 报告
python3 linpriv-map.py --json
# 保存两种格式
python3 linpriv-map.py --output myscan --json
# 列出所有可用模块
python3 linpriv-map.py --list
# 帮助
python3 linpriv-map.py --help
```
## 📋 涵盖的权限提升向量
| # | 模块 | 检查内容 |
|---|--------|--------|
| 1 | SUID / GUID / Sticky Bit | SUID 二进制文件,GUID 二进制文件,sticky bit 配置错误 |
| 2 | Sudo 权限 | NOPASSWD 条目,危险的 sudo 二进制文件 |
| 3 | Cron Jobs | /etc/crontab,cron.d,可写的 cron 脚本 |
| 4 | 内核版本 | 枚举内核版本以进行手动 CVE 查找 |
| 5 | 可写路径 | 可写的 $PATH 目录,可写的系统文件 |
| 6 | Linux Capabilities | 通过 getcap 检查 cap_setuid、cap_sys_admin 等 |
| 7 | 环境变量 | LD_PRELOAD、LD_LIBRARY_PATH、PYTHONPATH 滥用 |
| 8 | NFS 共享 | /etc/exports 中的 no_root_squash、no_all_squash |
| 9 | 密码文件 | /etc/shadow 可读,敏感文件可写 |
| 10 | 服务漏洞利用 | 可写的服务文件和二进制文件 |
| 11 | 端口转发 | 仅限 localhost 的服务,隧道工具 |
| 12 | 用户组 | docker、lxd、shadow、disk、sudo、adm 组 |
| 13 | 易受攻击的软件 | 已安装软件的版本枚举 |
| 14 | 弱文件权限 | 关键文件权限,SSH 目录权限 |
| 15 | 正在运行的进程 | Root 进程,感兴趣的服务 |
## 📁 输出示例
# 可能的向量:SUID / GUID / Sticky Bit
## 🚨 CRITICAL 发现
### 发现 SUID 二进制文件
**二进制文件:**
1. `/usr/bin/find`
2. `/usr/bin/python3`
**风险:**
无论调用用户是谁,这些二进制文件均以 root 身份运行。
**下一步操作:**
```
find . -exec /bin/sh -p \; -quit
```
参考:https://gtfobins.github.io/
📊 扫描摘要
```
[CRITICAL] SUID Binaries (2 findings)
[CLEAN] Sudo Rights
[HIGH] SSH Dir Perms (1 finding)
[!] 2 CRITICAL vector(s) found — prioritize these!
```
## ⚠️ 免责声明
## 🧠 技术经验总结
构建 `linpriv-map` 让我亲自动手实践了以下概念:
### 🐍 Python
- 模块化项目架构 — 将关注点分离到 `core/` 和 `checks/` 包中
- `argparse` — 构建带有标志、帮助文本和示例的专业 CLI 接口
- `subprocess` — 从 Python 运行 shell 命令并安全地捕获输出
- `colorama` — 跨平台的终端彩色输出
- `glob` — 对文件系统路径进行模式匹配,如 `/home/*/.ssh/`
- `io.StringIO` — 以编程方式捕获 stdout 输出以保存报告
- `json` — 读取和写入结构化数据,用于本地 GTFOBins 参考和 JSON 报告
- `os.path`, `os.access` — 以可移植的方式检查文件是否存在、读写权限
- 虚拟环境 — 干净地隔离项目依赖项
- 常量文件模式 (`vectors.py`) — 避免硬编码字符串,使代码重构更安全
### 🔐 Linux 权限提升
- SUID/GUID 二进制文件 — 它们的工作原理以及为什么在功能强大的二进制文件上设置它们时会很危险
- GTFOBins — 常见的 Linux 二进制文件(如 find、python、vim)如何被滥用于权限提升
- Sticky Bit — 危险的全局可写目录与受正确保护的目录之间的区别
- Sudo 配置错误 — NOPASSWD 条目,sudoers 中危险的二进制文件组合
- Cron job 滥用 — 由 root cron job 调用的可写脚本,通过 cron 进行 PATH 劫持
- 内核版本枚举 — 识别内核以进行手动 CVE 研究(DirtyCOW、DirtyPipe 等)
- 可写 PATH 劫持 — 将恶意二进制文件放置在可写的 $PATH 目录中
- Linux Capabilities — cap_setuid、cap_sys_admin、cap_dac_override 及其提升权限的潜力
- 环境变量滥用 — LD_PRELOAD、LD_LIBRARY_PATH、PYTHONPATH 注入技术
- NFS 配置错误 — no_root_squash 和 no_all_squash 的利用技术
- 密码文件暴露 — /etc/shadow 可读,/etc/passwd 可写,SSH 私钥访问权限
- 服务漏洞利用 — 可写的 systemd 服务文件和以 root 身份运行的服务二进制文件
- 端口转发机会 — 通过 SSH 隧道或 socat 访问仅限 localhost 的服务
- 危险的组成员身份 — docker、lxd、shadow、disk、adm、video、staff 组的权限提升路径
- 弱文件权限 — 全局可读的敏感文件,不安全的 SSH 目录权限
### 🛠️ 工具设计
- 为什么整洁的输出很重要 — LinPEAS 导出所有内容,而有针对性的工具更有用
- 离线优先设计 — 将 GTFOBins 数据以 JSON 格式本地存储,适用于气隙环境
- 严重性分类 — CRITICAL 与 HIGH 与 INFO 与 NOT FOUND 的区别以及何时使用它们
- 报告生成 — 去除 ANSI 颜色代码以输出干净的纯文本文件
- 结构化发现 — 从每个模块返回标准化的结果字典以生成汇总表
- 一个文件一个职责 — 每个检查模块都是完全独立且可测试的
## 📜 许可证
本项目仅供教育和安全分析目的使用。
根据 [MIT 许可证](LICENSE) 授权。
## 👨💻 作者
**Rohit** — 为网络安全社区而构建。
*版权所有 (c) 2026 Rohit (ronnie3402)*
标签:GTFOBins, Python, Web报告查看器, 协议分析, 安全审计工具, 无后门, 本地枚举, 权限提升, 逆向工具