**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬
🌌 立即前往 👉晖度丨安全视界🚀
▶ 信息收集
▶ 漏洞检测
▶ 初始立足点▶权限提升 ➢ Linux权限提升 ➢ ++利用替代密码实现提权++ 🔥🔥🔥
▶ 横向移动▶ 报告/分析
▶ 教训/修复
目录
[1.1 利用不安全的文件权限实现提权](#1.1 利用不安全的文件权限实现提权)
[1.1.1 利用替代密码实现提权](#1.1.1 利用替代密码实现提权)
[1.1.1.1 原理分析](#1.1.1.1 原理分析)
[1.1.1.2 实践:设置密码哈希值并追加到/etc/passwd文件](#1.1.1.2 实践:设置密码哈希值并追加到/etc/passwd文件)
[1.1.1.3 其他相关内容](#1.1.1.3 其他相关内容)
[1. 哈希算法标识符(/etc/passwd 中的哈希格式)](#1. 哈希算法标识符(/etc/passwd 中的哈希格式))
[2. 其他生成密码哈希的工具](#2. 其他生成密码哈希的工具)
[3. /etc/passwd 文件格式深度解析](#3. /etc/passwd 文件格式深度解析)
[4. 防御与检测措施](#4. 防御与检测措施)
[5. 实际场景中的变种攻击](#5. 实际场景中的变种攻击)
[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)
1.Linux权限提升
本系列内容围绕以下四大部分展开,本文是第三部分:++利用替代密码实现提权++。
| 攻击向量 | 核心概念 | 典型检查/利用方法 | 关键风险点 |
|---|---|---|---|
| 1. 系统枚举 | 全面侦查,像侦探一样收集一切可能指向弱点的线索。 | - 检查系统配置、用户与组、历史命令。 - 枚举运行服务、网络连接、进程。 - 列出安装软件、内核版本、计划任务。 | 信息收集不全面,导致错过关键漏洞入口。 |
| 2. 暴露的机密信息 | 系统或应用中意外留存的可直接利用的敏感数据。 | - 查找配置文件中的硬编码密码。 - 搜索日志文件中的敏感数据或错误信息。 - 检查环境变量中的密钥、令牌或密码。 | 访问凭证直接泄露,提供最直接的攻击突破口。 |
| 3. 不安全的文件权限 | 文件或目录的权限设置不当,允许低权限用户进行越权操作。 | -++全局可写文件/目录:++ 任何用户可修改,用于注入恶意代码或替换文件。 - ++不当所有权:++ 低权限用户拥有关键系统文件,可直接修改。 - ++SUID/SGID滥用:++高权限程序存在漏洞或配置错误,可被利用来获取其权限。 | 通过文件系统层面的配置错误,绕过权限限制。 |
| 4. 利用系统组件 | 利用操作系统内核、系统服务或第三方应用程序中存在的漏洞。 | - 脆弱服务 :攻击以高权限(如root)运行的未更新或配置不当的服务。 - 内核漏洞 :利用操作系统内核本身的漏洞直接提权。 - 软件漏洞:利用第三方应用(如编辑器、数据库)的漏洞执行高权限代码。 | 利用代码层面的漏洞,实现权限的实质性提升。 |
1.1 利用不安全的文件权限实现提权
1.1.1 利用替代密码实现提权
1.1.1.1 原理分析
在 Linux 系统中,用户账户和密码信息通常由两个关键文件管理:
| 文件 | 存储内容 | 权限 | 说明 |
|---|---|---|---|
/etc/passwd |
用户名、UID、GID、家目录、默认 Shell 等 | 普通用户可读 | 早期系统 会将密码哈希直接放在第二列,现在通常只放占位符(如 x) |
/etc/shadow |
用户的密码哈希、有效期等敏感信息 | 仅 root 可读 | 现代系统将密码哈希移至此文件,增强安全性 |
🧠 关键历史 :老系统中,密码哈希直接写在
/etc/passwd第二列。🔥注意: 如今虽然多数系统已改用
/etc/shadow,但/etc/passwd中的第二列若存在哈希值,++会优先用于身份验证++ ,完全忽略/etc/shadow中的记录。
⚠️ 攻击原理(替代密码提升权限)
如果攻击者获得了对 /etc/passwd 的写入权限(哪怕只是普通用户权限),就可以:
-
选择一个目标账户(如
root)。 -
使用工具(如
openssl passwd)生成一个任意密码的哈希值。 -
将生成的哈希直接写入
/etc/passwd对应账户的第二列。 -
此后使用该密码登录,系统将优先采用
/etc/passwd中的哈希进行验证,完全绕过/etc/shadow中的真实密码。
🔥 后果 :即使
/etc/shadow中的密码仍有效,也会被覆盖忽略,攻击者可以永久后门方式控制账户。
🛡️ 防护措施
现代 Linux 发行版已默认修复此问题,主要措施包括:
-
密码哈希彻底移入
/etc/shadow,/etc/passwd第二列统一为x或*。 -
严格权限控制:
-
/etc/passwd:普通用户只读(权限644)。 -
/etc/shadow:仅 root 可读写(权限600或640)。
-
-
定期审计文件权限,确保无意外写漏洞。
💡 牢记 :保护
/etc/passwd的写入权限,就是保护系统的第一道防线!
1.1.1.2 实践:设置密码哈希值并追加到/etc/passwd文件
基于上述的攻击原理,当 /etc/passwd 文件因权限配置不当**(如普通用户可写)** 时,攻击者可以通过添加一个自定义超级用户来直接提升权限。
1.生成密码哈希
使用 openssl passwd 命令为自定义密码(例如 w00t)生成哈希值。
bash
$ openssl passwd w00t
默认下,openssl将默认采用 crypt 算法(传统 DES 变种),兼容 Linux 身份验证机制。此外,可以指定不同的加密算法来生成密码哈希。常见的选项包括:
-1:使用 MD5 加密。
-6:使用 SHA-512 加密。
-5:使用 SHA-256 加密。
2.密码哈希值追加到/etc/passwd文件
为了提升我们的权限,在/etc/passwd中添加另一个超级用户**(root2)**和相应的密码哈希。我们将上一步生成的哈希,在/etc/passwd文件的最后追加一行。

-
用户名 :
root2(可任意) -
密码哈希:上一步生成的字符串
-
UID=0 、GID=0:表示超级用户权限
-
其他字段保持与 root 一致
3.登录验证
保存文件后,即可使用密码 w00t 以 root2 身份登录,获得 root 权限。如上图。
⚠️ 关键提醒:
-
优先验证 :系统在登录时优先读取
/etc/passwd中的哈希,即使/etc/shadow中无此用户记录或密码不同,也会通过验证。 -
权限要求 :此操作的前提是当前用户对
/etc/passwd拥有写入权限。 -
防御建议 :确保
/etc/passwd权限为 644(root 可写,其他只读),并定期审计文件完整性。
1.1.1.3 其他相关内容
1. 哈希算法标识符(/etc/passwd 中的哈希格式)
openssl passwd 生成的哈希通常包含算法标识前缀,系统根据前缀选择验证算法:
| 前缀 | 算法 | 示例哈希(密码 w00t) |
|---|---|---|
| 若无 | DES | abZ7R7XZ9U.6s(传统,长度13字符) |
$1$ |
MD5 | $1$dR.Z1S1n$YrX5rX5rX5rX5rX5rX5rX5 |
$5$ |
SHA-256 | $5$rounds=5000$salt$hashedpart |
$6$ |
SHA-512 | $6$rounds=5000$salt$verylonghashedpart |
💡 在
/etc/passwd中使用带前缀的哈希时,系统会自动调用对应算法验证。
2. 其他生成密码哈希的工具
除了 openssl,渗透测试中常用的哈希生成方法:
| 工具/命令 | 示例 | 特点 |
|---|---|---|
mkpasswd |
mkpasswd -m sha-512 w00t |
可指定算法(需安装 whois 包) |
python + crypt 模块 |
python -c 'import crypt; print(crypt.crypt("w00t", crypt.METHOD_SHA512))' |
跨平台,灵活 |
perl |
perl -e 'print crypt("w00t","\$6\$salt\$")' |
直接调用系统 crypt |
echo + openssl(管道) |
`echo -n 'w00t' | openssl passwd -6 -stdin` |
3. /etc/passwd 文件格式深度解析
每行代表一个用户,由 7 个冒号分隔的字段组成:
bash
用户名:密码:UID:GID:描述:家目录:Shell
| 字段 | 示例值 | 说明 |
|---|---|---|
| 用户名 | root2 |
登录名 |
| 密码 | $6$... |
关键字段 :若不为 x 或 *,则直接用于验证(优先于 shadow) |
| UID | 0 |
用户 ID,0 表示超级用户 |
| GID | 0 |
主组 ID |
| 描述 (GECOS) | root |
一般为用户全名或注释 |
| 家目录 | /root |
登录后的初始目录 |
| Shell | /bin/bash |
登录后启动的 Shell |
⚠️ 若 UID=0,则该用户拥有 root 权限,无论用户名是什么。
4. 防御与检测措施
系统管理员应实施以下防护:
-
权限加固
bashchmod 644 /etc/passwd chmod 600 /etc/shadow chown root:root /etc/passwd /etc/shadow -
文件完整性监控
使用 AIDE、Tripwire 或
auditd监控/etc/passwd的修改:bashauditctl -w /etc/passwd -p wa -k passwd_watch -
定期审计
检查
/etc/passwd中是否有非x的密码字段:bashawk -F: '$2!="x" && $2!="*" && $2!="" {print "可疑条目: " $0}' /etc/passwd -
日志告警
监控
/var/log/auth.log或/var/log/secure中异常登录事件。
5. 实际场景中的变种攻击
-
修改现有用户 :直接在
/etc/passwd中将目标用户的第二列替换为攻击者的哈希,然后登录。 -
创建后门用户 :如本例中的
root2,隐蔽性较差,但权限高。 -
利用其他可写文件 :若
/etc/passwd不可写,但/etc下某些服务配置文件(如 vsftpd)允许指定用户数据库,也可能被利用。
🧠 想一想 :即使
shadow文件中的密码再强,如果passwd可写,一切安全措施都将形同虚设。保护/etc/passwd的写入权限,就是守住系统的"最后一道门"。
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
每一份支持,都是我持续输出的光。
