漏洞利用及探测
rbash逃逸
虽然我们现在已经可以执行切换路径命令了,但是发现还有是很多命令不能用。
我想看看一下目标主机的所有用户,是不能执行的。
那我们就用到了当前shell逃逸。第一种情况:/ 被允许的情况下;直接 /bin/sh 或 /bin/bash
第二种情况:能够设置PATH或SHELL时。
export PATH=$PATH:/bin/:/usr/bin:$PATH
export SHELL=/bin/sh
现在我们是符合第一种情况的所以我们直接使用/bin/sh 或者 /bin/bash
export PATH=$PATH:/bin/:/usr/bin:$PATH
现在我们就可以使用cat命令了,当然其他命令我们也是可以进行执行的
我们通过passwd文件看到tom/bin/rbash而jerry是/bin/bash,tomshell是受限制的,而jerry的shell是不受限制的
详细请看:https://xz.aliyun.com/t/7642?page=1&time__1311=eqmxuDnGDQitdAKG%3DD%2FFnxBKR0DkqYeDBjmhoD#toc-2
我们现在获取到了flag3,根据它的提示说老汤姆总追着杰瑞跑。那应该下一个flag就在杰瑞身上。
su - jerry
//passwd=adipiscing
所以我们切换到jerry用户,因为jerry的shell是不受限制的。
我们看到jerry身上有个flag4,这个flag4上也很有意思
我们现在没有获得最重的旗帜,还说这没有提示,居然还说让我滚。那我就得看看怎么个事了。
关键就在最后一句 Go on - git outta here 这不就是git吗,那我们的突破点就是这个git工具了。
su -l
执行sudo -l列出jerry可以通过sudo执行的所有命令,有git,那我们就使用git进行提权。
提权
git提权
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
GIT提权原理:
原理是git配置不当存在溢出,溢出的部分如果输入一个交互式窗口就会有交互,类似于suid那样,暂时拥有root,又写了一个交互,就真的有了root的交互。
git 的帮助信息中有一个-p | --paginate选项
这个-p的意思就是以分页的形式展示git的帮助信息,但是这里他会默认调用more来进行展示。
sudo git -p
!/bin/sh
我们再交互式的中输入!/bin/sh,可以看到我们的命令提示符变成了root。
最终flag
我们首先切换到root的工作目录,就可以看到最终的flag了。
总结:
1、我们使用nmap扫描端口的时候一定要看仔细,并不是所有的ssh都是22端口,因为考虑到安全问题,就把端口给改变了。
2、DNS服务替代解决方案:hosts文件,且它的解析优先级比DNS更高。可以将目标主机ip地址和域名写入hosts文件。
3、在做目录枚举的时,要有好的字典才能更精确查找。
4、我们在探测http时,可以根据架构目录枚举的架构判断CMS
5、我们要根据目标主机的CMS和结构来选择工具,达到精准把控。
6、不论是用户枚举还是暴力破解都需要选对字典,才能有效。
7、在进行rbash逃逸的时候,应该按照可使用的命令选择逃逸的方式,不同命令,有不同的逃逸方式。
8、每个flag都是一个提示,看仔细,不要相信它说这个没有任何提示。