💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
> 注意 Metasploit Redmine已经关闭 官方wiki没有更新 ### Metasploit bug 提交 任何开源软件产品越来越受欢迎,有一种趋势是看到bug报告量的增加以及bug报告质量的相应降低。 我们不反对为Metasploit提交错误报告 - 我们需要错误报告来了解什么是坏的,而不是试图阻止bug的浪潮 所以,这个页面不是试图阻止错误的浪潮,而是试图确保我们得到的每个错误报告都是以最大化解决问题的机会来写的。这个页面将试图确保我们得到的每个错误报告都是以最大化实际得到解决问题的机会的目的写成的。 对于这一点 metasploit社区是阅读了数千份bug报告。事实证明,编写良好的错误报告可以更快,更轻松地修复这些错误。 真正相当了不起的是,快速的关闭时间似乎与错误报告质量密切相关,而不是错误本身的复杂性。 相当惊人的是,快速的bug关闭时间似乎与错误报告质量密切相关,而不是错误本身的复杂性。 有两种情况你一般不应该打开一个bug报告,那就是当你有一份支持合同,或者当你发现Metasploit本身存在一个安全问题的时候。 #### 支持合同 如果您有Metasploit产品的支持合同,您应该联系您的Rapid7支持代表,或致信support@rapid7.com。 Metasploit支持全职工作的人真的很`漂亮`, 它可能当场有一个修补程序或解决方法 #### 安全问题 如果你发现Metasploit本身存在安全问题,那么如果您通过`security@metasploit.com`告诉我们,我们将非常感激。毕竟,我们希望得到和其他软件项目一样的对待。并不是说,我们想要掩盖你的bug报告.而是想在有人开始扰乱我们的无辜用户之前,试着修复bug。 我们很乐意为您提供信任,让您匿名,告知您进展情况,并与您探讨相关问题 。但是如果我们看到有人公开报告安全漏洞,那么就很难保持要所有的归属和直接沟通,因为我们要尽最大努力尽可能快地修复漏洞。 另外,如果你可以以Metasploit模块的模式发送给security@metasploit.com的报告你的安全漏洞,那么这将是理想和欢庆的。 这应该包括你根本不应该打开一个bug报告的情况,所以让我们继续我们的主要问题跟踪系统,`Redmine` ### 介绍 Redmine Metasploit中bug报告的最终目的地是我们的Redmine问题跟踪器。这就是我们想追踪的所有问题诞生,变老,最终死亡的地方。 为了提交错误报告,您必须先创建一个帐户。 这很容易,也很有趣。可悲的是,由于垃圾邮件的问题,目前我们不能采取真正的匿名漏洞报告,但是我们正在积极探索如何使这种注册尽可能人性化和简单。 在谈到Metasploit时,有人问道:“有没有bug?。或者是指“bug追踪器”或“Redmine",但我们几乎总是在谈论这个系统。 #### 它们都是bug 谈到对话,重要的是要注意,我们倾向于将所有问题称为“bug”,而不管它是缺陷,功能请求或支持请求。 这只是少数音节和字符的区别,并不意味着贬低这个问题的内容 #### github issues 我们在GitHub仓库中启用了一个问题跟踪器,但是,正如上面所说的,如果它们要被跟踪的话,BUG应该会在Redmine上。 我们有一个幻想关闭Redmine一段时间,完全切换到GitHub的`issues`,但Redmine仍然是对于放弃来说是有用的。 因此,在此期间,没有人会阻止您提交GitHub问题。 许多GitHub项目都有一个“问题”按钮,我们宁愿不让人们感到惊讶,并通过wiki学会出如何报告错误。 如果你正在阅读这个,现在你已经明白了,所以应该避免这个`issues`标签。 #### 电子邮件 我们维护几个邮件列表 - [Metasploit框架](https://dev.metasploit.com/mailman/listinfo/framework)和[Metasploit-Hackers列表](https://lists.sourceforge.net/lists/listinfo/metasploit-hackers)。有时候人们会遇到问题,他们会在那里提到他们。有时,有人会根据这些列表上的流量汇总错误报告,但有时候没有人会这样做。重点是,如果您不确定是否有错误或仅仅是使用问题,请以一封邮件到框架的邮件列表开始。如果你确定你有一个bug,那么最好从一个普通的错误报告开始,然后在其中一个邮件列表中提到它。 #### Rapid7社区 Rapid7在(它是等待的)[community.rapid7.com](community.rapid7.com)上运行Metasploit用户社区。就像电子邮件一样,这里主要是讨论和帮助使用Metasploit的场所,而不是那么多的bug报告。 ### 入门 在bug报告的机制上,足够的谈论 #### 避免重复 你可能不是第一个注意到你遇到的问题的人,所以这里有一些策略来确保以前报告的错误被关注。 如果您遇到特定模块的问题,可以尝试搜索该模块的名称来查看是否已经有任何已报告的内容。如果你的bug有一个特定的错误信息,那就去搜索那个。 另一个策略是简单地浏览最近的错误,特别是如果你怀疑这个过程中有一个新的错误,因为你以前肯定会使用过它。 如果您碰巧发现了您遇到的错误,那么使用任何新信息更新报告对于解决问题都是非常有帮助的。你也可以找到解决的错误,描述你的问题,这表明一个回归(老bug重新引入) - 修复这些问题通常是快速的,所以注意到可能的问题回归是相当有用的。 最后,你可能会发现一个被拒绝或关闭的错误。在这些情况下,这个问题通常是Metasploit外部的东西 - 用户错误,配置怪异,已知的不兼容性等等。如果您认为原来决定错误,请打开一个新的bug并指出您认为的问题是什么。毕竟,如果人们继续碰到同一个非bug,那么这可能至少是一个文档bug,也可能是真的。 ### 描述你的错误 #### 让你的bug可搜索 由于我们在提交之前谈论了寻找已有bug报告的重要性,所以确保你的bug是可以找到的。在标题中使用特定的模块名称和错误消息,并尽可能多地包含报告中的错误。"The Windows login aux mod is broken”是一个可怕的标题,而“NoMethodError raised on smb_login module”好得多。 大多数情况下,你遇到的错误没有很好,清楚的错误信息。在这些情况下,试着确定标题中的内容。例如,请查看错误 #7215 这是一个非常典型的投诉,一些模块未能打开一个shell,但注意到,虽然模块名称不在标题中,但是在开始描述中。此外,这个错误有很多日志和屏幕截图。 #### 日志和屏幕截图 查看Bug#6905。如果我们所有的错误报告都是这样的话,我会很高兴的。它非常简短,并具有一切基础 - 一个简短但描述性的标题,错误的完整回溯,完整的历史记录以及版本信息。这个bug非常适合搜索,也容易重现。 如果您正在实验室或虚拟环境中测试模块,我们希望获得尽可能多的目标数据。这意味着包括精确到补丁级别的目标的准确版本,如果可以的话,捕获它们的pcaps,以及Framework内部或外部的任何类型的日志记录。 通常情况下,我们会要求framework.log- 通常保存在那里`$HOME/.msf4/framework.log`。 另一方面,如果您在一个协议内时遇到问题,我们知道您不能在您的错误报告中包含一堆客户数据。在这种情况下,我们仍然会在日志中发现错误,但是您需要首先对它们进行清理,如果您需要拒绝,我们不会感觉受到伤害。这就是对一个公司渗透测试的业务。 #### 提到你的环境 这可能是你所描述的错误只会在你的环境中出现。如果你不在正常的Metasploit开发环境或者Metasploit安装中,你要在你的bug报告中特别提到这一点。命令的输出ruby -v和 uname -a(或winver)通常非常有帮助。 #### 包括重现的步骤 至少,你的状态采取的步骤可能在这里找到`$HOME/.msf4/history,`,所以您可以从那里剪切和粘贴。如果比命令历史记录中包含的背景信息更多,比如可能使用的有趣的网络配置,那么也要提到这一点。 我们喜欢可用于可靠触发bug的资源脚本(rc脚本)。这些脚本最终可以找到可重复的测试用例,所以如果你能把它们放在一起,太棒了!有关资源脚本编写的更多信息,请参阅[此博客文章](https://community.rapid7.com/community/metasploit/blog/2010/03/22/automating-the-metasploit-console)。 ### 补丁 #### 提供补丁 也许你遇到了一个bug,而且你已经知道如何修复它了。或者,你只是在互联网上的想要帮助谁的一个友善陌生人。 使得补丁到Metasploit最可靠的方法是修补你自己的分叉,并以我们的方式提出[pull请求](https://github.com/rapid7/metasploit-framework/wiki/Metasploit-Development-Environment#wiki-pull)。 既然你攻击了一个已经存在的bug,你可以使用[SeeRM#1234]或者[FixRM#1234]的一个特殊的提交信息字符串,并且会自动更新Redmine的指针, 一旦修复完成,由于它是人类可读的,所以我们可以立即告诉你,你正在谈论一个Redmine问题,所以你或者某人可以通过指向你的pull requestr的链接来更新Redmine。 当然,这一切都假定你已经迷上了GitHub。如果这对你不起作用,你可以通过简单地创建一个补丁`diff`来对最近的Metasploit进行`checkout`,从而将补丁附加到Redmine问题上 - 对于大多数SVN用户来说,情况就是这样(在这种情况下,你会想使用svn diff) 现在,应该预先警告:直接提交给Redmine的补丁比较麻烦,特别是如果有更多的问题。如果你打算修补不止一次或两次,那么你花一点时间建立你的Metasploit开发环境,并开始在自己环境玩。 #### 提供测试案例 我们喜欢 , 不. 爱进行测试,来显示补丁实际上工作。同样,资源脚本是快速组合的好方法,您可以将其与标准实用程序`screen`结合使用以获得一些出色的决议: * 打开screen并按Ctrl-a H  * msfconsole -L -q -r /path/to/your/test.rc * 退出msfconsole和git checkout分支包含修复程序 * msfconsole -L -q -r /path/to/your/test.rc * 退出离开screen 这将生成一个包含所有输出和所有击键的修复的屏幕日志。是的,它会看起来在一个普通的文本编辑器,可怕的是由于各种转义码,但cat并less都解决这些绰绰有余。 如果你在Windows上,msfconsole spool命令应该提供足够的输出,至少演示问题及其解决方案。 ### 跟进bug 所以,你要尽全力去编写一个bug报告,并且要确保它得到解决。接下来是什么? #### 通知设置 如果你在Redmine上打开了一个bug,你应该自动通过电子邮件获得更新,而GitHub pull请求也是如此。如果您不是由于某种原因,您应该检查自己的垃圾邮件过滤器以及通知设置。如果你想追踪一些你尚未涉及到的bug,你可以随时在任何问题的右上方勾选“Watch”star,每当它发生变化时,你都会得到更新。 TODO:将Redmine更新挂钩到已经在观看的GitHub的Metasploit-Notifications。这将需要十分钟。 #### 解决错误 [Metasploit-Framework master分支](https://github.com/rapid7/metasploit-framework)有一个修复程序后,您的bug应该被视为“已解决” 。跟踪该分支的人当然会立即得到修复。几分钟后,依靠`msfupdate`SVN的每个人都可以访问修复程序。这些是最先进的分支。 每周一次(通常是星期三),我们发布Metasploit下载的更新。一般来说,Metasploit框架修复将在适当的QA之后每周进行一次安装。所以,虽然我们可能会将错误称为“已解决”,但可能还不能获得。