Skip to content
L edited this page May 4, 2020 · 1 revision

导致 Metasploit 的模块不稳定的原因很多, 通常是因为模块原作者不感兴趣(或办不到)实施测试所需要的更改.

幸运的是, 对于这些不稳定的模块, 我们有一个单独的分支, 名为 Unstable.

提交到 Unstable 分支

不稳定的模块具有其自己的特殊目录结构 -- 不应使用常规的 modules/ 子目录, 因为我们不想与现有或将来的模块发生冲突, 我们还希望能够轻松发现哪些模块不稳定. 因此, 应按照以下步骤将新模块放入该模块.

  1. 首先, 获取最新的 upstream/master: git checkout unstable; git merge upstream/master; push upstream
  2. 从 PR 创建本地分支: git checkout -b temp-pr1234 --track upstream/pr/1234
  3. 从 unstable 分支上创建不稳定分支: git checkout -b unstable-pr1234-modulename --track upstream/unstable
  4. 找到模块的路径: git diff upstream/master...upstream/pr/1234 --name-only
  5. git checkout 有问题的模块: git checkout temp-pr1234 modules/exploits/path/to/module.rb
  6. 将文件移到适当的目录: git mv modules/exploits/path/to/module.rb unstable-modules/exploits/incomplete
  7. 提交: git commit
  8. 发送针对 unstable 分支的 pull request, 而不是 master 分支: https://github.com/YOU/metasploit-framework/compare/rapid7:unstable...unstable-pr1234-modulename?expand=1 . 请务必在说明中提及原始的 pull request 编号, 以便 PR 会相应更新.

假设你已设置要开发的 http://r-7.co/MSF-DEV, Rapid7 的分支是 "upstream" 存储库.

示例

有关此过程的示例, 请参考 PR #2801.

不稳定的库

如果某人的库更改无法合并到 master 中, 则我们无法在 unstable 中继续使用它们. 没有好的办法来维护这种分支, 因为冲突肯定很快就会发生. 不过, 不稳定的脚本和插件是可以的.

营救不稳定的模块

如果你想抢救不稳定的模块, 那就太好了! 只需获取 pull request 和原始 PR 编号 (如果可以找到编号的话) , 这是不稳定的救援方法. 你可以执行类似的 git checkout 来获取文件, 然后再次使用 git mv 到正确的位置.

安全

从 Debian 的角度来看, 这不是不稳定的-它们不是最新版本, 除非有人采用它们, 否则它们的问题不会得到修复, 并且在加载时它们最终可能导致整个框架崩溃. 尽管存在诸如 ExploitRanking 之类的标记, 但还是无法保证.

Clone this wiki locally