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

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

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

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

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

▶ 漏洞检测
初始立足点

▶ 权限提升
横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.Linux权限提升

[1.1 Linux权限提升概述](#1.1 Linux权限提升概述)

[1.1.1 Linux权限提升路径图](#1.1.1 Linux权限提升路径图)

[1.1.2 关键技术要点](#1.1.2 关键技术要点)

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

[1.2.1 Linux文件与用户权限概述](#1.2.1 Linux文件与用户权限概述)

[1.2.1.1 核心理念:一切皆文件](#1.2.1.1 核心理念:一切皆文件)

[1.2.1.2 权限的构成:三层控制模型](#1.2.1.2 权限的构成:三层控制模型)

[1.2.1.3 实例解析:/etc/shadow 文件](#1.2.1.3 实例解析:/etc/shadow 文件)

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

[1.2.2.1 枚举当前登录用户的基本信息](#1.2.2.1 枚举当前登录用户的基本信息)

[1.2.2.2 枚举系统所有用户的基本信息](#1.2.2.2 枚举系统所有用户的基本信息)

[1./etc/passwd 文件字段深度解析](#1./etc/passwd 文件字段深度解析)

2./bin/bash深度解析

3./sbin/nologin深度解析

4.枚举信息分析

[1.2.2.3 枚举主机名与系统信息](#1.2.2.3 枚举主机名与系统信息)

1.主机名:识别系统角色的关键线索

2.操作系统与内核版本

3.渗透测试行动指南

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


1.Linux权限提升

1.1 Linux权限提升概述

权限提升: 是攻击者利用系统配置错误或软件漏洞,从普通用户权限升级至高权限(如root) 的过程。根据MITRE ATT&CK框架,这是一套系统化的攻击策略 ,旨在++突破权限边界访问受限资源++。

1.1.1 Linux权限提升路径图

1.1.2 关键技术要点

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

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

1.2 Linux系统枚举

先了解Linux上的文件和用户权限的概念后,然后开始手动枚举,最后使用自动化工具进行枚举。

1.2.1 Linux文件与用户权限概述

1.2.1.1 核心理念:一切皆文件

Linux 及UNIX 系统的设计哲学是,几乎所有资源(文件、目录、设备、进程信息等)都在文件系统中以 "文件" 的形式呈现和管理。这使得权限系统拥有一致且强大的控制力。


1.2.1.2 权限的构成:三层控制模型

每个**"文件"** 的访问权限由三个核心要素构成,形成一个清晰的 "谁-能做什么" 的控制矩阵。

维度 说明 表示符号
用户类别 定义权限应用的对象。 u (所有者), g (所属组), o (其他用户)
权限类型 定义允许的操作类型。 r (读), w (写), x (执行)
资源类型 权限的具体含义因资源是 文件 还是 目录 而不同。 文件(-), 目录(d)

🔧 权限 rwx 的具体含义:

权限 rwx 对文件和目录有着截然不同的操作意义,这是理解权限控制的关键。

权限 文件 的含义 目录 的含义
读取 (r) 查看文件内容。 列出 目录内的文件和子目录名(如 ls)。
写入 (w) 修改或清空文件内容。 可在目录内创建、删除、重命名文件或子目录。
执行 (x) 可将文件作为程序或脚本运行。 进入/穿越 该目录(如 cd),访问其内部项目。

💡 关键点 :目录的 x(执行) 权限是**"访问开关"**。

①目录有 r 权限,但没有 x 权限: 你依然无法进入或访问其中的具体文件。(可ls不可cd)

②如果有 x 但无 r 你只能通过已知的确切名称 来访问目录内已知的项目。(可cd不可ls)


1.2.1.3 实例解析:/etc/shadow 文件

通过 ls -l /etc/shadow 命令查看。

可以将其分解解读:

字段 示例值 含义解析
类型与权限 -rw-r----- -:这是一个普通文件rw-文件所有者 (root) 拥有读、写 权限。 r--所属组 (shadow) 拥有只读 权限。 ---其他用户 无任何权限。
所有者 root 文件属于 root 用户。
所属组 shadow 文件属于 shadow 用户组。

结论 :该配置严格限制了只有 root 用户能修改此关键密码文件,而 shadow 组内的程序(如身份验证服务)仅有读取权限,有效保护了系统安全凭证。


1.2.2 手动枚举Linux系统

🎯 手动枚举的核心优势:精准可控

  • 超越自动化 :手动枚举能发现自动化工具常忽略的、特定于环境的定制化配置错误

  • 全面探查:实现对目标系统更深层次、更细致的状态侦察。

1.2.2.1 枚举当前登录用户的基本信息
  • 命令id

  • 目的 :确认当前攻击立足点用户joe的用户身份(UID)组身份(GID) ,这是后续所有提权操作的基础上下文

  • 关键信息UID=1000, GID=1000 通常表示这是一个首个创建的普通用户


1.2.2.2 枚举系统所有用户的基本信息
  • 命令cat /etc/passwd

  • 目的 :获取系统完整用户清单,识别高价值目标与潜在攻击面。

  • 文件解读:每行代表一个用户,格式为:

    复制代码
    username:password:UID:GID:comment:home_directory:login_shell
1./etc/passwd 文件字段深度解析

以用户 **++joe:x:1000:1000:joe,,,:/home/joe:/bin/bash++**为例:

字段 示例值 含义与实战意义
登录名 joe 用于登录系统的用户名。
密码指示 x 重要 :密码哈希实际存储在受保护的 /etc/shadow 文件中。x 表示使用了影子密码机制。
用户ID (UID) 1000 关键枚举项0 代表 root1-999 通常为系统服务账户。1000+ 为普通用户。可寻找 UID=0 的非root用户名(后门账户)。
组ID (GID) 1000 该用户所在的特定的主要组ID。
描述信息 joe,,, 通常包含用户全名或描述,可能泄露个人信息或账户用途。
主目录 /home/joe 用户个人主目录的位置。检查是否存在及权限设置(是否可写)。
登录Shell /bin/bash 至关重要的枚举点:决定了用户能否获得交互式访问权限。
2./bin/bash深度解析

/bin/bash 就是你登录后看到的那个"黑屏命令行窗口"本身!

/bin/bash 是一个实实在在的可执行程序文件,就像你电脑上的QQ、微信一样,只是它的功能是提供一个命令行界面。

📁 文件系统视角

文件位置 文件类型 权限 作用
/bin/bash 二进制可执行文件 -rwxr-xr-x Bash Shell 解释器程序

🌟举个生活例子

类比 说明
👤 Linux 系统用户
计算机 💻 Linux 操作系统内核(真正干活的)
/bin/bash 🗣️ 翻译官 + 秘书 + 指挥官

具体来说:

  • 它是你的"翻译官" 🔤

    • 你输入 ls(人类语言)

    • /bin/bash 翻译成计算机能懂的指令

    • 计算机执行后,再把结果翻译成你能看懂的文字

  • 它是你的"智能秘书" 📁

    • 记住你常用的命令(按 ↑ 键找回历史命令)

    • 自动补全文件名(按 Tab 键)

    • 管理你的工作环境(环境变量)

  • 它是你的"指挥官控制台" 🎮

    • 提供命令输入界面(那个闪烁的光标 $#

    • 允许你运行程序、查看文件、管理系统

    • 支持脚本编程,批量执行任务

📊 Linux 主流Shell对比表:

特性对比 /bin/sh (爷爷辈) /bin/bash (全能冠军) /bin/zsh (豪华旗舰)
诞生时间 1977年 (最古老) 1989年 1990年
开发背景 最初的Unix Shell 为兼容并增强sh而开发 吸收bash、tcsh等优点
系统地位 POSIX标准 Linux默认交互Shell macOS默认Shell
脚本兼容 完全符合POSIX标准 高度兼容sh,但有扩展 基本兼容bash
交互体验 😐 简陋 😊 良好 😍 极佳
核心特点 稳定、轻量、快速 功能全面、兼容性强 智能补全、主题丰富、插件生态
典型用途 系统启动脚本、通用脚本 日常使用、系统管理 开发者、高级用户
  • /bin/bash ✅ = 用户可以登录并操作电脑(就像给你一个控制台)

  • 设为 /sbin/nologin 🚫 = 用户被禁止登录(就像锁上了控制台的门)

3./sbin/nologin深度解析

/sbin/nologin 是一个特殊的伪Shell程序 ,作用只有一个:礼貌地拒绝用户登录,是系统安全的"看门人"。

📊 核心功能对比表

特性 /sbin/nologin 普通Shell(如bash)
本质 拒绝登录程序 交互式命令解释器
行为 显示消息并立即退出 提供命令行界面
用途 安全限制 正常操作
输出 "此账户当前不可用" 命令提示符

🛡️ 两大核心用途

①系统服务账户保护

bash 复制代码
# 示例:Web服务器账户配置
www-data:x:33:33:www-data:/var/www:/sbin/nologin
  • 目的 :让服务账户(如 mysqlnginxredis只能运行服务,不能登录

  • 原理 :服务以该账户身份运行,但无法通过SSH或终端登录

  • 优势 :最小权限原则,大幅减少攻击面

②临时禁用用户账户

bash 复制代码
# 禁用用户而不删除账户
sudo usermod -s /sbin/nologin username
  • 场景

    • 员工离职但保留账户记录

    • 临时锁定可疑账户

    • 维护期间禁止访问

⚠️ 关键注意事项

  • 不是真正的Shell:没有命令行环境,只是一个"拒绝访问"程序

  • 仍然可以运行服务 :服务仍能以该用户身份在后台运行

  • 可自定义拒绝消息

    bash 复制代码
    # 创建自定义消息
    echo "账户已禁用,联系管理员" > /etc/nologin.txt

🔍 黑客视角:枚举与利用

bash 复制代码
# 查找使用nologin的账户
cat /etc/passwd | grep "/sbin/nologin"

# 检查是否有特权账户被误设(可能的后门)
cat /etc/passwd | grep "0:0" | grep "nologin"

潜在攻击向量

  • 如果 **root(0:0)**账户被误设为nologin ➡️ 可能导致管理员无法登录

  • 寻找 UID=0 但使用nologin的账户(可能是隐藏后门)

  • 尝试提权到nologin账户运行服务(通过服务漏洞)

4.枚举信息分析

通过以上分析 /etc/passwd,我们可以:

  • 识别特权用户 :立即锁定 UID=0root及任何其他特权账户。

  • 推断已安装服务 :如 www-data 用户暗示存在Web服务器,sshd 用户暗示SSH服务运行。

  • 定位用户目录:为后续搜索用户主目录下的敏感文件(如SSH密钥、历史记录、配置文件)提供目标路径。

  • 评估安全配置:检查服务账户是否使用了安全的非登录Shell。


1.2.2.3 枚举主机名与系统信息
1.主机名:识别系统角色的关键线索

主机名是企业IT资产管理的重要标识,通常遵循标准化命名规范 ,可直接揭示服务器的功能、位置和用途

命令

bash 复制代码
hostname  # 获取准确主机名(不依赖可能被篡改的提示符)

实战解读示例

bash 复制代码
主机名:debian-web01
分解解读:
├── debian    # 操作系统类型
└── web01     # 功能角色(Web服务器) + 编号

📊 主机命名规范常见模式:

命名段 示例 含义推断
位置 nyc-bj- 纽约、北京数据中心
环境 prod-dev-test- 生产、开发、测试环境
功能 webdbmaildc Web服务器、数据库、邮件服务器、域控制器
操作系统 windebrhel Windows、Debian、RedHat系统
编号 0102 同类服务器序号

💡 渗透测试价值 :识别dev-test-环境服务器,这些安全防护较弱,是理想的攻击跳板。

2.操作系统与内核版本

信息源出自

信息源 命令 获取信息
发行版信息 cat /etc/issue 操作系统名称与版本
详细发行版信息 cat /etc/*-release 发行版代号、版本号、支持状态
内核与架构 uname -a 内核版本、系统架构、主机名

典型输出示例

bash 复制代码
# 1. 发行版信息
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
VERSION_ID="10"
# 关键:Debian 10,代号"buster"

# 2. 内核信息
$ uname -a
Linux debian-web01 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux
# 关键:内核4.19.0,x86_64架构

📈 版本信息的攻防价值:

信息类型 攻击方利用 防御方视角
内核版本 搜索对应版本的内核漏洞 (如Dirty Pipe、Dirty Cow) 及时更新内核补丁
发行版与版本 查找特定发行版的已知漏洞 和利用工具 关注发行版安全公告
系统架构 确定攻击载荷架构 (x86_64、ARM、32/64位) 统一架构以简化管理
主机名模式 推测网络拓扑,定位关键服务器 使用随机化或混淆命名

⚠️ 高级枚举技巧

bash 复制代码
# 1. 查找内核模块(可能包含漏洞)
lsmod  # 列出已加载内核模块

# 2. 检查系统运行时间(判断更新频率)
uptime  # 运行时间长的系统可能未及时更新

# 3. 获取完整系统信息(需要安装)
sudo apt install inxi && inxi -F  # 全面系统报告
3.渗透测试行动指南
  • 第一步:基础识别

    bash 复制代码
    hostname && uname -a && cat /etc/issue
  • 第二步:漏洞关联

    • 内核版本 → 搜索内核提权漏洞

    • 发行版版本 → 查找发行版特定安全问题

    • 架构信息 → 准备对应架构的exploit

  • 第三步:环境推断

    • 主机名含db → 目标:数据库凭证、敏感数据

    • 主机名含dc → 目标:域控制器、活动目录

    • 主机名含dev → 目标:开发环境、测试凭证

🎲 攻防对抗 :专业防御者会混淆主机名限制系统信息泄露,但基础系统命令的准确信息仍是权限提升的关键起点。


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

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

相关推荐
小白同学_C5 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖5 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
不做无法实现的梦~7 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
默|笙9 小时前
【Linux】fd_重定向本质
linux·运维·服务器
陈苏同学9 小时前
[已解决] Solving environment: failed with repodata from current_repodata.json (python其实已经被AutoDL装好了!)
linux·python·conda
“αβ”9 小时前
网络层协议 -- ICMP协议
linux·服务器·网络·网络协议·icmp·traceroute·ping
不爱学习的老登10 小时前
Windows客户端与Linux服务器配置ssh无密码登录
linux·服务器·windows
小王C语言11 小时前
进程状态和进程优先级
linux·运维·服务器
xlp666hub11 小时前
【字符设备驱动】:从基础到实战(下)
linux·面试
弹幕教练宇宙起源12 小时前
cmake文件介绍及用法
android·linux·c++