Unix 文件系统相关谜题

Unix 文件系统相关谜题

一年前进行的一次测验中有一个问题。我试图解决这个问题并陷入困境。所有其他的都与编程相关,但这个是与 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用户身份执行 a guest,但这些都不起作用,因为前两个需要root访问权限,而suguest 则需要该用户的密码。

我现在该怎么办?

登录凭据的实际问题:

文件:/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,但无法弄清楚任何内容。

答案1

方法:

$ 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)

所以我们需要要么获得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 以查找 abacus 组的成员。刚好有客人。
因此将私钥复制到~/.ssh/id_rsa,正确设置权限,然后ssh guest@localhost。答对了。


<广告>

如果你喜欢这类东西,我们就参与夺旗比赛作为sec.se(安全堆栈交换)CTF 团队(有关组织详细信息,请参阅元帖子)。不过,与 UNIX 相比,涉及的网络、逆向工程和加密技术更多。

答案2

原来的问题陈述在这里,http://www.hackerearth.com/problem/algorithm/hack-unix/

在考虑这个问题时,我不认为有任何方法可以通过权限访问该文件。登录后:

$ cd /home/hacker-weekly/
$ ls -la
total 28
drwxr-xr-x   2 hacker-weekly hacker-weekly  4096 Nov 12  2012 .
drwxr-xr-x 556 root          root          20480 Sep 20 19:30 ..
-r--r-----   1 root          abacus          373 Nov 12  2012 abacus

根据我对权限(Unix)和文件系统的了解,由于这些权限,没有直接的方法来访问该文件。这些权限告诉我们,您要么 (1) 必须获得 root 的访问权限,要么 (2) 获得对有权访问该组的帐户的访问权限abacus

探索群体角度

在查看该组时,我注意到/etc/passwd/etc/group文件中存在以下内容:

/etc/密码

$ grep -E "ashwinscongo|guest|abacus" /etc/passwd
guest:x:1001:1001::/home/guest:/bin/sh
.guest:x:1436:1437::/home/.guest:/bin/bash
ashwinscongo:x:1544:1545::/home/ashwinscongo:/bin/bash

/etc/组

$ grep -E "ashwinscongo|guest|abacus" /etc/group
guest:x:1001:
abacus:x:1004:guest
.guest:x:1437:
ashwinscongo:x:1545:

所以看来我们需要获得该guest帐户的访问权限。

须藤?

我们没有 sudo 权限。

$ sudo -l
[sudo] password for ashwinscongo: 
Sorry, user ashwinscongo may not run sudo on ip-10-144-3-172

登录访客

我现在只能设想正面攻击,所以我尝试了2012 年最热门的 25 个密码, 随着:

  • 客人
  • 算盘
  • ab12d6H
  • 策格
  • 算盘

这些都不起作用。

其他角度?

  1. 找到一个具有其权限的可执行文件,以便它 (1) 作为 root 执行或 (2) 作为 guest 执行(setuid/setgid 文件)!
  2. 获得访客访问权
  3. 利用 ssh 的某种信任关系? (ssh guest@localhost) 角度?

实际解决方案

花了一点时间,但我想通了。我的用户名是 slmingol。显然吉尔斯也明白了!

如果您在盒子上四处寻找可执行文件,您会找到您需要的一切。现在我知道该怎么做了,最好是你自己弄清楚。

有关权限的提示仅在您需要获得特权的意义上才有意义。如果你用谷歌搜索,你会发现的另一个线索也很适合通过 ssh 登录来宾帐户。我鼓励您坚持下去,不要通过查看@Gilles 线索/答案来作弊。

如果你真的被困住了,我可以给你一些额外的提示,但不会破坏它!

相关内容