共计 2596 个字符,预计需要花费 7 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章主要介绍了用于提权的 Linux 命令是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
xxd 介绍
我们知道如果想要将某个文件转换成另一种格式,我们可以通过使用一些在线的转换工具,它可以帮助我们将一个文件转换成几乎任何我们所需的文件格式,例如:“pdf to word,jpg to pdf,excel to pdf“等等。但如果有人想要将任意文件转换为十六进制或二进制形式,那又该怎么办呢?
其实这很简单,在 Linux 上我们可以通过 xxd 这个命令来做到这一点。xxd 命令可以为给定的标准输入或者文件做一次十六进制的输出,它也可以将十六进制输出转换为原来的二进制格式。这也有助于对任意文件的编码和解码。
首先,让我们使用 help/man 命令,查看 xxd 命令的具体使用方法。
xxd -h
使用 xxd 执行的主要操作
将文件内容转换为十六进制:例如,我创建了一个名为“secret.txt”的新文件,现在我想将其内容都转换为十六进制形式,我可以通过键入以下命令执行:
Syntax: xxd filename
xxd secret.txt
如下图所示,很明显 xxd 已经为文件“secret.txt”生成了十六进制转储。
在这里我们可以观察到,以下十六进制转储获得了它的默认格式,例如:
索引行数
每组的默认八位字节数为 2,其分组大小为 4 字节
标准列长度为 16 位,带有空格
使用 xxd 跳过第 n 行:在转换文件时,有许多数据可能是我们不需要的。因此,我们可以跳过这些内容。我们可以使用 xxd 跳过第 n 行,并在跳过的行后生成十六进制值。
假设在我当前的情况下,我想要从第 5 行生成十六进制转储,那么可以通过使用“-s”参数后跟 xxd 命令来实现。
xxd -s 0x50 secret.txt
将输出限制为特定长度:以上我已经解释了如何通过跳过行数来检索数据。但是,如果你想要限制标准输出的长度,那么你可以使用“-l”参数。
这里,我限制了我的内容长度,以将数据打印到有限的范围,即第 5 行,如下图所示。
xxd -l 0x50 secret.txt
因此,我们可以观察到两个命令之间的差异;第一个命令生成从第 6 行初始化的十六进制值,第二个命令根据十六进制索引以第 5 行结束,请参考以上截图。
将文件内容转换为二进制文件:如果你想将文件转换为二进制形式,则可以使用“-b”选项。命令如下:
xxd -b secret.txt
设置列长:上面我已经介绍了如何跳过并限制输出到范围,其实我们还可以设置列的长度。默认情况下,对于任何转储文件它都是 12, 16。
默认值:我们知道默认列长度为 16。这将打印 16 个字符,包括空格。
xxd -l 0x20 secret.txt
将列长度设置为 32:我使用“-l”选项设置了结束索引以限制打印数据的范围。然后我使用“-c”参数,将列的长度设为了 32。
xxd -l 0x40 -c 32 secret.txt
从下图中,我们可以知道 xxd 是如何限制列长度的。
将列长度设置为 9:现在我们将列长度设置为“9”。
xxd -l 0x40 -c 9 secret.txt
在所有这些情况下,xxd 都是通过空格计数每个字符来为文件创建十六进制转储的。
纯 16 进制转储:我们可以使用“-ps”选项,以 postscript 的连续 16 进制转储输出。这里我们将其输出保存在 hex 文件中,以获取 secret.txt 文件的纯 16 进制转储。为了验证结果,我们使用 cat 命令从 hex 文件中读取输出。
xxd -ps secret.txt hex cat hex
从下图中,我们可以知道 xxd 是如何为“secret.txt”文件,创建纯十六进制转储的。
还原文件:我们可以使用“-r”选项,来还原转换的文件内容。在我们的例子中,我使用了“-r -p”将纯十六进制转储的反向输出打印为了 ASCII 格式。
xxd -r -p hex
分组大小字节:如果我们需要将输出分组为多个八位字节,那么我们可以使用“-g”选项来实现。默认情况下为 2。因此,如果我们将值设为 4,那么它将被分组为 8 位。
在下图中我们将值设为 8,它将分组为 16 位作为输出以简化结果。
xxd -l 0x30 -g 8 secret.txt
SUID Lab 设置
SUID 特殊权限是以命令的所有者权限来运行这一命令的,而不是以执行者的权限来运行该命令。现在,让我们在 xxd 上启用 SUID 权限,这样本地用户就有机会利用 xxd 来获取 root 权限。
键入以下命令,启用 SUID 位:
which xxd chmod u+s /usr/bin/xxd ls -al /usr/bin/xxd
SUID 利用
现在,我们将通过特殊权限位 SUID 来利用 xxd 服务。为此,我创建了一个受害者机器的会话,这将允许我们利用目标系统的本地用户访问。
让我们使用 ssh 连接到目标机器,命令如下:
ssh test@192.168.1.103
成功访问受害者机器后,我们使用 find 命令来查找具有 SUID 权限的二进制文件。
find / -perm -u=s -type f 2 /dev/null
这里我们可以看到有许多二进制文件具有 SUID 位,但我们重点关注 /usr/bin/xxd。
在 xxd 上获得特殊权限位 SUID,我们将获取用于提取密码哈希文件的 shadow 文件。
如下图所示,我已请求通过使用 xxd 暴露 /etc/shadow 文件,它将为该文件生成十六进制转储,并通过管道传输 xxd 命令来恢复其输出。
xxd /etc/shadow / xxd -r
现在,我将使用 john the ripper 这款工具来破解哈希密码。这样我们就可以获取用户凭据,如下图所示。
john hash
获取凭据后,我们就可以切换用户了。首先,我们来检查下用户的 sudo 权限:raj,发现用户“raj”具有所有权限。
su raj sudo -l sudo su
因此,让我们直接切换到 root 用户帐户,并访问 root
shell。至此,我们已成功利用 xxd 命令提升了我们的用户权限。
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“用于提权的 Linux 命令是什么”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!
向 AI 问一下细节
丸趣 TV 网 – 提供最优质的资源集合!