
既知のCVEに対応したPOC/EXPモードを備えたWeb脆弱性スキャナー兼エクスプロイトツール。Weblogic、Shiro、Struts2、TomcatなどのWebアプリケーションを対象とし、FOFA/Shodanによるバッチスキャンにも対応しています。
VulmapはWeb脆弱性スキャンおよび検証ツールであり、webappsの脆弱性スキャンとエクスプロイト機能を備えています。現在サポートしているwebappsは activemq, flink, shiro, solr, struts2, tomcat, unomi, drupal, elasticsearch, fastjson, jenkins, nexus, weblogic, jboss, spring, thinkphp です。
Vulmapは脆弱性スキャンと検証(エクスプロイト)を組み合わせており、テスト担当者が脆弱性を発見した後に迅速に次の操作を実行できるよう大幅に利便性を高めています。このツールは効率性と利便性を追求しています。
効率性:開発が進むにつれて、バッチスキャン、Fofa、Shodanによるバッチスキャンが徐々に導入され、マルチスレッド(デフォルトでコルーチン有効)をサポートし、大量のアセットを最速でスキャンします。
利便性:脆弱性を発見したらすぐにエクスプロイト可能で、大量のアセットスキャンの結果を複数の形式で出力できます。
Vulmap 0.8 バージョンから、dismap の認識結果ファイルに対して直接脆弱性スキャンを実行する
-f output.txtをサポートしています。
オペレーティングシステムには python3 が必要です。python3.8 以上を推奨します。
# git または release からソースコードを取得
git clone https://github.com/zhzyker/vulmap.git
# 必要な python 依存関係をインストール
pip3 install -r requirements.txt
# Linux & MacOS & Windows
python3 vulmap.py -u http://example.com
Fofa Api、Shodan Api、Ceye の設定
Fofa または Shodan を使用するには、vulmap.py の設定情報を変更する必要があります:
# xxxxxxxxxxをfofaのメールアドレスに置き換えてください
globals.set_value("fofa_email", "xxxxxxxxxx")
# xxxxxxxxxxをfofaのキーに置き換えてください
globals.set_value("fofa_key", "xxxxxxxxxx")
# xxxxxxxxxxを自分のshodanのキーに置き換えてください
globals.set_value("shodan_key", "xxxxxxxxxx")
# xxxxxxxxxxを自分のドメインに置き換えてください
globals.set_value("ceye_domain","xxxxxxxxxx")
# xxxxxxxxxxを自分のceyeのトークンに置き換えてください
globals.set_value("ceye_token", "xxxxxxxxxx")
既存のライセンスLICENSEに以下の免責事項を追加します。既存のライセンスと矛盾する場合は、この免責事項が優先されます。
本ツールの未許可の商業利用は禁止されており、二次開発後の未許可の商業利用も禁止されています。
本ツールは、合法的に認可された企業のセキュリティ構築活動のみを対象としています。本ツールを使用して検出を行う場合、その行為が現地の法律および規制に準拠し、かつ十分な許可を得ていることを確認する必要があります。
本ツールの使用中に何らかの違法行為があった場合、利用者はその結果について自ら責任を負うものとし、当方は一切の法的責任および関連責任を負いません。
本ツールを使用する前に、各条項の内容を注意深く読み、十分に理解してください。制限、免責条項、またはその他の重要な権益に関わる条項は、太字や下線などの形式で強調表示される場合があります。本契約のすべての条項を十分に読み、完全に理解し、同意した場合を除き、本ツールを使用しないでください。本ツールを使用した場合、または明示的もしくは黙示的に本契約を受け入れた場合、本契約を読み、その拘束に同意したものとみなされます。
YouTube: https://www.youtube.com/watch?v=g4czwS1Snc4
Bilibili: https://www.bilibili.com/video/BV1Fy4y1v7rd
Gif:
オプション引数:
-h, --help このヘルプメッセージを表示して終了
-u URL, --url URL ターゲットURL (例: -u "http://example.com")
-f FILE, --file FILE ターゲットリストファイルを選択、各URLは行で区切る必要があります (例: -f "/home/user/list.txt")
--fofa keyword fofa apiを使用したバッチスキャン (例: --fofa "app=Apache-Shiro")
--shodan keyword shodan apiを使用したバッチスキャン (例: --shodan "Shiro")
-m MODE, --mode MODE モードは"poc"と"exp"をサポート、省略可能、デフォルトは"poc"モード
-a APP [APP ...] webappsを指定 (例: "weblogic")、指定しない場合は自動フィンガープリント認識
-c CMD, --cmd CMD カスタムリモートコマンド実行のコマンド、デフォルトはechoランダムmd5
-v VULN, --vuln VULN 脆弱性を利用、脆弱性番号を指定する必要があります (例: -v "CVE-2019-2729")
-t NUM, --thread NUM スキャンスレッド数、デフォルト10スレッド
--dnslog server dnslogサーバー (hyuga,dnslog,ceye) デフォルトは自動ポーリング
--output-text file スキャン結果をtxtファイルに出力 (例: "result.txt")
--output-json file スキャン結果をjsonファイルに出力 (例: "result.json")
--proxy-socks SOCKS socksプロキシを使用 (例: --proxy-socks 127.0.0.1:1080)
--proxy-http HTTP httpプロキシを使用 (例: --proxy-http 127.0.0.1:8080)
--user-agent UA カスタムUser-Agentを許可
--fofa-size SIZE fofa apiの呼び出し資産数、デフォルト100、使用可能(1-10000)
--delay DELAY 遅延時間、送信間隔、デフォルト 0s
--timeout TIMEOUT タイムアウト時間、デフォルト 5s
--list サポートされている脆弱性リストを表示
--debug expモードはrequestとresponsesを表示、pocモードはスキャン中の脆弱性リストを表示
--check ターゲット生存確認 (on and off)、デフォルトはon
# すべての脆弱性POCをテスト、-a allを指定しない場合、デフォルトでフィンガープリント認識が有効になります
python3 vulmap.py -u http://example.com
# サイトにstruts2の脆弱性があるか確認
python3 vulmap.py -u http://example.com -a struts2
# http://example.com:7001 に対してWebLogicのCVE-2019-2729脆弱性を利用
python3 vulmap.py -u http://example.com:7001 -v CVE-2019-2729
python3 vulmap.py -u http://example.com:7001 -m exp -v CVE-2019-2729
# list.txt内のURLをバッチスキャン
python3 vulmap.py -f list.txt
# スキャン結果をresult.jsonにエクスポート
python3 vulmap.py -u http://example.com:7001 --output-json result.json
# fofa apiを呼び出してバッチスキャン
python3 vulmap.py --fofa app=Apache-Shiro