作为使用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 unrestricted shell下,我尝试将/bin/sh
的副本复制到其他位置/tmp/writable
...但这不起作用,因为我以后不能cd
进/ tmp / writable and i can't run
/ tmp / writable / sh`,因为它包含正斜杠。出于同样的原因,我也不能只是建立一个软链接。假设我不能在登录脚本中留下永久的东西(容易检测到),还有其他方法吗?
答案 0 :(得分:2)
由于chsh
是setuid root,因此您可以使用awk
将登录shell修改为不受限制(我假设您可以执行它,因为您可以执行不受限制的shell)。然后,下次登录时,您将不再拥有受限制的shell。
否则,正如Brian Campbell指出的那样,除了awk
之外,还有其他方法可以访问不受限制的shell。
答案 1 :(得分:1)
如果您有GDB可用,您可以从那里调用其中一个exec
函数来获得不受限制的shell
$ gdb cat
(gdb) run
^C
(gdb) call execl("/bin/sh", 0);
$
现在你处于无限制的外壳中。