SaraaIhab/Linspect-LinuxInspector

GitHub: SaraaIhab/Linspect-LinuxInspector

一个用于Linux系统权限提升枚举的安全审计脚本。

Stars: 0 | Forks: 0

# linspect.py — Linux 权限提升枚举工具 ## 概述 `linspect.py` 是一个手动 Linux 权限提升枚举工具,也是 [LinPEAS](https://github.com/carlospolop/PEASS-ng) 的基准比较工具。它系统地审计 Linux 系统中常见的错误配置和漏洞,这些可能允许低权限用户提升至 root 权限。 该工具完全使用 Python 3 标准库编写 — 无需任何外部依赖项。 ## 工作原理 主要导入项包括 `subprocess`,用于从 Python 脚本内部运行 shell 命令;`os`,用于与操作系统和平台交互;以及 `platform`,用于获取系统信息(如主机名)。开头定义的常量,如 `GREEN = "\033[92m"` 和 `CYAN = "\033[96m"` 是 ANSI 转义码,其目的是使输出结果更易于人类阅读和快速查看。 主要有四个辅助函数。首先,`run()` 作为 Python 代码与外部 shell 之间的网关,设置了 10 秒超时,以避免被缓慢的命令阻塞。其次,`section()` 用于打印标题,让最终用户知道当前扫描正在运行哪个部分。这是一个纯装饰性的函数。第三,`finding()` 使用开头定义的 ANSI 转义码打印发现结果。最后,`record()` 将所有发现结果存储在一个字典中,准备用于 JSON 导出。 ## 10 个检查模块 ### 1. `check_system_info()` — 系统信息 通过运行 `whoami` 和 `os.getuid()` 来识别当前用户,并运行 `id` 列出所有组成员身份,以收集有关机器的上下文信息。如果 UID 为零,则用户已经是 root,此时工具会通知无需进行权限提升,且持久化向量更为相关。 ### 2. `check_kernel()` — 内核漏洞匹配 字典中存储了四个最知名的内核漏洞。工具运行 `uname -r` 获取完整的内核字符串,并检查它是否与四个漏洞前缀中的任何一个匹配。如果发现匹配,则标记为严重警告。否则,会提醒用户未找到自动匹配。此函数还检查并显示已安装的 `sudo` 版本。 ### 3. `check_suid()` — SUID / SGID 二进制文件 运行 `find / -perm -4000` 和 `find / -perm -2000` 来查找设置了 SUID 或 SGID 位的文件。SUID 位允许二进制文件以其所有者(通常是 root)的权限运行。虽然对于像 `/bin/passwd` 这样的命令是合法的,但对于像 `find` 这样的实用程序是危险的,因为它可能生成一个特权 shell。找到的二进制文件会与策划的 `GTFOBIN_SUID` 列表进行交叉参考 — 任何匹配项都被标记为 CRITICAL。 ### 4. `check_world_writable()` — 全局可写文件与目录 运行 `find / -writable -type f`(排除 `/proc`、`/sys` 和 `/dev` 等虚拟文件系统)来查找任何人都可以写入的文件。结果会与敏感路径列表(`/etc`、`/opt`、`/var/www` 等)进行交叉参考 — 任何匹配项都被标记为 CRITICAL,因为由 root 拥有的进程读取全局可写的配置文件是一个直接的权限提升向量。 ### 5. `check_cron()` — Cron 任务分析 Cron 任务是基于时间的调度器,按设定的时间间隔运行预定义任务。工具检查三个来源: - `/etc/crontab`:检查系统范围的 cron 任务 - `/etc/cron.d/`:一个 cron 目录的存放位置 - `/var/spool/cron/crontabs`:检查每个用户的 cron 任务 如果 cron 任务引用的任何脚本是全局可写的,则任何用户都可以注入将以 root 权限执行的命令。 ### 6. `check_sudo()` — Sudo 配置 运行 `sudo -l` 并检查两种危险模式: - **NOPASSWD**:用户可以无需密码以 root 权限运行某些命令 - **ALL**:广泛的权限,表明用户可以以 root 权限运行任何命令 ### 7. `check_services()` — 服务与进程 运行 `ps aux | grep '^root'` 列出所有由 root 拥有的进程,然后搜索可写的 systemd 服务文件。如果可以修改某个 `.service` 文件,则可以在下次服务重启或系统重启时,通过更改其 `ExecStart` 指令以 root 身份执行任何有效负载。 ### 8. `check_path()` — PATH 劫持 检查当前用户的 `$PATH` 环境变量中的任何目录是否可写。如果是,攻击者可以植入一个具有常见名称(例如 `ls`、`id`)的恶意二进制文件,当特权进程调用时,该文件会替代真实命令执行。如果 `$PATH` 中包含 `.`(当前目录),也会进行标记。 ### 9. `check_interesting_files()` — 凭据与密钥 搜索高价值目标,包括: - `~/.bash_history`:命令历史记录,通常包含明文密码 - `id_rsa` / `id_ed25519`:SSH 私钥,可实现横向移动 - `/etc/shadow`:哈希密码(在正常条件下仅 root 可读) - `.env` 文件:API 密钥和数据库凭据 - `.my.cnf`:通常以明文形式存储的 MySQL 凭据 - 包含单词 `password` 的配置文件 ### 10. `check_network()` — 网络暴露 使用 `ss -tlnp` 列出所有正在监听的 TCP 服务。标记绑定到 `127.0.0.1`(回环地址)的服务 — 这些服务不暴露于网络,但本地攻击者可以访问,并且可能通过端口转发加以利用。 ## 输出与报告 所有检查完成后,工具会按严重性打印发现摘要: | 严重性 | 含义 | |--------|------| | 💀 CRITICAL | 可直接利用的错误配置 | | ⚠️ WARNING | 潜在危险 — 需手动审查 | | ℹ️ INFO | 仅供参考 — 值得注意 | | ✅ OK | 未检测到问题 | 完整的 JSON 报告将保存到 `/tmp/privesc_report_.json`,以供离线审查或与 LinPEAS 输出进行比较。 ## 使用方法 ``` # 克隆 repo git clone https://github.com/SaraaIhab/Linspect-LinuxInspector.git cd Linspect-LinuxInspector/ # 运行该工具 (Python 3,无需依赖项) python3 privesc_enum.py ``` ## 项目结构 ``` privesc_enum/ ├── privesc_enum.py # Main enumeration script ├── README.md # This file ├── LICENSE # MIT License └── sample_output/ └── example_report.json # Example JSON output ``` ## 免责声明 此工具**仅供教育目的**,仅限在授权环境中使用,例如: - 个人家庭实验室 - CTF (Capture The Flag) 挑战赛 - 获得书面许可的渗透测试项目 未经授权对不属于您的系统使用是**非法且不道德的**。作者对任何滥用行为不承担任何责任。 ## 许可证 MIT 许可证 — 详情请参阅 [LICENSE](LICENSE)。
标签:Linux权限提升, Python脚本工具, 低权限到root, 内核漏洞检测, 基准测试工具, 安全审计工具, 安全弱点识别, 手动安全审计, 无线安全, 权限提升枚举, 渗透测试辅助, 漏洞扫描工具, 系统信息收集, 系统枚举, 系统配置检查