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论坛),而修复方法实际上只在官方题解中。什么?在题解中使用官方题解?是的,我知道,有时候你不得不做你必须做的事情。
好吧,让我们逐字运行这些命令并连接到数据库。
连接成功!为了便于跟随,必要的命令如下:
|
|
完成所有这些后,让我们继续回答问题。
任务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交互中的一个强大工具。在尝试之后,要运行的命令是:
|
|
此命令查询flag集合中的所有文档,在这种情况下,我们只看到一个带有flag:值的文档。所以如果我们将其提交为我们的root flag…
Root Flag和结论
在枚举目标时,能够与各种数据库交互是一项极其必要的技能。在红队操作中,能够掠夺有效凭据或一般的敏感信息是相当重要的。这对我们蓝队成员也很重要,因为我们知道的越多,就越能做好工作。感谢您坚持看完这篇文章,一如既往,下一篇文章再见!