2024全网最全面及最新且最为详细的网络安全技巧 (3-3) 之 linux提权各类技巧 上集
欢迎各位彦祖与热巴畅游本人专栏与博客
你的三连是我最大的动力
以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]
专栏跑道一
➡️网络空间安全——全栈前沿技术持续深入学习
专栏跑道二
➡️ 24 Network Security -LJS
专栏跑道三
➡️ MYSQL REDIS Advance operation
专栏跑道四
➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]
专栏跑道五
➡️RHCE-LJS[Linux高端骚操作实战篇]
专栏跑道六
➡️数据结构与算法[考研+实际工作应用+C程序设计]
专栏跑道七
➡️RHCSA-LJS[Linux初级及进阶骚技能]
上节回顾
3.4 Linux 提权之 shaodow 文件提权
实验介绍
- /etc/passwd 和 /etc/shadow 文件是 Linux 系统登录认证的关键文件,如果系统运维人员对 shadow 或 shadow 文件的内容或权限配置有误,则可以被利用来进行系统提权。
- 上一章中,我们已经学习了 /etc/passwd 文件的提权方法, 在本章节中,我们将学习如何利用/etc/shadow 来完成系统提权。
知识点
/etc/shadow 文件含义- 通过 /etc/shadow 文件提权的方法
理解 /etc/shadow 文件含义
我们先了解一下 /etc/shadow 内容的含义- Linux 密码信息保存在两个文件中,分别为:/etc/passwd 和 /etc/shadow,/etc/passwd 文件的含义,我们在上一章已经讲过。
- /etc/shadow 文件用于存储加密后的密码和密码相关的配置信息,该文件的每一行代表一个用户,每行都包含 9 个字段,用冒号(":")隔开,顺序如下:
- 用户名
- 加密后的密码
- 上次修改密码的时间(从 1970.1.1 开始的总天数)
- 两次修改密码间隔的最少天数,如果为 0,则没有限制
- 两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为 99999 则没有限制
- 提前多少天警告用户密码将过期
- 在密码过期之后多少天禁用此用户
- 用户过期日期(从 1970.1.1 开始的总天数),如果为 0,则该用户永久可用
- 保留,未来使用
例如,假设 /etc/shadow
文件中其中一行信息如下:
其含义解读如下
- 用户名:test-user
- 加密后的密码:$6$C/vGzhVe$aKK6QGdhzTmYyxp8.E68gCBkPhlWQ4W7/OpCFQYV.qsCtKaV00bToWh286yy73jedg6i0qSlZkZqQy.wmiUdj0
- 上次修改密码的时间(从 1970.1.1 开始的总天数为 17470)
- 两次修改密码最小间隔天数:没有限制
- 两次修改密码最大间隔天数:没有限制
- 提前 7 天警告用户密码将过期
- 该用户永久可用
默认情况下,只有 root 权限才能读取和修改 /etc/shadow 文件,但有时候由于系统管理员的错误配置,也会给我们带来可乘之机。
通过 /etc/shadow 文件提权
通常来说,通过 /etc/shadow 提权的方法有两种:
- 如果具有 /etc/shadow 的 w (写入) 权限,可以直接修改 root 密码
- 如果具有 /etc/shadow 的 r (读取) 权限,可以通过读取 root 用户密码并使用 john 进行破解
因为 /etc/shadow 文件的提权方法和 /etc/passwd 是比较类似的,相信学习完上一章的同学能够很快掌握,所以本章的实验我会尽量简写,以节约大家时间,如果有不能理解的地方,欢迎评论区留言。
场景一:具有 /etc/shadow 文件写入权限
初始化实验环境
首先需要初始化实验环境,打开终端并执行如下命令:
curl https://labfile.oss.aliyuncs.com/courses/2650/init_shadow_1.sh > ~/init_shadow_1.sh;chmod +x ~/init_shadow_1.sh;sudo ./init_shadow_1.sh
- 如上图所示,完成实验环境的部署,此时我们已经切换到
tomcat-syl
用户——模拟渗透测试前期获取到的初始 shell。
开始实验
使用如下命令查看 /etc/passwd
和 /etc/shadow
文件的权限:
ls -alh /etc/passwd /etc/shadow
从输出结果中我们发现,/etc/shadow 文件的所有者被错误配置为了 tomcat-syl 用户,导致我们拥有了对 /etc/shadow 文件的读写权限。
于是接下来的利用思路就是:
- 编辑/etc/shadow 文件,将 root 用户的密码篡改。
- 命令查看 shadow 文件中 root 用户的密码配置:
cat /etc/shadow|grep root
得到的结果是
root:**$6$5PfZMEbQ$pCjxwZagiIqsrkL4V6r3flOiKQrheDV5eup3zicnvBSKPItaddhUfDAVA5GWAYUHX9LQ5kXzLH8ehoUno2qkE/**:18167:0:99999:7:::
-
我们只需要替换第一个
:
和第二个:
之前的字符串,这是经过加密之后的密码哈希。 -
生成密码的方法和上一章中的一样,需要使用到
openssl
套件,创建一个密码为 pass123 的 linux hash,命令如下:openssl passwd -1 -salt ignite pass123
-
参数解释:
-
-1
:使用 MD5 hash 算法 -
-salt
:对 hash 算法加 "盐"
计算得到的 hash 为
$1$ignite$3eTbJm98O9Hz.k1NTdNxe1
使用 vim 编辑 etc/shadow
,替换密码哈希:
使用 cat 命令确认一下是否修改成功:
确认添加成功后,使用 su root
切换到 root 用户,密码为 pass123:
场景二:具有 /etc/shadow 文件的读取权限
-
简介:如果具有
/etc/shadow
文件的读取权限,可以获得 root 用户的密码哈希,再使用 john 工具进行破解。
初始化实验环境
-
新打开一个终端,执行如下命令开始配置实验环境:
curl https://labfile.oss.aliyuncs.com/courses/2650/init_shadow_2.sh > ~/init_shadow_2.sh;chmod +x ~/init_shadow_2.sh;sudo ./init_shadow_2.sh
-
输出如上图所示,说明环境部署成功。
开始实验
和之前一样,使用如下命令查看 /etc/passwd
和 /etc/shadow
文件的权限:
ls -alh /etc/passwd /etc/shadow
从输出结果中我们发现,/etc/shadow
文件其他用户也具有读取(r)
权限,导致我们可以直接读取 /etc/shadow
的内容:
-
可以看到,
shadow
文件中记录了 root 用户的密码哈希,接下来我们使用 john 工具来破解。 -
Kali Linux 上默认安装了该工具,但在 ubuntu 实验机器上需要自己安装。打开一个新终端,输入如下命令进行安装:
sudo apt install john
- john 会调用指定字典对 hash 字符串进行破解,破解时间取决于字典大小和计算机性能。
- john 支持使用内置字典,也可以使用用户自己的自定义字典,本课程中我们使用 john 自带字典完成破解。
j
不过在开始破解之前,还有一步要做:
- 在实战环境中,我们需要先将 /etc/passwd 和 /etc/shadow 的内容合并,否者 john 可能无法识别 /etc/shadow 中的内容。
- 需要使用到 unshadow 命令:
# 注意 passwd 必须是第一个参数 unshadow /etc/passwd /etc/shadow > ~/shadow_crack.txt
接下来就可以使用 john 来破解 shadow_crack.txt
,john 会自动加载所有识别到的用户 hash 并按次序破解:
john ~/shadow_crack.txt
稍微等待一下,成功破解出 root 密码:
使用 su root 命令切换到 root 用户:
- 点赞
- 收藏
- 关注作者
评论(0)