Jok3r 是一个 Python3 CLI 应用程序,旨在帮助渗透测试人员进行网络基础设施和 Web 黑盒安全性测试。
0×00 前言
Jok3r 是一个 Python3 CLI 应用程序,旨在帮助渗透测试人员进行网络基础设施和 Web 黑盒安全性测试。
目标是通过自动执行尽可能多的安全测试来节省网络/网络渗透测试期间的尽可能多的时间,以便快速识别悬而未决的漏洞,然后将更多的时间花在更有趣和棘手的事情上!
基于这一观察,目前有许多针对通用网络服务的黑客入侵开源工具/脚本(来自各种来源),可以执行从指纹识别到利用的各种任务。因此,Jok3r 的想法是以一种聪明的方式组合那些开源工具,以获得更相关的结果。
0×01 项目描述
Pentest 工具箱管理
- 工具选择:汇编来自各种来源的 50 多种开源工具和脚本。
- 基于 Docker 的应用程序:打包在运行 Kali OS 的 Docker 映像中的应用程序,可在 Docker Hub 上找到。
- 即用型:安装了所有工具和依赖项,只需提取 Docker 映像并运行一个新容器即可。
- 更新变得容易:仅运行一个命令即可轻松使整个工具箱保持最新状态。
- 轻松自定义:轻松从简单的配置文件添加/删除工具。
网络基础设施安全评估
- 许多受支持的服务:针对最常见的 TCP / UDP 服务(HTTP,FTP,SSH,SMB,Oracle,MS-SQL,MySQL,PostgreSQL,VNC 等)。
- 结合工具的力量:每个安全检查均由工具箱中的工具执行。通过链接安全检查来执行攻击。
- 上下文意识:根据目标的上下文(即检测到的技术,凭据,漏洞等)来选择和调整要运行的安全检查。
- 侦查:对目标服务执行自动指纹识别(产品检测)。
- CVE 查找:检测到产品名称及其版本后,将在联机 CVE 数据库上执行漏洞查找(使用 Vulners 和 CVE 详细信息)。
- 漏洞扫描:自动检查常见漏洞并尝试执行某些利用(自动拥有)。
- 蛮力攻击:自动检查服务上的默认/通用凭据,并在必要时执行字典攻击。词表根据目标服务进行了优化。
- 身份验证后测试:找到有效凭据后,会自动执行一些漏洞利用后检查。
网络安全评估网络安全评估
- 重点关注 HTTP:目前支持针对 HTTP 的 60 多种不同的安全检查。
- Web 技术检测:在安全检查之前运行基于 Wappalyzer 的指纹引擎,从而可以检测:编程语言,框架,JS 库,CMS,Web 和应用程序服务器。
- 服务器利用:自动扫描和/或利用 Web 和应用程序服务器(例如 JBoss,Tomcat,Weblogic,Websphere,Jenkins 等)上的最关键漏洞(例如 RCE)。
- CMS 漏洞扫描:在最常见的 CMS(Wordpress,Drupal,Joomla 等)上自动运行漏洞扫描程序。
本地数据库和报告
- 本地数据库:与目标相关的数据通过任务(工作区)组织到本地 Sqlite 数据库中,该数据库在安全测试期间保持更新。
- 类似于 Metasploit 的 Interactive Shell:通过带有几个内置命令的交互式 Shell 访问数据库。
- 从 Nmap 导入目标:手动或通过加载 Nmap 结果将目标添加到任务中。
- 从 Shodan 导入目标:从 shodan 手动将目标添加到任务中(需要 shodan API 密钥)。
- 访问所有结果:来自安全检查,检测到的凭据和漏洞的所有输出都存储在数据库中,并且可以轻松访问。
- 报告:生成完整的 HTML 报告,其中包含目标摘要,Web 屏幕截图以及来自安全测试的所有结果。
0×02 项目安装
推荐的使用 Jok3r 的方法是拉 Docker 映像,因此您不必担心依赖关系问题并安装工具箱的各种黑客工具。一切都通过 Docker Hub 上可用的 Docker 容器进行了测试!
- 拉 Jok3r Docker 映像:
1 | sudo docker pull koutto/jok3r |
- 运行新的 Docker 容器:
1 | sudo docker run -i -t --name jok3r-container -w /root/jok3r -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --shm-size 2g --net=host koutto/jok3r |
- 要重新运行已停止的容器:
1 | sudo docker start -i jok3r-container |
- 要在容器内打开多个外壳:
1 | sudo docker exec -it jok3r-container bash |
0×03 项目更新
为了进行更新,只需从 Docker Hub 中提取最新的 Docker 映像,然后从该新映像运行一个新的容器:
1 | sudo docker pull koutto/jok3r |
0×04 快速使用
Pentest 工具箱管理
- 显示工具箱中的所有工具:
1 | python3 jok3r.py toolbox --show-all |
- 在工具箱中安装所有工具(已在 Docker 容器中完成):
1 | python3 jok3r.py toolbox --install-all --auto |
- 更新工具箱中的所有工具,并每次提示检查更新:
1 | python3 jok3r.py toolbox --update-all |
- 在没有任何提示的情况下更新工具箱中的所有工具:
1 | python3 jok3r.py toolbox --update-all --auto |
信息
- 列出支持的服务:
1 | python3 jok3r.py info --services |
- 显示给定服务的安全检查:
1 | python3 jok3r.py info --checks <service> |
- 显示给定服务支持的攻击配置文件:
1 | python3 jok3r.py info --attack-profiles <service> |
- 显示所有服务支持的产品:
1 | python3 jok3r.py info --products |
安全测试
在本地数据库中创建一个新任务:
1 | python3 jok3r.py db |
单一目标:
- 以交互方式对 URL 运行所有安全检查,并将结果添加到“ mayhem”任务中:
1 | python3 jok3r.py attack -t https://www.example.com/ --add2db mayhem |
- 针对 MS-SQL 服务运行安全检查(无用户交互),并将结果添加到任务中:
1 | python3 jok3r.py attack -t 192.168.1.42:1433 -s mssql --add2db mayhem --fast |
- 针对 FTP 服务仅运行“ recon”和“ vulnscan”安全检查,并将结果添加到任务中:
1 | python3 jok3r.py attack -t 192.168.1.142:21 -s ftp --cat-only recon,vulnscan --add2db mayhem |
多个目标:
- 在任务“ mayhem”中注册的所有服务上仅搜索“轻松获胜”(严重漏洞和易于利用):
1 | python3 jok3r.py attack -m mayhem --profile red-team --fast |
- 针对给定任务中的所有服务运行所有安全检查,并将结果存储在数据库中:
1 | python3 jok3r.py attack -m mayhem --fast |
- 从任务中仅对在端口 21 / tcp 和 2121 / tcp 上运行的 FTP 服务运行安全性检查:
1 | python3 jok3r.py attack -m mayhem -f "port=21,2121;service=ftp" --fast |
- 对该任务仅对在端口 2121 / tcp 上运行的 FTP 服务和在 192.168.1.42 上的所有 HTTP 服务运行安全检查:
1 | python3 jok3r.py attack -m mayhem -f "port=2121;service=ftp" -f "ip=192.168.1.42;service=http" |
数据库访问和报告
- 选择一个任务:
1 | python3 jok3r.py db |
- 将主机/服务从 Nmap 结果(XML)导入任务范围:
- 从 Shodan 结果(ip)导入主机/服务到任务范围:
1 | jok3rdb[mayhem]> nmap results.xml |
- 显示在选定任务中注册的服务,主机,检测到的产品和凭据:
1 | jok3rdb[mayhem]> services |
- 在检查结果中搜索字符串以选择任务:
1 | jok3rdb[mayhem]> results --search '<search_string>' |
- 从选定任务中的检查输出中自动检测到的显示漏洞(实验性):
1 | jok3rdb[mayhem]> vulns |
- 为所选任务生成 HTML 报告:
1 | jok3rdb[mayhem]> report |
0×05 典型用法示例
操作流程
您将在范围内的几台服务器上开始渗透测试。这是 JoK3r 用法的典型示例:
- 您在范围内的服务器上运行 Nmap 扫描。
- 您在本地数据库中创建一个新任务(假设为“ mayhem”):
1 | python3 jok3r.py db |
- 您从数据库中的 Nmap 扫描导入结果:
1 | jok3rdb [mayhem]> nmap results.xml |
- 然后,您可以快速了解范围内的所有服务和主机,添加一些注释,如果已经对目标有所了解(灰色框渗透测试),则可以添加一些凭据,等等。
1 | jok3rdb[mayhem]> hosts |
- 现在,您可以对合并范围中的某些目标运行安全检查。例如,如果要对作用域中的所有 Java-RMI 服务运行检查,则可以运行以下命令:
1 | python3 jok3r.py attack -m mayhem -f "service=java-rmi" --fast |
- 您可以在执行工具时实时查看安全检查的全部结果,也可以稍后使用以下命令从数据库查看安全检查的全部结果
1 | jok3rdb[mayhem]> results |
- 在任何时候,都可以显示从安全检查输出中自动提取的数据,即检测到的产品,凭据和漏洞。
1 | jok3rdb[mayhem]> products |
- 您随时可以生成 HTML 报告,其中包含任务范围内所有目标的摘要,HTTP 服务的网页屏幕截图以及已运行的所有安全检查的完整输出:
1 | jok3rdb[mayhem]> report |