linux - 如何在 bash 中解决这个安全难题?

标签 linux bash shell unix command-line

<分区>

作为使用 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 并且我不能运行 /tmp/writable/sh` 因为它包含正斜杠。出于同样的原因,我也不能只做一个软链接(soft link)。假设我不能在登录脚本中留下永久性的东西(很容易检测到),还有其他方法吗?

最佳答案

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

否则,正如 Brian Campbell 指出的那样,除了 awk 之外,还有其他方法可以访问不受限制的 shell。

关于linux - 如何在 bash 中解决这个安全难题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16491695/

相关文章:

bash - bash 中确定变量 $p 是否为目录的条件测试是什么?

java - 在 Ubuntu 中编译 Servlet 返回错误

cocoa - 如何在 Objective-C/Cocoa 中执行 shell 命令 "ping"并将结果转换为字符串?

linux - 在 linux 中是否有显示特定命令选项的详细描述的技巧

c++ - 原子 "check signal and enter system call"操作

php - Freebsd 中用于循环 postfx 生成的邮件日志的默认工具是什么?

linux - rpm --test 从不返回非空字符串?

linux - Shell脚本根据参数将单行翻译成多行

bash - 如何知道TCL脚本在bash中是否执行成功?

Linux shell 脚本 : make a folder with the current date name