
まず初めに docker run --rm -p 8000:80 siwecos/infoleak-scanner を実行します。
ブラウザを開き、スキャナーを使用します: http://localhost/?url=<URL>
php5、curl、およびWebサーバーを入手します:
sudo apt-get install apache2 php5 php5-curl
アプリケーションをWebサーバーにコピーします:
cp -R . /var/www/html/
検出されたCMSのプラグインを検索します。最大のリスト(wordpress)には980種類の異なるプラグインが含まれています。
脆弱で最も使用されているJavaScriptライブラリを検索します。
メールアドレスを検索します。スパムやソーシャルエンジニアリング攻撃に有用です。
電話番号を検索します。ソーシャルエンジニアリング攻撃や詐欺に有用です。
| 検出結果 | スコア (0-100) |
|---------------------+---------------|
| CMS_ONLY | 100 |
| CMS_VERSION | 96 |
| CMS_VERSION_VULN | 以下参照 |
| PLUGIN_ONLY | 99 |
| PLUGIN_VERSION | 96 |
| PLUGIN_VERSION_VULN | 以下参照 |
| JS_LIB_ONLY | 99 |
| JS_LIB_VERSION | 96 |
| JS_LIB_VULN_VERSION | 以下参照 |
| EMAIL_FOUND | 96 |
| NUMBER_FOUND | 98 |
次のような検出があった場合:
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
全体のスコアは20に上限が設定され、追加の脆弱性が見つかるごとに全体のスコアが10ずつ減少します。つまり、CMS_VERSION_VULN、PLUGIN_VERSION_VULN、JS_LIB_VULN_VERSIONのすべてが返された場合、全体のスコアは0になります。
また、WordPressウェブサイト上でのjQuery v1.12.4の検出は、通常の脆弱なライブラリとは異なる評価になります。この検出はスコア90になりますが、プレースホルダーは脆弱なライブラリであるため、依然としてJS_LIB_VULN_VERSIONのままです。
POSTおよびGETリクエストでスキャナーを実行できます。
POSTリクエストでスキャナーを実行する場合は、パラメータをJSONエンコード形式で送信する必要があります:
{
"url": "string",
"dangerLevel": 0,
"callbackurls": [
"string"
],
"userAgent": "string"
}
url はスキャンするURLを指定します。
dangerLevel は使用されないため、0に設定してください。
callbackurls はURLの配列です。これらのURLにスキャン結果が送信されます(POSTで送信)。
userAgent はスキャン時に送信する独自のユーザーエージェントを指定します。
GETリクエストでのスキャナー実行はより簡単です。指定されたURLでアプリケーションを実行するだけです:
http://localhost/?url=<URL>
すべてのスキャンで検出なし:
{
"name": "InfoLeak-Scanner",
"version": "1.0.0",
"hasError": false,
"errorMessage": null,
"score": 100,
"tests": [
{
"name": "CMS",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "info",
"testDetails": null
},
{
"name": "CMS_PLUGINS",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "warning",
"testDetails": null
},
{
"name": "JS_LIB",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "warning",
"testDetails": null
},
{
"name": "EMAIL_ADDRESS",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "info",
"testDetails": null
},
{
"name": "PHONE_NUMBER",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "info",
"testDetails": null
}
]
}
すべてのスキャンで少なくとも1つの検出あり:
{
"name": "InfoLeak-Scanner",
"version": "1.0.0",
"hasError": false,
"errorMessage": null,
"score": 20,
"tests": [
{
"name": "CMS",
"hasError": false,
"errorMessage": null,
"score": 96,
"scoreType": "info",
"testDetails": [
{
"placeholder": "CMS_VERSION",
"values": {
"cms": "wordpress",
"version": "4.9.6",
"node": "meta",
"node_content": "WordPress 4.9.6"
}
}
]
},
{
"name": "CMS_PLUGINS",
"hasError": false,
"errorMessage": null,
"score": 99,
"scoreType": "warning",
"testDetails": [
{
"placeholder": "PLUGIN_ONLY",
"values": {
"plugin": "contact-form-7",
"node": "href",
"node_content": "https://[...]/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.0.2"
}
}
]
},
{
"name": "JS_LIB",
"hasError": false,
"errorMessage": null,
"score": 0,
"scoreType": "warning",
"testDetails": [
{
"placeholder": "JS_LIB_VULN_VERSION",
"values": {
"js_lib_name": "jquery",
"js_lib_version": "1.12.4",
"node": "src",
"node_content": "https://[...]/wp-includes/js/jquery/jquery.js?ver=1.12.4"
}
}
]
},
{
"name": "EMAIL_ADDRESS",
"hasError": false,
"errorMessage": null,
"score": 96,
"scoreType": "info",
"testDetails": [
{
"placeholder": "EMAIL_FOUND",
"values": {
"email_adress": [
[
"[email protected]"
]
]
}
}
]
},
{
"name": "PHONE_NUMBER",
"hasError": false,
"errorMessage": null,
"score": 98,
"scoreType": "info",
"testDetails": [
{
"placeholder": "NUMBER_FOUND",
"values": {
"number": [
"1234-12 11 22-3",
"123-11 22 333-4"
]
}
}
]
}
]
}
特に以下の環境でテストされています:
Mozilla Firefox 45.7.0
PHP 5.6.30-0+deb8u1 (cli) (built: Feb 8 2017 08:50:21)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Server version: Apache/2.4.10 (Debian)
Server built: Feb 24 2017 18:40:28
Server's Module Magic Number: 20120211:37
Server loaded: APR 1.5.1, APR-UTIL 1.5.4
Compiled using: APR 1.5.1, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
| プレースホルダー | メッセージ |
|---|
| SCAN CMS | |
| CMS_ONLY | 使用されているコンテンツ管理システム {cms} が検出されました。 |
| CMS_VERSION | 使用されているコンテンツ管理システム {cms} とそのバージョン {version} が検出されました。 |
| CMS_VERSION_VULN | 脆弱なコンテンツ管理システム {cms} のバージョン {version} が検出されました。 |
| SCAN PLUGIN | |
| PLUGIN_ONLY | CMSプラグイン {plugin} がDOMノード {node} のノードコンテンツ {node_content} から検出されました。 |
| PLUGIN_VERSION | CMSプラグイン {plugin} とそのバージョン {plugin_version} がDOMノード {node} のノードコンテンツ {node_content} から検出されました。 |
| PLUGIN_VERSION_VULN | 脆弱なCMSプラグイン {plugin} とそのバージョン {plugin_version} がDOMノード {node} のノードコンテンツ {node_content} から検出されました。 |
| SCAN JS | |
| JS_LIB_ONLY | 使用されているJavaScriptライブラリ {js_lib_name} がDOMノード {node} のノードコンテンツ {node_content} から検出されました。 |
| JS_LIB_VERSION | 使用されているJavaScriptライブラリ {js_lib_name} とそのバージョン {js_lib_version} がDOMノード {node} のノードコンテンツ {node_content} から検出されました。 |
| JS_LIB_VULN_VERSION | 脆弱なJavaScriptライブラリ {js_lib_name} とそのバージョン {js_lib_version} がDOMノード {node} のノードコンテンツ {node_content} から検出されました。 |
| SCAN EMAIL | |
| EMAIL_FOUND | メールアドレス {email_address} が見つかりました。 |
| SCAN PHONE | |
| NUMBER_FOUND | 電話番号 {number} が見つかりました。 |
| エラー | |
| NO_SOURCE_CODE | 指定されたURLにソースコードがありません。 |
| INVALID_URL | 指定されたURLは有効なURLではありません。 |
| INFOLEAK_LOCALHOST_SCAN_NOT_ALLOWED | localhostのスキャンは許可されていません。 |
| NO_RESPONSE | 指定されたURLに到達できません。 |
| INFOLEAK_PORT_DISALLOWED | 指定されたURLに許可されていないポートが含まれています。 |
| INFOLEAK_DONT_LEAK_USER_CREDS | 指定されたURLにユーザー認証情報が含まれています。 |
| INFOLEAK_JSON_DECODE_ERROR | 指定されたPOSTリクエストをデコードできませんでした。 |
| INFOLEAK_REDIRECT_ERROR | URLが許可されていないリダイレクトを行っています。 |
| UNSUPPORTED_PROTOCOL | ウェブサイトがサポートされていないプロトコルを使用しています。 |
| FAILED_INIT | スキャナーが接続の初期化に失敗しました。 |
| URL_MALFORMAT | URLの形式が正しくありません。 |
| COULDNT_RESOLVE_HOST | 指定されたリモートホストを解決できませんでした。 |
| COULDNT_CONNECT | ホストまたはプロキシへの接続に失敗しました。 |
| REMOTE_ACCESS_DENIED | URLで指定されたリソースへのアクセスが拒否されました。 |
| HTTP2_ERROR | HTTP2フレーミングレイヤーで問題が検出されました。 |
| TOO_MANY_REDIRECTS | リダイレクトが多すぎます。 |
| SEND_ERROR | ネットワークデータの送信に失敗しました。 |
| RECV_ERROR | ネットワークデータの受信に失敗しました。 |
| BAD_CONTENT_ENCODING | 認識できない転送エンコーディングです。 |
| SSL_ENGINE_INITFAILED | SSLエンジンの初期化に失敗しました。 |
| TIMEOUT | 指定されたタイムアウト期間が条件に従って到達されました。 |
| CONV_FAILED | 文字変換に失敗しました。 |
| REMOTE_FILE_NOT_FOUND | URLで参照されているリソースは存在しません。 |
| HTTP2_STREAM | HTTP/2フレーミングレイヤーでストリームエラーが発生しました。 |