zardus 又学聪明了!
他不再共享主目录,虽然没那么方便,但还是改为共享 /tmp/collab。
他让所有人都能写入这个目录,还开始整理一份危险命令清单,以便记住它们!
zardus@dojo:~$ mkdir /tmp/collab
zardus@dojo:~$ chmod a+w /tmp/collab
zardus@dojo:~$ echo "rm -rf /" > /tmp/collab/evil-commands.txt
本挑战中,当你运行 /challenge/victim 时,zardus 会把 cat /flag 加入这份命令清单:
hacker@dojo:~$ /challenge/victim
Username: zardus
Password: **********
zardus@dojo:~$ echo "cat /flag" >> /tmp/collab/evil-commands.txt
zardus@dojo:~$ exit
logout
hacker@dojo:~$
回顾上一关,只要能写入 /tmp/collab,hacker 用户就能替换 evil-commands.txt 文件。
你也在“理解命令”中学过,文件可以链接到其他文件。
如果 hacker 把 evil-commands.txt 替换为一个指向敏感文件的符号链接,而 zardus 恰好能写入那个文件,会发生什么?
这就有机会大显身手了!
你已经知道该链接到哪个文件。
完成攻击,拿到 /flag(本关中,zardus 又能读取它了!)。
提示:
你需要运行 /challenge/victim 两次:第一次把 cat /flag 写到你想要的位置,第二次触发这条命令!
使用 /tmp 很危险吗???
虽然这里展示了一种攻击方式,但 /tmp 仍然可以安全使用。
这个目录确实允许所有人写入,不过它设置了一个特殊的权限位:
hacker@dojo:~$ ls -ld /tmp
drwxrwxrwt 29 root root 1056768 Jun 6 14:06 /tmp
hacker@dojo:~$
最后的 t 是粘滞位(sticky bit)。
粘滞位让目录中的文件只能由其所有者重命名或删除。
它正是为防范这种攻击而设计的!
本挑战的问题就在于,zardus 没有为 /tmp/collab 设置粘滞位。
在这个具体场景中,以下操作就能堵住漏洞:
zardus@dojo:~$ chmod +t /tmp/collab
当然,所有人可写的目录这类共享资源仍然可能存在危险。
之后学习绿带课程中的“竞争条件”时,你会看到这类资源引发安全问题的多种方式!
通过 SSH 连接
在
个人设置 中绑定你的 SSH 公钥后,使用以下命令连接:
ssh hacker@dojo.pwn.college