[vulnhub] basilic - Writeup

扫端口,开了22和5000 image 5000是个python写的web 简单看看 image 首先有个contact.html image 公钥这么短,估计之后是要爆破一下 现在没啥用 image 额,直接把源码拉下来 image 拿到第一个flag

注意到有个/json_calc 直接exec??? 注意到__builtins__被设为空 就是python自带的int str eval print以及import都不能用。。。 参考这篇Write up进行沙箱逃逸

注意用subprocess.check_output的时候有回显,os.system()只返回成功执行与否 最后结果会json一下,枚举模块的时候会报错 image 空格会爆炸 这个flask程序没有弄wsgi,不能处理url编码 执行命令的时候有空格,只能chr(32)拼接

所以主要用两个东西:搞到builtin和import os模块

这样可以调builtins
{}.__class__.__base__.__subclasses__().pop((('a')*59+('b')).index('b'))()._module.__builtins__.values().pop((('c')*109+('d')).index('d'))('__builtin__').chr(32)

这样可以import
{}.__class__.__base__.__subclasses__().pop((('a')*59+('b')).index('b'))()._module.__builtins__.values().pop((('c')*109+('d')).index('d'))('os').system(a)

然后玄学拼接一下,下载meterpreter,chmod,执行即可 image image image 拿到python用户的shell 在根目录下找到secret.txt,拿到第二个flag image /home下有两个用户 image basilic用户下有个.encrypted_password image

开始有个rsa私钥 找工具爆破 image 得到明文nevergonnagiveyouup ssh直接登录 拿到basilic用户和第三个flag image 准备提权 basilic有sudo权限 image /opt下有个calc_test.py image 看看源码 image 我们已经可以控制web程序,那么这就可以以root权限写任意文件

以下有两个方法 写sudoers,把basilic用户加到sudoers 写passwd,新建一个密码已知,uid=0的用户

以第一种为例 首先魔改web app image 直接return一个sudoers文本 然后sudo,运行calc_test.py image 拿到root image