
Packer Fuzzerツール(以下「本ツール」)が提供する検出機能の使用または流布により生じた直接的または間接的な結果および損失は、すべて使用者自身の責任であり、Packer Fuzzer開発チーム(以下「本チーム」)は一切の責任を負いません。
本ツールは、使用者の検出結果に基づいて自動的にスキャン結果レポートを生成します。このレポートの内容およびその他の派生内容は、本チームの立場や見解を代表するものではありません。
本ツールを使用する際は、使用者およびターゲットシステム所在国の関連法規を遵守してください。許可のないテストは一切許可されません。関連法令に違反した場合、当社はお客様の法的責任を追及する権利を留保し、関連機関の調査に全面的に協力します。
WEBフロントエンドバンドラーツールの普及に伴い、日常のペネトレーションテストやセキュリティサービスで、Webpackバンドラーに代表されるWebサイトに遭遇する機会が増えていませんか?このようなバンドラーは、サイト全体のAPIとAPIパラメータを一つにまとめてWebから集中呼び出しできるようにします。これにより、サイトの機能やAPI一覧を迅速に発見できるようになります。しかし、これらのバンドラーが生成するJSファイルの数は非常に多く、総JSコード量も膨大(数万行に及ぶことも)であり、手動でのテストは非常に困難です。そこで、Packer Fuzzerが登場しました。
本ツールは、ターゲットサイトのAPIおよびAPIに対応するパラメータを自動的にファジー抽出し、以下の7つの脆弱性(未認証アクセス、機密情報漏洩、CORS、SQLインジェクション、水平権限昇格、弱いパスワード、任意ファイルアップロード)をファジーかつ効率的に高速検出することをサポートします。スキャン終了後、本ツールは自動的にスキャンレポートを生成します。分析に便利なHTML版、よりフォーマルなdoc、pdf、txt版を選択できます。
国際化による言語の問題を心配する必要はありません。本ツールには5つの主要言語パック(レポートテンプレートを含む)が付属しています:簡体字中国語、フランス語、スペイン語、英語、日本語(翻訳精度順)。私たちの非常にプロフェッショナルでないチームが翻訳しました。
注:現時点では、初版ツールはWebpackバンドラーのルールに最適化されています。他のバンドラーのルールは今後のアップデートをお待ちください。
本ツールはPython3で開発されています。実行前にPython3.Xおよびpip3がインストールされていることを確認してください。環境が未インストールの場合は、以下のガイドに従ってインストールしてください:https://www.runoob.com/python3/python3-install.html
MacOSユーザーは以下のコマンドで簡単インストール:
brew install python3 #pip3も自動インストールされます
Ubuntuユーザーは以下のコマンドで簡単インストール:
sudo apt-get install -y python3 && sudo apt install -y python3-pip
CentOSユーザーは以下のコマンドで簡単インストール:
sudo yum -y install epel-release && sudo yum install python3 && yum install -y python3-setuptools && easy_install pip
本ツールはnode_vm2を使用してネイティブのNodeJSコードを実行します。そのため、NodeJS環境のインストールを推奨します(他のJS実行環境は推奨しません。解析に失敗する可能性があります)。環境が未インストールの場合は、以下のガイドに従ってインストールしてください:https://www.runoob.com/nodejs/nodejs-install-setup.html
MacOSユーザーは以下のコマンドで簡単インストール:
brew install node
Ubuntuユーザーは以下のコマンドで簡単インストール:
本ツールはpython3 PackerFuzzer.py [options]で実行します。optionsの内容は以下の通りです:
-h(--help)
ヘルプコマンド。追加パラメータ不要。本ツールがサポートするすべてのパラメータとその説明を表示します。
-u(--url)
スキャン対象のWebサイトURL。必須項目。例:-u https://demo.poc-sir.com。
-c(--cookie)
追加のCookie。省略可能。入力された場合はグローバルに適用されます。例:-c "POC=666;SIR=233"。
-d(--head)
追加のHTTPヘッダー。省略可能。入力された場合はグローバルに適用されます。デフォルトはCache-Control:no-cache。例:-d "Token:3VHJ32HF0"。
-l(--lang)
言語オプション。空の場合はシステム言語が自動選択され、対応する言語パックがない場合は英語UIに自動切り替え。利用可能な言語パック:簡体字中国語(zh)、フランス語(fr)、スペイン語(es)、英語(en)、日本語(ja)。例:-l zh。
-t(--type)
基本版とアドバンスト版から選択。空の場合は基本版が使用されます。アドバンスト版はすべてのAPIを再スキャンし、APIに対応するパラメータをファジー抽出し、SQLインジェクション、水平権限昇格、弱いパスワード、任意ファイルアップロードの脆弱性を検出します。advオプションでアドバンスト版を選択。例:-t adv。
-p(--proxy)
グローバルプロキシ。省略可能。入力された場合はグローバルにプロキシIPを使用。例:-p https://hack.cool:8080。
-j(--js)
追加のJSファイル。省略可能。本ツールにさらに分析させたいJSファイルがある場合に使用。例:-j https://demo.poc-sir.com/js/index.js,https://demo.poc-sir.com/js/vue.js。
.dbで終わるSqliteデータベースファイルを直接開くことができます。開くと、対応プロジェクトのすべてのリアルタイム結果がこのデータベースに保存されていることが確認できるので、キャッシュデータベースを直接分析して現在のスキャン結果を確認できます。baseurlをカスタマイズしてAPIの結合成功率を高め、パケット送信回数を減らすことを推奨します。baseurlを見つけるのは難しくありません。ターゲットサイトで任意のAPIをトリガーし、不足部分を観察するだけで素早く見つけられます。--ah(--apihost)コマンドを使用してAPIサーバーアドレスをカスタマイズできます。管理者として実行を選択してください。Linux/Macの場合は権限にも注意し、sudoコマンドの使用を推奨します。Githubリポジトリで直接ISSUEを提出できます:https://github.com/rtcatc/Packer-Fuzzer/issues
具体的なターゲットを公開するのが適切でない場合は、admin[at]hackinn.com までメールでご連絡ください。
提出の際は、判断の助けとなるよう、logsディレクトリ内の対応するログファイルを添付してください。ご協力ありがとうございます。
また、左下のグループチャットQRコードをスキャンして、WeChatディスカッショングループに参加することもできます(WeChatの制限により、この方法は一時的に利用できません)。または、右側の「天下大木头(KpLi0rn)」の個人QRコードをスキャンし、「Packer Fuzzer」とメモを添えて、彼にグループに招待してもらうこともできます:
Poc Sir
KpLi0rn
Liucy
RachesseHS
v1.0 2020/09/30
v1.1 2020/11/21
Windowsシステムの互換性問題を修正。
グローバル証明書チェック無視部分を改善。
スキャナに重大なエラーを引き起こす可能性のある複数のバグを修正。
v1.2 2021/01/21
フロントエンドバンドラー識別機能とアセットツリー表示機能を追加。
非同期抽出ルールを最適化し、2種類の新しいAPI認識ルールを追加。
レポートおよびデータベースが正しく生成されないバグを修正。
サイレントモードを追加。バッチテストやマルチプラットフォーム連携に便利。
任意コマンド実行につながる可能性のある脆弱性を緊急修正。
v1.3 2021/04/23
検出異常を引き起こす可能性のあるいくつかのバグを修正。
PyExecJSをより安全なnode_vm2に置き換え。
ターミナル表示画面を最適化し、新しいインタラクティブプロンプトを追加。
BaseDirの処理モードを最適化し、より使いやすく改善。
v1.4 2022/06/19
スキャナの異常実行を引き起こす可能性のあるいくつかのバグを修正。
廃止されたPython拡張コンテンツを削除。
HTMLレポートを最適化。API応答内容の長さを表示可能になり、ソートも可能。
POSTとGETリクエストの切り替えメカニズムを追加。
Content-Typeリクエストヘッダーのカスタマイズ機能を追加。
POSTリクエスト時のデータ内容のカスタマイズ機能を追加。
カスタムAPIサーバーアドレス機能を追加。
sudo apt-get install nodejs && sudo apt-get install npm
CentOSユーザーは以下のコマンドで簡単インストール:
sudo yum -y install nodejs
以下のコマンドで、本ツールに必要なPythonランタイムライブラリを一括インストールします:
pip3 install -r requirements.txt
-b(--base)
APIの中間部分を指定(例:APIがhttps://demo.poc-sir.com/v1_api/login の場合、basedirは v1_api)。省略可能。本ツールが自動抽出したbasedirが不正確な場合に使用。例:-b v1_api。
-r(--report)
生成するレポート形式を指定。空の場合はHTMLとDOC形式のレポートがデフォルト生成。利用可能な形式:html、doc、pdf、txt。例:-r html,pdf。
-e(--ext)
拡張プラグインオプションの有効/無効。本ツールはユーザーが自作プラグインを作成しextディレクトリに保存することをサポートします(作成方法はextディレクトリ内のdemo.pyを参照)。デフォルトは無効。ユーザーがonコマンドで有効にすると、本ツールは対応ディレクトリのプラグインを自動実行。例:-e on。
-f(--flag)
SSL接続セキュリティオプション。空の場合はデフォルトで無効。この状態では安全でない接続はすべてブロックされます。SSLセキュリティ状態を無視したい場合は、1コマンドで有効にすると、すべての証明書エラーを無視。例:-f 1。
-s(--silent)
サイレントモード。一度有効にすると、すべてのYES/NO質問が自動的にYESに設定され、パラメータ後の内容が今回のスキャンレポートの名称(カスタムレポート名)になります。無人運転、バッチ操作、プラグイン呼び出しなどのモードに使用可能。例:-s Scan_Task_777。
--st(--sendtype)
リクエストメソッドオプション。現在POSTとGETパラメータをサポート。有効にすると、対応するリクエストメソッドですべてのAPIをスキャン。無効の場合はHTTPステータスコードに基づいてスマートリクエスト。
--ct(--contenttype)
Content-Typeオプション。スキャン時のHTTPリクエストヘッダーのContent-Typeパラメータをカスタマイズ可能。無効の場合はHTTPステータスコードに基づいてスマートリクエスト。
--pd(--postdata)
POSTコンテンツオプション。スキャン時のPOSTリクエスト内容をカスタマイズ可能(すべてのスキャンでこの内容が使用され、POSTシナリオでのみ有効)。無効の場合はHTTPステータスコードに基づいてスマートリクエスト。
--ah(--apihost)
APIドメインオプション。スキャン時のすべてのAPIリクエストドメインをカスタマイズ可能。例えば、API部分(JSから抽出されたAPIパス)が/v1/infoで、スキャンURL(-u --urlで渡される、スキャンするWebページ)がhttp://exp.com/の場合、apihostパラメータにhttps://pocsir.com:777/を渡すと、APIはhttps://pocsir.com:777/v1/infoになり、http://exp.com/v1/infoではありません。APIとフロントエンドが異なるドメインやサーバーのシナリオに対応。
--fe(--fileext)
API拡張子オプション。すべてのAPIに特定の拡張子を追加。API抽出時に拡張子が欠落している場合に対応。例えば、抽出されたAPIがhttps://pocsir.com:777/v1/infoの場合、--fe .jsonを渡すと、ツールは自動的にAPIをhttps://pocsir.com:777/v1/info.jsonに変換してスキャン・検出。