**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬
🌌 立即前往 👉晖度丨安全视界🚀
▶ 信息收集
▶ 漏洞检测
▶ 初始立足点▶权限提升 ➢ 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环境变量概述)
[5. env 命令是什么](#5. env 命令是什么)
[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 的主要作用
| 作用 | 描述 |
|---|---|
| 定义环境变量 | 设置 PATH、HOME 等变量,告诉系统在哪里寻找可执行文件。 |
| 设置别名 | 为长命令创建简短别名,例如 alias ll='ls -al'。 |
| 自定义提示符 | 改变命令行提示符的外观,如:显示用户名、当前路径等。 |
| 命令历史设置 | 配置历史命令的保存条数、是否忽略重复命令等。 |
| 启用特性和插件 | 加载 Git 自动补全、Python 虚拟环境等扩展功能。 |
3.为什么 .bashrc如此重要
因为每次打开终端都会加载它 ,所以 .bashrc中的设置会持续影响你的每一次命令行操作。通过它,你可以:
-
提高工作效率(别名、自动补全)
-
让终端更符合个人习惯(提示符、环境变量)
-
但同时也可能无意中泄露敏感信息 (例如将密码硬编码在脚本中)
4..bashrc 文件的特点
-
✅ 是一个 Bash 脚本文件,可以包含任意合法的 Bash 命令。
-
✅ 在每次启动新的交互式 Bash 会话时自动执行。
-
✅ 主要用于设置持久的环境变量、别名、函数等,让配置在每次登录时都生效。
-
✅ 修改后需执行
source ~/.bashrc或重新打开终端才能使更改生效。
5.如何修改 .bashrc
-
打开文件进行编辑:
bashnano ~/.bashrc -
在文件末尾添加需要的配置(例如环境变量、别名)。
-
保存并退出(在
nano中按Ctrl+X,然后按Y确认保存)。 -
使修改立即生效:
bashsource ~/.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 |
默认编辑器 | vim 或 nano |
4.如何查看和设置环境变量
-
查看所有环境变量 :
env或printenv -
查看单个变量 :
echo $PATH -
临时设置(仅对当前会话有效) :
export MY_VAR=hello -
永久设置 :将
export语句写入 shell 配置文件,如~/.bashrc、~/.profile
5. env 命令是什么
env 是一个用于显示或临时修改环境变量的命令行工具。它主要有以下用途和特点:
| 功能 | 说明 |
|---|---|
| 显示环境变量 | 不加参数运行 env,会列出当前 shell 的所有环境变量(键值对)。 |
| 临时运行命令 | 可以在临时设置的环境变量下执行一条命令,不影响当前会话。 |
| 传递临时变量 | 启动程序时,可为该程序单独指定临时的环境变量。 |
🧩 env 的特点:
-
✅ 是一个命令,不是配置文件。
-
✅ 常用于快速查看 当前环境变量(如
PATH、HOME等)。 -
✅ 也可用于在运行命令时临时覆盖或添加环境变量,仅对本次命令生效。
临时修改环境变量(仅对当前会话有效):
可以直接在命令行中使用 env 设置环境变量并运行命令,例如:
export VAR NAME="value"
export PATH=$PATH:/new/path
临时修改后会在当前终端的环境下执行,但不会影响当前 shell 的其他操作。关闭终端后,临时设置自然失效。
6.环境变量和.bashrc的关系
🧩 env 命令显示什么?
env 输出的是当前 shell 会话的环境变量 (例如 PATH、HOME、USER 等)。这些变量是键值对,它们决定了 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,后三位为数字 |
Lab123、Lab456 |
> 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 用户可执行的命令范围。
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
每一份支持,都是我持续输出的光。
