0

作为使用 linux 工具练习的一部分,我一直在尝试随机的“bash 挑战”,并且一直坚持下去。我在一个受限的 bash shell 中,我不能cd,我不能运行带有正斜杠的命令。输出重定向也不可用。PATH 环境变量也设置为指向非常有限的工具子集。即:

awk,cmp,cut,egrep,find,grep,gzip,hostname,less,lsof,netstat,nm,ps,sed,ssh-agent,
sum,tar,uname,vi,whoami,xz,zcat,cat,column,diff,fgrep,gdb,gzcat,head,
ifconfig,ls,mv,nl,ping,sort,strings,tail,top,uniq,xargs,xzcat

现在,使用awk我可以访问不受限制的 shell - 难题是:“如果您在awk从可用命令列表中删除之前的时间有限 - 有没有办法保护自己获得不受限制的 shell以后呢?这个用户下的主目录是不可写的。

在 awk 不受限制的外壳下,我尝试将副本复制/bin/sh到其他位置/tmp/writable……但这不起作用,因为我以后不能cd进入 /tmp/writable and i can't run/tmp/writable/sh`,因为它包含正斜杠。出于同样的原因,我也不能只做一个软链接。假设我不能在登录脚本中留下永久的东西(很容易检测到),还有其他方法吗?

4

2 回答 2

2

由于chsh是 setuid root,您可以修改登录 shell 以不受限制使用awk(我假设您可以执行它,因为您可以执行不受限制的 shell)。然后,下次登录时,您将不再有受限的 shell。

否则,正如 Brian Campbell 指出的那样,除了awk.

于 2013-05-10T23:21:48.043 回答
1

如果你有可用的 GDB,你可以exec从那里调用其中一个函数来获得一个不受限制的 shell

$ gdb cat
(gdb) run
^C
(gdb) call execl("/bin/sh", 0);
$

现在你在一个不受限制的外壳中。

于 2013-05-10T22:52:45.297 回答