企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
作为一个用户,我们最喜欢Metasploit的一件事情是它允许在技术上很难理解或设计出一些非常容易使用的东西,从字面上点击几下鼠标就可以让您看起来像Matrix的Neo。这使黑客非常容易。但是,如果你是Metasploit的新手,那么知道这一点:[Nobody makes their first jump](https://www.youtube.com/watch?v=3vlzKaH4mpw).。估计你会犯错误,有时很小,有时甚至是灾难性的......希望不会。你的第一个漏洞很可能会落在你面前,为了像Neo一样,。显然,为了成为一个你必须学会​​适当地使用这些模块,我们将教你如何使用。 在这个文档中,明白我们要求你没有exploit开发知识。一些编程知识当然会很好。总的来说,在使用漏洞之前,实际上有“功课”,你应该一直做功课。 ## 载入metasploit模块 每个Metasploit模块都带有一些元数据,用来解释它的含义,并且你必须首先加载它。一个例子: ``` msf > use exploit/windows/smb/ms08_067_netapi ``` ## 阅读模块描述和参数 这听起来可能令人惊讶,但有时候我们会问到已经在模块中解释过的问题。在决定是否适合使用漏洞之前,您应该始终在描述或提供的参考资料中查找以下内容: * **哪些产品和版本易受攻击** :这是您应该知道的关于漏洞的最基本的事情 * **什么类型的漏洞及其工作原理**: 基本上,您正在学习漏洞的副作用。例如,如果您利用内存损坏,如果由于任何原因而失败,则可能会使服务崩溃。即使不是这样,当你完成shell并输入“exit”时,仍然有可能崩溃。高级别的错误通常比较安全,但不是100%。例如,也许它需要修改一个配置文件或安装一些可能导致应用程序被破坏的东西,并可能成为永久性的。 * **哪些已经经过测试**: 在开发模块时,如果太多,通常不会针对每一个体系对漏洞进行测试。通常开发人员只是试图测试他们可以得到的任何东西。所以如果你的目标没有在这里提到,请记住,它不能保证它会100%的工作。最安全的做法是实际上重新创建你的目标所具有的环境,并在触及真实事物之前测试这个漏洞。 * **服务器必须满足哪些条件才能被利用**: 通常,漏洞需要多种条件才能被利用。在某些情况下,您可以依靠漏洞check命令,因为当Metasploit标志着一些易受攻击的东西时,它实际上是利用了这个bug。对于使用BrowserExploitServer mixin的浏览器攻击,它还将在加载漏洞利用之前检查可利用的需求。但是自动化并不总是存在,所以你应该在运行这个“exploit”命令之前尝试找到这个信息。有时候这只是常识,真的。例如:Web应用程序的文件上传功能可能会被滥用来上传基于Web的后门程序,并且通常需要上传文件夹才能被用户访问。如果你的目标不符合要求,那就没有意义了。 您可以使用info命令查看模块的描述: ``` msf exploit(ms08_067_netapi) > info ``` ## 阅读目标列表 每个Metasploit漏洞都有一个目标列表。基本上这是开发人员在公开发布漏洞之前测试的一系列设置。如果你的目标机器不在列表中,最好假定这个漏洞利用从未在特定的设置上被测试过。 如果漏洞利用支持自动定位,它总是列表中的第一项(或索引0)。第一项也几乎总是默认的目标。这意味着如果你以前从未使用过,那么你永远都不应该假定攻击会自动为你选择一个目标,而且默认设置可能不是你正在测试的目标。 `show options` 命令 会告诉你哪个目标被选中。例如: ``` msf exploit(ms08_067_netapi) > show options ``` `show targets`命令会给你一个支持的目标列表: ``` msf exploit(ms08_067_netapi) > show targets ``` ## 确认全部选项 所有Metasploit模块都预先配置了大多数数据存储选项。但是,它们可能不适合您正在测试的特定设置。要做一个快速的检查,通常“show options”命令就足够了: ``` msf exploit(ms08_067_netapi) > show options ``` 但是,“显示选项”仅显示所有基本选项。它不会向您显示回避或高级选项(尝试“显示回避”和“显示高级”),您应该使用显示所有数据存储选项的命令实际上是“set”命令: ``` msf exploit(ms08_067_netapi) > set ``` ## 找到模块的pull请求 Metasploit存储库托管在Github上(你现在已经在上面),而开发者/贡献者依赖它来进行开发。在模块公开之前,将其作为最终测试和审查的拉取请求提交。在那里,你会发现几乎所有你需要知道的关于这个模块的东西,也许你不会从阅读模块的描述或随机的博客文章中学到的东西。这些信息真的很珍贵 你可能从阅读pull请求中学到的东西: * 如何建立易受攻击的环境的步骤 * 实际测试了哪些目标。 * 该模块是如何使用的。 * 该模块如何验证。 * 发现了什么问题。您可能想知道的问题。 * 演示。 * 其他惊喜。 主要有两种方法可以找到你正在使用的模块的请求: * **通过拉请求号码** 如果你真的知道拉请求号码,这是最简单的。简单地去 ``` https://github.com/rapid7/metasploit-framework/pull/[PULL REQUEST NUMBER HERE] ``` * **通过过滤** 这很可能是你如何找到拉请求。首先,你应该去这里:https : //github.com/rapid7/metasploit-framework/pulls。在顶部,您将看到一个带有默认过滤器的搜索输入框is:pr is:open。这些默认值意味着你正在查看pull请求,而你正在查看那些仍在等待处理的请求 - 仍然等待被合并到Metasploit。那么,既然你找已经合并的那个,你应该这样做: 1. 点击“closed”。 2. 选择标签“module”。 3. 在搜索框中输入与模块相关的其他关键字。该模块的标题可能提供最好的关键字。 注意:如果该模块是在2011年11月之前编写的,则不会找到该请求。