.. raw:: html
.. image:: ./pictures/logo.png
.. raw:: html
.. image:: https://img.shields.io/badge/python-3.6-blue.svg :target: https://www.python.org/downloads/release/python-366/ :alt: Python 3.6
.. image:: https://readthedocs.org/projects/jok3r/badge/?version=latest :target: https://jok3r.readthedocs.io/en/latest/ :alt: Documentation ReadTheDocs
.. image:: https://img.shields.io/microbadger/image-size/koutto/jok3r.svg :target: https://hub.docker.com/r/koutto/jok3r/ :alt: Docker Size
.. image:: https://img.shields.io/docker/cloud/build/koutto/jok3r.svg :alt: Docker Build Status
.. raw:: html
警告:项目仍处于v3 Beta版本。仍在积极开发中,可能存在错误。
大量测试正在进行中:详见 https://github.com/koutto/jok3r/blob/master/tests/TESTS.rst。欢迎提出想法、报告错误、贡献代码!
.. contents:: :local: :depth: 1
Jok3r 是一个 Python3 CLI 应用程序,旨在帮助渗透测试人员进行网络基础设施和Web黑盒安全测试。
目标是在网络/Web渗透测试中尽可能节省时间,通过自动化尽可能多的安全测试来快速识别低挂果漏洞,从而将更多时间用于更有趣和棘手的事情!
它基于这样一个观察结果:目前存在许多针对常见网络服务的黑客开源工具/脚本(来自各种来源),可以执行从指纹识别到利用的各种任务。因此,Jok3r 的想法是将这些开源工具以智能方式组合起来,以获取更相关的成果。
.. image:: pictures/video-01.png :target: https://www.youtube.com/watch?v=FlbeBj5FPtI
.. image:: pictures/video-02.png :target: https://www.youtube.com/watch?v=z4cf_8EQ59Q
.. image:: ./pictures/visio/architecture/jok3r-architecture.png :alt: Jok3r架构
.. image:: ./pictures/visio/flowchart/jok3r-flow-chart.svg :width: 700px :alt: Jok3r流程图
重要提示:推荐使用Jok3r的方式是拉取Docker镜像,这样您无需担心依赖问题和安装工具箱中的各种黑客工具。所有测试均基于Docker Hub提供的容器进行!
.. image:: https://raw.githubusercontent.com/koutto/jok3r/master/pictures/docker-logo.png
Docker镜像可在Docker Hub获取,每次更新后自动重新构建:https://hub.docker.com/r/koutto/jok3r/。该镜像最初基于官方Kali Linux Docker镜像(kalilinux/kali-linux-docker)。
.. image:: https://images.microbadger.com/badges/image/koutto/jok3r.svg :target: https://microbadger.com/images/koutto/jok3r :alt: Docker镜像大小
拉取Jok3r Docker镜像:
.. code-block:: console
sudo docker pull koutto/jok3r
运行新的Docker容器:
.. code-block:: console
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
注意:
-e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix 是为了能够在Docker容器中启动GUI应用程序(例如打开Web浏览器查看报告)。需要在主机上运行 xhost +local:root。
--shm-size 2g 用于增加共享内存大小,避免在Docker容器中阅读报告时浏览器崩溃。
--net=host 用于共享主机接口,这是反向连接所必需的(例如,测试RCE时向容器发送Ping、获取反向Shell)。
重新启动已停止的容器:
.. code-block:: console
sudo docker start -i jok3r-container
在容器内打开多个Shell:
.. code-block:: console
sudo docker exec -it jok3r-container bash
要更新,只需从Docker Hub拉取最新的Docker镜像,然后从该新镜像运行一个新容器:
.. code-block:: console
sudo docker pull koutto/jok3r
sudo docker run -i -t --name jok3r-container-updated -w /root/jok3r -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --shm-size 2g --net=host koutto/jok3r
注意:当然,您可以通过命令 sudo docker cp 从旧容器中检索本地数据库 local.db(包含已保存的任务、目标等)。
.. code-block:: console
python3 jok3r.py toolbox --show-all
.. code-block:: console
python3 jok3r.py toolbox --install-all --auto
.. code-block:: console
python3 jok3r.py toolbox --update-all
.. code-block:: console
python3 jok3r.py toolbox --update-all --auto
.. code-block:: console
python3 jok3r.py info --services
.. code-block:: console
python3 jok3r.py info --checks <service>
.. code-block:: console
python3 jok3r.py info --attack-profiles <service>
.. code-block:: console
python3 jok3r.py info --products
在本地数据库中创建新任务:
.. code-block:: console
python3 jok3r.py db
jok3rdb[default]> mission -a mayhem
[+] 任务 "mayhem" 已成功添加
[*] 当前选中任务为 mayhem
jok3rdb[mayhem]>
单个目标:
.. code-block:: console
python3 jok3r.py attack -t https://www.example.com/ --add2db mayhem
.. code-block:: console
python3 jok3r.py attack -t 192.168.1.42:1433 -s mssql --add2db mayhem --fast
.. code-block:: console
python3 jok3r.py attack -t 192.168.1.142:21 -s ftp --cat-only recon,vulnscan --add2db mayhem
多个目标:
.. code-block:: console
python3 jok3r.py attack -m mayhem --profile red-team --fast
.. code-block:: console
python3 jok3r.py attack -m mayhem --fast
.. code-block:: console
python3 jok3r.py attack -m mayhem -f "port=21,2121;service=ftp" --fast
.. code-block:: console
python3 jok3r.py attack -m mayhem -f "port=2121;service=ftp" -f "ip=192.168.1.42;service=http"
.. code-block:: console
python3 jok3r.py db
jok3rdb[default]> mission mayhem
[*] 当前选中任务为 mayhem
.. code-block:: console
jok3rdb[mayhem]> nmap results.xml
.. code-block:: console
jok3rdb[mayhem]> shodan ip
.. code-block:: console
jok3rdb[mayhem]> services
jok3rdb[mayhem]> hosts
jok3rdb[mayhem]> products
jok3rdb[mayhem]> creds
.. code-block:: console
jok3rdb[mayhem]> results --search '<search_string>'
.. code-block:: console
jok3rdb[mayhem]> vulns
.. code-block:: console
jok3rdb[mayhem]> report
假设您开始一个渗透测试,包含若干服务器。以下是使用JoK3r的典型示例:
对范围内的服务器运行Nmap扫描。
在本地数据库中创建一个新任务(例如"mayhem"):
.. code-block:: console
python3 jok3r.py db
jok3rdb[default]> mission -a mayhem
[+] 任务 "mayhem" 已成功添加
[*] 当前选中任务为 mayhem
jok3rdb[mayhem]>
3. 将Nmap扫描结果导入数据库:
.. code-block:: console