⓬⁄₄ ⟦ OSCP ⬖ 研记 ⟧ Linux权限提升 ➱ Linux系统枚举-Ⅳ

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀​

​​

▶信息收集 ➢ Linux权限提升 ➢ Linux系统枚举-Ⅳ 🔥🔥🔥

▶ 漏洞检测
▶ 初始立足点

▶ 权限提升
▶ 横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.Linux权限提升

[1.2 Linux系统枚举](#1.2 Linux系统枚举)

[1.2.2 手动枚举Linux系统](#1.2.2 手动枚举Linux系统)

[1.2.2.11 检查设备驱动程序和内核模块](#1.2.2.11 检查设备驱动程序和内核模块)

1.内核模块概述

2.为什么要检查内核模块

3.枚举实践

[1.2.2.12 寻找 SUID/SGID 权限文件](#1.2.2.12 寻找 SUID/SGID 权限文件)

[1.什么是 SUID 与 SGID权限](#1.什么是 SUID 与 SGID权限)

[2.安全风险:SUID 提权](#2.安全风险:SUID 提权)

3.枚举实践

4.示例输出与利用思路

[1.2.3 自动化枚举](#1.2.3 自动化枚举)

[1.2.3.1 使用 unix-privesc-check 自动化枚举](#1.2.3.1 使用 unix-privesc-check 自动化枚举)

1.脚本基本信息

2.运行模式

3.典型用法:传输脚本至目标并执行

[4.输出示例:发现 /etc/passwd 可写](#4.输出示例:发现 /etc/passwd 可写)

[1.2.3.2 其他自动化脚本](#1.2.3.2 其他自动化脚本)

1.常用自动化工具速览

2.自动化工具的局限性

[3.自动化 + 手动 = 最佳实践](#3.自动化 + 手动 = 最佳实践)

[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)


1.Linux权限提升

本系列内容围绕以下四大部分展开,本文是第一部分:++Linux系统枚举++。

攻击向量 核心概念 典型检查/利用方法 关键风险点
1. 系统枚举 全面侦查,像侦探一样收集一切可能指向弱点的线索。 - 检查系统配置、用户与组、历史命令。 - 枚举运行服务、网络连接、进程。 - 列出安装软件、内核版本、计划任务。 信息收集不全面,导致错过关键漏洞入口。
2. 暴露的机密信息 系统或应用中意外留存的可直接利用的敏感数据。 - 查找 配置文件中的硬编码密码。 - 搜索 日志文件中的敏感数据或错误信息。 - 检查环境变量中的密钥、令牌或密码。 访问凭证直接泄露,提供最直接的攻击突破口。
3. 不安全的文件权限 文件或目录的权限设置不当,允许低权限用户进行越权操作。 - 全局可写文件/目录 :任何用户可修改,用于注入恶意代码或替换文件。 - 不当所有权 :低权限用户拥有关键系统文件,可直接修改。 - SUID/SGID滥用:高权限程序存在漏洞或配置错误,可被利用来获取其权限。 通过文件系统层面的配置错误,绕过权限限制。
4. 利用系统组件 利用操作系统内核、系统服务或第三方应用程序中存在的漏洞。 - 脆弱服务 :攻击以高权限(如root)运行的未更新或配置不当的服务。 - 内核漏洞 :利用操作系统内核本身的漏洞直接提权。 - 软件漏洞:利用第三方应用(如编辑器、数据库)的漏洞执行高权限代码。 利用代码层面的漏洞,实现权限的实质性提升。

1.2 Linux系统枚举

1.2.2 手动枚举Linux系统

接前文。

1.2.2.11 检查设备驱动程序和内核模块

在权限提升过程中,利用内核模块或设备驱动程序的已知漏洞 是高级攻击者的常用手法。

可以手动枚举已加载的内核模块 ,并提取模块详细信息,为后续漏洞匹配奠定基础。

1.内核模块概述

①什么是内核模块?

🔧 **Linux的内核模块(Kernel Module,*.ko文件):**可在Linux内核中动态加载/卸载的代码片段。它们通常用于扩展内核的功能,而不需要重启或重新编译内核。通过内核模块,用户和开发者可以在运行时增加、修改或删除内核的功能。

另,在Windows 中的"对等物"是***.sys文件**。

②内核模块的核心作用?

作用分类 具体说明 示例模块
🖥️ 硬件支持 为显卡、网卡、存储设备等提供驱动程序 nvidia、e1000
📁 文件系统 支持不同文件系统类型(如 NTFS、FAT、EXT) ntfs3、ext4
🌐 网络协议 实现额外的网络协议或功能 ip_vs、bridge
🛡️ 其他扩展 安全性、监控、性能优化等 audit、kvm

③内核模块的三大特点?

序号 特点 说明
1 动态加载与卸载 无需重启,按需加载/卸载,灵活应对变化
2 模块化管理 内核只保留基础功能,其他功能以模块形式按需添加,节约资源
3 依赖自动处理 模块间可存在依赖关系,内核自动加载所需依赖模块

④内核模块的文件格式?

内核模块以**.ko** (Kernel Object)为扩展名,是经过编译的二进制文件,存放于 **/lib/modules/$(uname -r)/**目录下。形如:

bash 复制代码
$ file /lib/modules/5.10.0/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
e1000.ko: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=..., not stripped

**⑤形象比喻:**内核 = 公司管理层,内核模块 = 外部部门

  • 内核:始终运行,负责公司最基础的运作。

  • 内核模块 :仅在需要时加载(聘用) ,任务结束后卸载(解聘),不干扰核心运转。

  • 动态性:无需关停公司即可调整部门配置。

内核模块加载与卸载就像公司在不同时间根据需求选择外部部门。

比如:

当公司需要开拓新市场时,市场部门(内核模块)就会被引入。

当市场推广活动结束后部门可以临时退出,公司的管理层可以继续运作。

加载模块:类似于公司在需要时邀请新的外部部门进来帮助工作。

卸载模块:当任务完成后,外部部门可以被临时解雇,资源得到释放。

2.为什么要检查内核模块
  • 内核模块运行在最高特权级(Ring 0) ,一旦存在漏洞,可导致本地权限提升 或容器逃逸。

  • 攻击者需要获取目标上加载的模块列表 及版本信息,才能定位对应的利用程序。

  • 即使模块本身无漏洞,其依赖关系 或错误配置也可能成为突破口。


3.枚举实践

①列出当前已加载的内存模块

bash 复制代码
$ lsmod
列名 说明
Module 内核模块名称(如 libata、ext4)
Size 模块占用的内存大小(字节)
Used by 依赖该模块的其他模块或进程计数;若 >0,表示正被使用

📌 用途 :快速识别当前活跃的模块,尤其关注第三方/非标准模块。

②查询指定模块的详细信息

bash 复制代码
$ /sbin/modinfo libata
复制代码
![](https://i-blog.csdnimg.cn/direct/a2df3bb9026b4c3694d042696d8c634a.png)​
字段 说明
filename 模块文件路径
version 模块版本号(漏洞匹配的关键)
license 许可证类型(GPL 等)
author 模块作者
depends 依赖的其他模块(可追溯攻击面)
parm 模块可接受的参数(可能暴露配置缺陷)

⚠️ 注意 :modinfo 需要完整路径(如 /sbin/modinfo)或在 PATH 中;部分发行版需要 -b 指定备用内核目录。
🛡️ 防御视角:

  • 定期审计已加载模块,移除非必需 或不再维护的第三方驱动。

  • 使用 modprobe 黑名单机制禁用高危模块。

  • 及时更新内核及模块至最新稳定版本,修复已知漏洞。


1.2.2.12 寻找 SUID/SGID 权限文件

在 Linux 权限体系中,SUID 与 SGID 是两类特殊的可执行文件权限 ,允许普通用户以文件所有者/组的身份 运行程序。若配置不当,它们将成为攻击者从普通用户通往 root 的直通车。

1.什么是 SUID 与 SGID权限
权限标志 全称 作用 表示位置
SUID Set User ID 执行时以文件所有者的 UID 运行,而非执行者的 UID 所有者执行位 (-rwsr-xr-x)
SGID Set Group ID 执行时以文件所属组的 GID 运行;对目录则继承所属组 组执行位 (-rwxr-sr-x)

🔣 权限位显示规则

  • 小写 s :SUID/SGID 生效,且文件可执行 (如 -rwsr-xr-x)

  • 大写 S :SUID/SGID 生效,但文件不可执行 (如 -rwSr--r--)------ 通常无意义

原理:eUID 与权限继承

  • 通常进程的有效用户 ID (eUID) = 执行者的 UID

  • 若文件设置 SUID ,则 eUID = 文件所有者 UID

  • 若所有者是 root → 普通用户执行该文件时,进程以 root 权限运行

✅ 正常流程 :用户 A 运行程序 → 进程以 用户A 的权限执行

⚠️ SUID 流程 :用户 A 运行 root:root 且带 SUID 的程序 → 进程以 root 权限执行

2.安全风险:SUID 提权

如果一个 root 拥有的 SUID 二进制文件 存在漏洞或++可被篡改++ ,攻击者就能通过该程序以 root 身份执行任意命令 ,从而完全控制整个系统。

因此,在枚举阶段,要重点枚举此类权限。

典型利用场景:

  • 漏洞利用(如缓冲区溢出)

  • 调用其他程序(如 system())

  • 文件读写操作(如 SUID 的 cp、vim 等)

3.枚举实践

查找 SUID/SGID 文件。

bash 复制代码
# 查找所有设置了 SUID 位的普通文件(忽略错误)
$ find / -perm -u=s -type f 2>/dev/null

# 查找所有设置了 SGID 位的普通文件
$ find / -perm -g=s -type f 2>/dev/null

# 同时查找 SUID 或 SGID
$ find / -perm /6000 -type f 2>/dev/null

命令拆解:

  • /       → 从根目录开始递归

  • -perm -u=s → 精确匹配SUID 位设置

  • -type f  → 只查找普通文件(排除目录)

  • 2>/dev/null→ 丢弃"权限不足"错误,保持输出清晰

4.示例输出与利用思路
bash 复制代码
$ find / -perm -u=s -type f 2>/dev/null
/usr/bin/sudo
/usr/bin/passwd
/usr/bin/gpasswd
/bin/su
/bin/mount
/bin/umount
/bin/cp                <--- ⚠️ 如果 cp 被设置 SUID......

如果 /bin/cp 是 SUID root :普通用户可利用它覆盖系统敏感文件,例如:

bash 复制代码
$ cp /etc/passwd /tmp/passwd
# 编辑 /tmp/passwd 移除 root 密码
$ cp /tmp/passwd /etc/passwd   # 以 root 权限覆盖

→ 从而无密码切换至 root。

防御要点:

  • SUID/SGID 是 Linux 强大的权限机制,但也常成为提权突破口。

  • 枚举 SUID 文件是权限提升阶段的标准动作。

  • 重点关注 root 所有者 + 可执行 + 非必要 的 SUID 二进制文件。

  • 防御建议:移除不必要的 SUID 权限 ,使用 mount -o nosuid 挂载非系统分区。

🛡️ 一句话防御 :

每个 SUID root 文件都是系统权柄的延伸,必须像对待 root 密码一样谨慎保护。

至此,关于Linux系统的手动枚举告个段落。接下来,使用自动化工具进行自动枚举。


1.2.3 自动化枚举

1.2.3.1 使用 unix-privesc-check 自动化枚举

手动枚举 Linux 系统存在大量信息,耗时且易遗漏 。unix-privesc-check 是一个预装在 Kali 中的 Bash 脚本 ,专门用于自动化检查类 Unix 系统 的本地权限提升漏洞,快速发现因配置错误导致的可利用点。

1.脚本基本信息
属性 说明
名称 unix-privesc-check
路径 /usr/bin/unix-privesc-check(Kali 预装)
类型 Bash 脚本
目标 Linux / Unix 系统
功能 检查系统配置错误(如文件权限、SUID、服务配置等),定位可提权的脆弱点
2.运行模式
模式 命令示例 特点
标准模式 unix-privesc-check standard ✅ 速度优化,误报较少
详细模式 unix-privesc-check detailed 🔍 输出更详细的检查信息

💡 建议 :初次扫描使用 标准模式,快速获得高可信结果。

3.典型用法:传输脚本至目标并执行

由于目标通常无此脚本,需从 Kali 传输 到目标主机(如 Joe 的机器),然后运行并保存输出。

bash 复制代码
# 目标主机上执行(标准模式,输出重定向)
$ ./unix-privesc-check standard > output.txt

✅ 优点:

  • 全自动扫描

  • 输出可离线分析

  • 避免手工逐项检查的遗漏

4.输出示例:发现 /etc/passwd 可写

该脚本对常见文件的权限进行多次检查。例如,下面的摘录显示非root用户可写的配置文件:

🧨 风险解读

  • /etc/passwd 若任何用户可写,攻击者可直接:

    • 移除 root 密码

    • 添加新用户(UID 0)

    • 无密码切换至 root

  • 这是典型的权限配置错误,可被轻松利用。


1.2.3.2 其他自动化脚本

除了 unix-privesc-check,社区还提供了多款专门用于 Linux 权限提升枚举 的自动化脚本,其中 LinEnum 与 LinPEAS 是目前最活跃、更新最频繁的工具。

1.常用自动化工具速览
工具名称 类型 特点
LinEnum Bash 脚本 经典提权枚举脚本,输出清晰,检查项目全面
LinPEAS Bash 脚本 PEAS 家族成员,颜色高亮,检测项更细,积极维护
unix-privesc-check Bash 脚本 预装在 Kali,标准/详细双模式,误报较少

✅ 三者均无需安装 ,直接传输到目标即可运行,是渗透测试人员标准弹药。

2.自动化工具的局限性

🧠 关键认知 :没有万能脚本 。每个系统都有独特的配置、定制化路径、手工部署软件 ,自动化工具必然会遗漏部分漏洞点。

局限性 说明
规则固化 脚本基于预设检查规则,无法覆盖非常规配置
误报与漏报 标准模式减少误报,但可能跳过真实漏洞;详细模式则增加噪音
无法理解业务上下文 无法判断某个文件是否本应可写,无法识别后门或隐藏依赖
对抗性检测 若目标被植入反枚举机制,自动化脚本可能被欺骗或绕过
3.自动化 + 手动 = 最佳实践
  • 自动化 :快速覆盖通用脆弱点(SUID、可写文件、内核版本等)

  • 手动 :深挖自动化遗漏的特殊目录、自定义服务、遗留备份

💬 强调 :
"检查只能通过手动检查才能捕捉到的独特配置非常重要。"

接下来,将根据枚举获得的信息来采取行动,以提升我们的特权。


欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

​

相关推荐
m0_547486664 小时前
《信息安全基础》全套PPT课件2026
网络安全·信息安全
m0_715674436 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
大数据·网络·人工智能·网络安全
晓德14 小时前
7、LLM 模型是怎么训练生成的?(4)指令微调
人工智能·学习·算法·信息安全
白帽攻防录14 小时前
SRC 挖洞:Apache APISIX 非规范路径授权绕过深度复盘,CVE-2026-94269 怎么绕过网关访问后端
网络安全·apache·src漏洞挖掘
学逆向的1 天前
win32注入代码
开发语言·网络安全·api·win32
Web Security Loop1 天前
MAC安装最新Burpsuite pro详细步骤教程
web安全·macos·网络安全·安全性测试
墨云安全1 天前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
腾科IT教育1 天前
CISP是什么证书?含金量、报名条件与用途解析
信息安全·cisp·cisp认证·cisp报名条件·国家级证书
刘婉晴1 天前
【APP安全测试】Frida 基础
网络安全
科技象限1 天前
数据防泄密系统怎么选?看它怎么把几道防线叠成网
运维·安全·网络安全·安企神