Unix文件系统相关拼图

Ash*_*arS 3 linux filesystems

一年前进行的一项测验中有一个问题。我试图解决这个问题并被卡住了。所有其他都与编程相关,但这个是与 Unix 文件权限相关的东西。以下是场景。

您将获得 SSH 服务器的登录名和密码。 ssh your-username@server-addr

您的任务是查找命名的文件/home/abc/chekme并检索其内容。

当登录到 ssh 远程服务器执行ls -l显示 0 个文件时,这表明给定的登录没有权限,但在ls -l对上述文件执行操作时可以看到,读取权限授予了 root 用户和组以及名称该组是chekme

我无法读取该文件,因为我没有权限并且不是该组的成员。在浏览该/etc/group文件时,我发现有一个名为的组,chekme并且只有一个用户被添加到该组中。用户名是guest

从这里开始,我尝试将我的 guid 更改为组的 guid,将我自己添加到组中,su以用户身份执行,guest但由于前两个需要root访问权限并且su来宾需要该用户的密码,因此没有任何工作。

我现在如何进行?

登录凭据的实际问题:

文件:/home/hacker-weekly/abacus

因此,您必须阅读文件“/home/hacker-weekly/abacus”并在此处提交文件内容。

如果您还没有登录凭据,请单击下面的“获取登录凭据”按钮获取。然后您可以通过运行以下命令登录到机器:

ssh "您的用户名"@"服务器地址"

提示:考虑所有基于 UNIX 的系统中的文件权限。

登录凭据服务器:ec2-175-41-164-254.ap-southeast-1.compute.amazonaws.com 用户名:ashwinscongo 密码:ab12d6H

组名是abacus,该组的用户是guest。试过/etc/passwrd,什么也查不出来。

Gil*_*il' 6

方法:

$ ls -l /home/hacker-weekly/abacus
-r--r----- 1 root abacus 373 Nov 12  2012 /home/hacker-weekly/abacus
$ id
uid=1554(gilles) gid=1555(gilles) groups=1555(gilles)
Run Code Online (Sandbox Code Playgroud)

所以我们需要要么获得root权限,要么获得abacus组权限。但是如何?

提示(第 1 步):如何提升权限?

完整解决方案(步骤 1):

查找不应该存在的 setuid 或 setgid 可执行文件:
    find / -xdev -perm /4000 -ls 2>/dev/null
有两个可能的候选对象:/usr/local/abacus 和 /usr/bin/hacker-weekly -算盘。运行后者会打印出一个 SSH 私钥。

提示(第 2 步):使用此文件的明显方法是登录其他帐户。哪个账户?

完整解决方案(第 2 步):

查看 /etc/passwd 并查看存在哪些帐户(系统帐户和参与者除外)。在 /etc/passwd 和 /etc/group 中查找算盘组的成员。只有客人。
所以把私钥复制到~/.ssh/id_rsa,正确设置权限,ssh guest@localhost。答对了。


<广告>

如果您喜欢这种东西,我们会作为sec.se(安全堆栈交换)CTF 团队参加比赛有关组织详细信息,请参阅元帖子)。虽然比 unix 涉及更多的网络、逆向工程和加密。