安装 pymetasploit3 过程中的曲折

为了复现 AutoPentest-DRL 这个项目的真实攻击模式,需要使用到 Python3 的 pymetasploit3 库,该库可以连接本地或远程的 metasploit,调用它发动攻击。

按理说,只需要 pip 一下就可以了,但是我却遭遇了异常的曲折… 说起来曲折,但其实只是一个错误:__init__() got an unexpected keyword argument 'strict_map_key'

我尝试了谷歌和百度,也看了 Github 上的 Issue,均没有相关的信息。于是开始自行排查。按照报错的位置,一步步分析了代码,发现是某个函数允许传入任意数量的参数(__kargs_),然而当另外一个函数调用它并传参 strict_map_key 时,却无法正确执行。接下来开始打开脑洞…

库与 python3 版本不兼容

看了下 Github 仓库,嗯,最后一次 commit 是七天前。而且 Issue 也都是和这一步后面的过程相关的,看来不是这个问题。

而且,我在自己的本机(Windows)和 Ubuntu 上也安装了该库,并尝试远程调用 Kali 服务器上的 metasploit,成功了。

该库与 Kali 不兼容

就像在安装 MulVAL 这篇文章中说的一样,有可能是该库和 Kali 天性不和,无法一起好好工作。在纠结了好久后,我还是打开了 VMware 上的 Kali,然后安装该库,执行…… 又成功了!!!好奇怪诶,那还能是什么原因呢?

pymetasploit 库安装出错

尝试 pip uninstall 后,再次 install,再次执行,还是失败。这时发现,uninstall 只卸载了 pymetasploit3,但是在安装它时也顺带安装了它依赖的其他库。查看了一下,开始一一尝试写在它依赖的库并重装。具体的名字我记不清楚了,但是其中一个库在卸载时报错很奇怪,说在这个目录下找不到,它安装到了其他位置,但是还可以正常使用。

此时,很清晰了,就是它!

SOLVE IT!

我试着找到那个出错的库并手动删除,但是失败了,于是恼羞成怒 (bushi) 下,我直接把 python3 整个卸载了!!!卸载了它还不过瘾,又接着把 python2 给整个卸载了(你说我这是不是闲的?)。确保在整个 Kali 上再也没有 python 后,我开始重装 python2 和 python3。重装完成后,python3 可以正常用,python2 则不能使用 python 直接调用了,明天有时间 ln 一下应该就可以了。然后重新安装 pymetasplot3,执行… 诶等等,为啥也自动把我的 metasploit 给卸载了???

没办法,apt install metasploit-framework 重新安装一下,执行,成功!完美!

好了好了,一个小东西折腾了一晚上加半个下午,真不值当,希望下次不会遇到这么坑的事情了吧…