接上一篇,jerry用户没有权限,su jerry 虽然切换到jerry用户,但jerry的工作目录还是tom的
这种情况应该用su - 切换用户切换Shell环境
可以看到flag4,提示我们用git提权
提权
复习之前学过suid提权
查找具有suid权限的文件
find / -perm -4000 2>/dev/null寻找 4000权限的文件,不显示其他的错误信息相当于过滤
具有SUID权限的二进制可执行文件大体有:nmap vim find bash more less nano cp awk
没有能用来提权的
那就用git提权
原理是git配置不当存在溢出,溢出的部分如果输入一个交互式窗口就会有交互,类似于suid那样,暂时拥有root,又写了一个交互,就真的有了root的交互
执行命令sudo -l列出jerry可以通过sudo执行的所有命令,有git
git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
sudo git help config 打开关于配置的帮助页面
然后输入!/bin/bash或者!'sh'
这时已经成功提权了,需要切换到root的工作目录,用 su - root 拿到最终flag
我试了下,随便vi个文件,然后esc再输入:!ls,文件就退出了,并执行了ls命令
因为按esc键跳到命令模式
是利用打开文件后可以在后面运行命令的特点
复习昨天的绕过rbash限制:
rbash是低权限的bash,我们要切换到正常的shell
echo $PATH显示当前PATH环境变量
echo 相当于printf,可以打印变量的值,或者输出指定的字符串
$引用一个变量的值,$PATH表示环境变量的当前值
PATH保存了可执行文件的目录列表
echo /home/tom/usr/bin/*(上面的结果) 显示能执行的命令
看到能用vi
vi
按esc 输入:set shell=/bin/bash回车,设置当前终端会话的默认shell为/bin/bash
输入:shell回车 (执行shell)
再添加环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
/usr/bin/和/bin/包含了很多linux基本命令,:是分隔号