⓬⁄₅ ⟦ OSCP ⬖ 研记 ⟧ Linux权限提升 ➱ 寻觅暴露的机密信息实现提权

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

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

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

​​​

▶ 信息收集

▶ 漏洞检测
初始立足点

权限提升 ➢ Linux权限提升 ➢ 寻觅暴露的机密信息实现提权 🔥🔥🔥
横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.Linux权限提升

[1.1 寻觅暴露的机密信息实现提权](#1.1 寻觅暴露的机密信息实现提权)

[1.1.1 检查"配置文件"获取敏感信息实现提权](#1.1.1 检查“配置文件”获取敏感信息实现提权)

[1.1.1.1 .bashrc文件概述](#1.1.1.1 .bashrc文件概述)

[1..bashrc 文件是什么](#1..bashrc 文件是什么)

[2..bashrc 的主要作用](#2..bashrc 的主要作用)

[3.为什么 .bashrc如此重要](#3.为什么 .bashrc如此重要)

[4..bashrc 文件的特点](#4..bashrc 文件的特点)

[5.如何修改 .bashrc](#5.如何修改 .bashrc)

[6.渗透测试视角:为什么关注 .bashrc](#6.渗透测试视角:为什么关注 .bashrc)

[1.1.1.2 Linux环境变量概述](#1.1.1.2 Linux环境变量概述)

1.环境变量是什么

2.环境变量的主要用途

3.常见的环境变量示例

4.如何查看和设置环境变量

[5. env 命令是什么](#5. env 命令是什么)

6.环境变量和.bashrc的关系

[1.1.1.3 从"配置文件"中挖掘密码实践](#1.1.1.3 从“配置文件”中挖掘密码实践)

[1.1.2 构建密码字典并暴力破解SSH账户实现提权](#1.1.2 构建密码字典并暴力破解SSH账户实现提权)

[1.1.2.1 从已知模式生成自定义字典](#1.1.2.1 从已知模式生成自定义字典)

[1.1.2.2 Hydra 远程暴力破解 SSH 服务](#1.1.2.2 Hydra 远程暴力破解 SSH 服务)

[1.1.2.3 成功登录并提权至root](#1.1.2.3 成功登录并提权至root)

[1.以 eve 身份登录 SSH](#1.以 eve 身份登录 SSH)

[2.检查 sudo 权限](#2.检查 sudo 权限)

[3.一键提升到 root 权限](#3.一键提升到 root 权限)

[1.1.2.4 关键点总结](#1.1.2.4 关键点总结)

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


1.Linux权限提升

本系列内容围绕以下四大部分展开,本文是第二部分:++寻觅暴露的机密信息实现提权++

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

1.1 寻觅暴露的机密信息实现提权

在渗透测试中,时间宝贵,应优先关注那些容易获取成果的目标和漏洞------也就是 "低悬的果实"(Low‑Hanging Fruit) 🍎。其中一个重点目标就是用户历史文件 ,这些文件常常包含:明文用户信息 ,甚至可能直接泄露密码或其他身份验证材料。


1.1.1 检查"配置文件"获取敏感信息实现提权

1.1.1.1 .bashrc文件概述

Linux 系统中,应用程序经常在用户主目录下存储特定于用户的配置文件和子目录 。这些文件通常以点(.)开头,因此被称为 dotfiles (点文件)。点前缀的作用是让它们在执行基本列表命令 ls 时默认不显示,具有一定的隐蔽性。

一个典型的点文件例子就是++.bashrc++ 。当从现有登录会话打开新终端窗口或启动一个新的 shell 实例时,Bash 会自动执行该脚本。用户可以在 .bashrc 中设置额外的环境变量,使其在新 shell 启动时自动生效。

1..bashrc 文件是什么

.bashrc 是一个位于用户主目录(~/.bashrc)的配置文件 ,用于定制 Bash 环境。当一下情况的时候,Bash 都会读取并执行该文件中的命令:

  • 打开新的本地终端窗口

  • 建立新的 SSH 远程会话

  • 启动一个新的 Bash 子 shell 时(例如执行 bash 命令)

一句话概括:它是你终端环境的"启动脚本",让你的命令行每次都以你喜欢的方式工作。

2..bashrc 的主要作用
作用 描述
定义环境变量 设置 PATHHOME 等变量,告诉系统在哪里寻找可执行文件。
设置别名 为长命令创建简短别名,例如 alias ll='ls -al'
自定义提示符 改变命令行提示符的外观,如:显示用户名、当前路径等。
命令历史设置 配置历史命令的保存条数、是否忽略重复命令等。
启用特性和插件 加载 Git 自动补全、Python 虚拟环境等扩展功能。
3.为什么 .bashrc如此重要

因为每次打开终端都会加载它 ,所以 .bashrc中的设置会持续影响你的每一次命令行操作。通过它,你可以:

  • 提高工作效率(别名、自动补全)

  • 让终端更符合个人习惯(提示符、环境变量)

  • 但同时也可能无意中泄露敏感信息 (例如将密码硬编码在脚本中)

4..bashrc 文件的特点
  • ✅ 是一个 Bash 脚本文件,可以包含任意合法的 Bash 命令。

  • ✅ 在每次启动新的交互式 Bash 会话时自动执行。

  • ✅ 主要用于设置持久的环境变量、别名、函数等,让配置在每次登录时都生效。

  • ✅ 修改后需执行 source ~/.bashrc 或重新打开终端才能使更改生效。

5.如何修改 .bashrc
  • 打开文件进行编辑:

    bash 复制代码
    nano ~/.bashrc
  • 文件末尾添加需要的配置(例如环境变量、别名)。

  • 保存并退出(在 nano 中按 Ctrl+X,然后按 Y 确认保存)。

  • 使修改立即生效:

    bash 复制代码
    source ~/.bashrc
6.渗透测试视角:为什么关注 .bashrc

因为用户(或管理员)有时为了方便,会直接在 .bashrc 中写入明文密码、API 密钥或数据库连接串,使用的时候就无需每次都输入密码很麻烦。例如:

bash 复制代码
export DB_PASSWORD="mySecretPassword123"

这些敏感信息一旦被攻击者获取,就可能直接用于横向移动或权限提升。因此,在渗透测试中,检查主目录下的点文件(尤其是 .bashrc)是获取"低悬果实"的快速途径之一


1.1.1.2 Linux环境变量概述

除了上述的.bashrc文件,也要检查环境变量。系统管理员有时为了方便,会将凭据(如密码)直接存储在环境变量 中(在命令行中使用命令env查看 ),以便自定义脚本调用身份验证。

1.环境变量是什么

环境变量是操作系统中一组动态的命名值 ,它们影响着运行中的进程和 shell 的行为。可以把它想象成操作系统的 "便利贴" 📝------上面写着一些重要信息,任何程序都可以随时查看并根据这些信息调整自己的行为。

在 Linux 中,每个进程都有自己的环境变量副本,这些变量通常从父进程继承而来。

2.环境变量的主要用途
用途 说明
配置程序行为 程序通过读取环境变量来决定运行模式、语言、默认设置等。
定义系统路径 PATH 告诉 shell 去哪里找可执行文件。
个性化用户环境 HOME 指明用户主目录,USER 显示当前用户名。
传递信息给进程 父进程可以通过环境变量向子进程传递配置或参数。
控制终端行为 TERM 指定终端类型,影响屏幕显示效果。
3.常见的环境变量示例
变量名 作用 示例值
PATH 可执行文件的搜索路径 /usr/local/bin:/usr/bin:/bin
HOME 当前用户的主目录 /home/username
USER 当前用户名 alice
LANG 系统语言和字符编码 en_US.UTF-8
SHELL 当前使用的 shell 路径 /bin/bash
PWD 当前工作目录 /home/username/projects
EDITOR 默认编辑器 vimnano
4.如何查看和设置环境变量
  • 查看所有环境变量envprintenv

  • 查看单个变量echo $PATH

  • 临时设置(仅对当前会话有效)export MY_VAR=hello

  • 永久设置 :将 export 语句写入 shell 配置文件,如 ~/.bashrc~/.profile

5. env 命令是什么

env 是一个用于显示或临时修改环境变量的命令行工具。它主要有以下用途和特点:

功能 说明
显示环境变量 不加参数运行 env,会列出当前 shell 的所有环境变量(键值对)。
临时运行命令 可以在临时设置的环境变量下执行一条命令,不影响当前会话。
传递临时变量 启动程序时,可为该程序单独指定临时的环境变量。

🧩 env 的特点:

  • 是一个命令,不是配置文件。

  • ✅ 常用于快速查看 当前环境变量(如 PATHHOME 等)。

  • ✅ 也可用于在运行命令时临时覆盖或添加环境变量,仅对本次命令生效。

临时修改环境变量(仅对当前会话有效):

可以直接在命令行中使用 env 设置环境变量并运行命令,例如:

复制代码
export VAR NAME="value"
export PATH=$PATH:/new/path

临时修改后会在当前终端的环境下执行,但不会影响当前 shell 的其他操作。关闭终端后,临时设置自然失效。

6.环境变量和.bashrc的关系

🧩 env 命令显示什么?

env 输出的是当前 shell 会话的环境变量 (例如 PATHHOMEUSER 等)。这些变量是键值对,它们决定了 shell 和运行的程序的行为。

📄 .bashrc 文件是什么?

.bashrc 是一个 shell 脚本文件 ,位于用户主目录下。当启动一个新的 交互式非登录 shell(例如打开一个新终端)时,Bash 会自动执行它。

🧪 举个例子:

假设 .bashrc 中有以下内容:

bash 复制代码
export MY_VAR="hello"          # 设置环境变量
alias ll='ls -al'              # 定义别名
echo "Welcome back!"           # 直接执行命令

执行 env 后,会看到 MY_VAR=hello 出现在输出中,但不会看到 alias ll='ls -al'echo 命令本身。因为别名不是环境变量,echo 命令只是执行一次,不会变成环境变量。

🌐 (重要)环境变量来自多个地方!!!

env 显示的变量可能来源于:

  • 系统级配置文件:/etc/environment/etc/profile

  • 用户级配置文件:~/.bashrc~/.profile~/.bash_profile

  • 父进程继承(例如从桌面环境启动的终端)

  • 命令行临时设置(如 export TEMP_VAR=123

所以,.bashrc 只是众多来源之一,env 的内容是所有来源叠加后的最终结果


1.1.1.3 从"配置文件"中挖掘密码实践
  • 发现 :在目标 Debian 机器上,通过 env 命令发现一个不寻常的环境变量:

    发现: 👉环境变量 SCRIPT_CREDENTIALS,其值看起来像是一个密码。

  • 下一步 :需要检查用户主目录下的 .bashrc 配置文件,因为环境变量通常在此定义。若能在 .bashrc 中找到该变量的赋值,即可确认并获取明文凭据。

  • 最终: 尝试登录。尝试root下使用新发现的密码lab 登录。登录成功,表明拿到root权限。

一句话总结 :环境变量中若出现类似密码的条目(如 SCRIPT_CREDENTIALS),应追溯其来源(如 .bashrc),这可能是渗透测试中快速获取敏感信息的途径之一。

因此,在环境变量中存储明文密码是不安全! 为了安全地使用交互式脚本进行身份验证,建议采用公钥身份验证,并使用密码短语保护私钥。


1.1.2 构建密码字典并暴力破解SSH账户实现提权

与其直接针对root账户(前一节),也可尝试获取之前发现的eve用户的访问权限。我们尝试构建一个从已知密码派生的++自定义字典++,以尝试对eve的账户进行暴力破解。

1.1.2.1 从已知模式生成自定义字典

使用 crunch 工具根据目标密码习惯(Lab + 三位数字)生成一个 6 位长度 的字典,减少无效尝试。其中,Lab 就是假想的已知密码作为派生密码的基底。

bash 复制代码
$ crunch 6 6 -t Lab%%% > wordlist
参数 含义 示例值
6 6 密码最小/最大长度 6 个字符
-t Lab%%% 模板:前三位固定为 Lab,后三位为数字 Lab123Lab456
> wordlist 将生成的字典保存到文件 wordlist

生成的部分密码预览:


1.1.2.2 Hydra 远程暴力破解 SSH 服务

由于目标机器开启 SSH 服务(端口 22),我们尝试针对用户 eve 进行字典攻击。

bash 复制代码
$ hydra -l eve -P wordlist 192.168.50.214 -t 4 ssh -V
参数 作用 说明
-l eve 指定登录用户 仅攻击 eve 账户
-P wordlist 指定密码字典 使用刚刚生成的 wordlist
-t 4 并发线程数 4 个线程同时尝试,加快速度
ssh 协议类型 针对 SSH 服务
-V 详细模式 实时显示每次尝试的用户名和密码

**执行过程截图:**发现了eve用户正确的SSL登录密码:Lab123。


1.1.2.3 成功登录并提权至root
1.以 eve 身份登录 SSH

接下来,在获得正确密码Lab123后,直接通过 SSH 登录目标机器:

复制代码
2.检查 sudo 权限

登录后立即查看当前用户eve是否具备 特权执行权限

这表明 eve 可以 以任何用户身份执行任何命令,无需额外密码(或只需自身密码)。

3.一键提升到 root 权限

在**(ALL : ALL)ALL** 的权限下,利用 sudo -i 直接切换到 root 环境:

至此,攻击者通过 构造针对性字典 → 暴力破解 SSH → 检查 sudo → 提权 的路径,成功获得目标系统的 完全控制权。这是另外一条获取管理员访问权限的路径。


1.1.2.4 关键点总结
阶段 工具/命令 作用
字典生成 crunch 根据模式 Lab%%% 生成 1000 个密码
远程破解 hydra 多线程暴力破解 SSH 登录
权限验证 sudo -l 检查 eve 是否拥有 sudo 特权
提权 sudo -i 切换到 root 环境,获得最高权限

防御建议:避免使用简单模式密码(如固定前缀+数字);对 SSH 服务启用密钥认证或双因素认证;限制 sudo 用户可执行的命令范围。


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

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

相关推荐
济6172 小时前
ARM Linux 驱动开发篇--嵌入式 Linux LED 驱动开发实验(2)--Linux 下 LED 灯驱动开发代码编写-- Ubuntu20.04
linux·arm开发·驱动开发
草莓熊Lotso2 小时前
Linux 磁盘基础:从物理结构到 CHS/LBA 寻址,吃透数据存储底层逻辑
linux·运维·服务器·c++·人工智能
一名优秀的码农2 小时前
vulhub系列-09-KioptrixVM3(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
叠叠乐2 小时前
EasyTier 免费自建自用5$每个月的服务器
linux·运维·bash
yueyin1234562 小时前
Linux下MySQL的简单使用
linux·mysql·adb
鸠摩智首席音效师11 小时前
如何在 Linux 中将文件复制到多个目录 ?
linux·运维·服务器
香蕉你个不拿拿^11 小时前
Linux进程地址空间解析
linux·运维·服务器
人间打气筒(Ada)11 小时前
Linux学习~日志文件参考
linux·运维·服务器·学习·日志·log·问题修复
xuhe212 小时前
Claude Code配合Astro + GitHub Pages:为 sharelatex-ce 打造现代化的开源项目宣传页
linux·git·docker·github·浏览器·overleaf