如何通过可写入的etcpasswd文件实现Linux提权(linux,编程语言)

时间:2024-04-29 20:15:31 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

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

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

/etc/passwd

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

用户名

加密密码

用户 ID (或 UID)

组 ID (或 GUID)

用户全名

用户家目录

登录 Shell

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

如何通过可写入的etcpasswd文件实现Linux提权

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

root:用户名。

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

0:root用户UID。

0:root用户GID。

root:用户描述的占位符。

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

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

环境设置

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

OS NameRoleOS VersionMachine IPKernel VersionKali Linux (x64 bit)攻击者机器Kali192.168.245.1344.12.0-kali2-686Ubuntu (x64 bit)易受攻击机器Ubuntu 14.04.6 LTS192.168.245.1464.4.0-142-generic

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

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

如何通过可写入的etcpasswd文件实现Linux提权

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

pythonlinuxprivchecker.py

如何通过可写入的etcpasswd文件实现Linux提权

仔细查看脚本输出,我们发现passwd文件是world可写文件,具有对普通用户的读,写和修改权限。

如何通过可写入的etcpasswd文件实现Linux提权

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

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

$perl-le'printcrypt("THIS_IS_Original_PASSWORD","SALT")'

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

echo"Tom:Encrypted_Password:0:0:User_like_root:/root:/bin/bash"&ampgt;&ampgt;/etc/passwd

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

Tom:用户名

ad7t5uIalqMws:加密用户密码

0:root用户ID

0:root组ID

User_like_root:用户描述

/root:用户家目录

/bin/bash:用户的Shell

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

生成加密密码:

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

如何通过可写入的etcpasswd文件实现Linux提权

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

原密码:Password@973

盐:addedsalt

加密密码:ad7t5uIalqMws

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

echo"Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash"&ampgt;&ampgt;/etc/passwd

如何通过可写入的etcpasswd文件实现Linux提权

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

cat/etc/passwd

如何通过可写入的etcpasswd文件实现Linux提权

现在,使用su命令我们将尝试使用Tom用户登录。

如何通过可写入的etcpasswd文件实现Linux提权

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

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

如何通过可写入的etcpasswd文件实现Linux提权

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

su–Tom

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

如何通过可写入的etcpasswd文件实现Linux提权

总结

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

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何通过可写入的etcpasswd文件实现Linux提权的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:JavaScript如何实现延时执行下一篇:

14 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18