HTB入门指南:MongoDB渗透测试实战

本文详细记录了在HackTheBox平台上针对MongoDB数据库的渗透测试过程,涵盖NMAP扫描、NoSQL数据库特性分析、MongoDB连接与命令执行等实战技术,帮助读者掌握数据库枚举和信息收集的关键技能。

HTB入门指南:Mongod

熟悉MongoDB

继续我们的下一个Starting Point机器,我们遇到了这个"坏小子"。快速浏览相关任务表明我们需要复习MongoDB知识。说实话,我在这方面经验不多,所以这对我们所有人都会有帮助。通过HTB的pwnbox或OpenVPN连接到环境后,让我们启动目标并开始第一个任务。

任务1和2

我们将通过NMAP扫描快速完成前两个任务,今天不浪费任何时间。

在这里您可以看到我运行了sudo nmap -sV -p- 10.129.16.91,其中-sV标志用于服务扫描,-p-指定我要扫描所有端口,而不仅仅是前10,000个端口。根据输出结果,我们看到有两个TCP端口开放,mongodb服务运行在27017端口上。让我们填写所有答案并继续前进。

任务3

您看这里,有时HTB会通过提供字符数来稍微透露答案。但是,我们不要让这变得太容易,让我们真正理解SQL与NoSQL数据库的区别。IBM有一篇很好的文章详细讨论了这个问题,简而言之,这涉及到数据存储的方式。这并不意味着NoSQL数据库不使用SQL或某种SQL来执行查询。在SQL数据库中,所有内容都存储在表和行中,这就是所谓的关系数据库。NoSQL只是让我们在数据存储方式上更加灵活,并且被认为更适合处理大量非结构化数据。

任务4

我实际上毫无头绪,就像我说的,我和大家一样在这方面都是新手。让我们去谷歌搜索看看能找到什么。来自GeeksforGeeks的信息:

这里我们看到了相关命令以及连接到远程数据库的语法,完美,我们马上就需要这个。实际上,在提交答案之前,让我们尝试连接到数据库。我们没有获得任何凭据,所以让我们只指定主机看看会发生什么。

嗯,这似乎不太对劲。简而言之,这是pwnbox的nodejs版本或相关问题(根据HTB论坛),而修复方法实际上只在官方题解中。什么?在题解中使用官方题解?是的,我知道,有时候你不得不做你必须做的事情。

好吧,让我们逐字运行这些命令并连接到数据库。

连接成功!为了便于跟随,必要的命令如下:

1
2
3
4
curl -O https://downloads.mongodb.com/compass/mongosh-2.3.2-linux-x64.tgz
tar xvf mongosh-2.3.2-linux-x64.tgz
cd mongosh-2.3.2-linux-x64/bin
./mongosh mongodb://[IP_Address]

完成所有这些后,让我们继续回答问题。

任务5

幸运的是,我仍然打开着GeeksforGeeks文章,它实际上提供了我们所需的大部分内容。show dbs命令将是我们这里需要的。

从我们的MongoDB shell中运行该命令,我们看到这里有5个数据库。对于任务5,我们有了答案,让我们继续下一个任务。

任务6和7

好的,我们将一次性完成这两个任务。MongoDB CLI的一个不错的功能是help命令。

这会输出大量有用信息,您也可以运行help <command>来获取有关特定命令的更多信息。不过在这里,我们实际上可以看到需要运行的命令。show collections命令可能会起作用。我们首先需要使用use命令将自己置于数据库中。

从这里的数据库列表中,sensitive_information听起来很有趣。我们可以跳转到该数据库并运行show collections来查看一个名为flag的集合。怎么样?现在,下一部分花了我比愿意承认的时间更长的时间,但要回答任务7,我们需要利用db命令,这是在CLI交互中的一个强大工具。在尝试之后,要运行的命令是:

1
db.flag.find()

此命令查询flag集合中的所有文档,在这种情况下,我们只看到一个带有flag:值的文档。所以如果我们将其提交为我们的root flag…

Root Flag和结论

在枚举目标时,能够与各种数据库交互是一项极其必要的技能。在红队操作中,能够掠夺有效凭据或一般的敏感信息是相当重要的。这对我们蓝队成员也很重要,因为我们知道的越多,就越能做好工作。感谢您坚持看完这篇文章,一如既往,下一篇文章再见!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计