Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
corsair_scan — 自動化されたCORS設定ミススキャナーで、WebアプリケーションとAPI全体でOriginヘッダーインジェクション、ワイルドカードリフレクション、資格情報漏洩をテストします。 | Kitploit
ツール/GitHubGitHub/santandersecurityresearch/corsair_scan
脆弱性スキャナーAPIセキュリティテストウェブセキュリティ設定ミス
GitHubsantandersecurityresearch/corsair_scan

corsair_scan

自動化されたCORS設定ミススキャナーで、WebアプリケーションとAPI全体でOriginヘッダーインジェクション、ワイルドカードリフレクション、資格情報漏洩をテストします。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
122155年前Kitploit レビュー済み

GitHub release Github all releases HitCount Total alerts Language grade: Python MIT license

corsair_scan

Corsair_scan へようこそ

Corsair_scan は、Cross-Origin Resource Sharing (CORS) の設定ミスをテストするセキュリティツールです。CORS は、Web ページ上の制限されたリソースを、最初のリソースが提供されたドメインとは異なるドメインから要求できるようにするメカニズムです。これが適切に設定されていない場合、無許可のドメインがそれらのリソースにアクセスできるようになります。

CORS とは?

CORS は HTTP ヘッダーベースのメカニズムで、サーバーがブラウザにリソースの読み込みを許可する自身以外のオリジン(ドメイン、スキーム、ポート)を指定できるようにします。これは、サーバーが Web ブラウザからその情報を読み取ることを許可するオリジンを記述する新しい HTTP ヘッダーを追加することで動作します。

CORS はまた、ブラウザがクロスオリジンリソースをホストするサーバーに「プリフライト」リクエストを送信し、サーバーが実際のリクエストを許可するかどうかを確認するメカニズムにも依存しています。そのプリフライトで、ブラウザは実際のリクエストで使用される HTTP メソッドとヘッダーを示すヘッダーを送信します。

CORS を実装する際の最も一般的かつ問題となるセキュリティ上の問題は、リクエスト元の検証/ホワイトリスト化の失敗です。Access-Control-Allow-Origin の値が '*' に設定されているのをよく見かけます。

残念ながら、これはデフォルトであり、そのため Web 上の任意のドメインがそのサイトのリソースにアクセスできるようになります。

OWASP アプリケーションセキュリティ検証標準 (ASVS) の要件 14.5.3 には次のように記載されています。

Cross-Origin Resource Sharing (CORS) の Access-Control-Allow-Origin ヘッダーが信頼できるドメインとサブドメインの厳格な許可リストを使用して照合し、"null" オリジンをサポートしていないことを確認する。

corsair_scan の動作方法

Corsair_scan は、パラメータとして受け取ったリクエスト(またはリクエストのリスト)を再送信し、Origin ヘッダーに値を注入することで動作します。このリクエストに対するレスポンスの Access-Control-Allow-Origin ヘッダーの内容に応じて、CORS 設定が正しいかどうかを判断できます。CORS が誤って設定されていることを示すシナリオは3つあります。

  • 送信された偽のオリジンが Access-Control-Allow-Origin に反映されている
  • Access-Control-Allow-Origin の値が * である
  • Access-Control-Allow-Origin の値が null である

CORS が誤って設定されていることが判明した場合、レスポンスに Access-Control-Allow-Credentials ヘッダーが含まれているかどうかを確認します。これは、サーバーがクロスオリジンリクエストに資格情報を含めることを許可していることを意味します。

多くの場合、CORS 設定ではワイルドカードが使用されます。たとえば、* example.com * の下にあるすべてを受け入れるなどです。これは、与えられた正規表現に一致するため、オリジン domain.com.evil.com が受け入れられることを意味します。これに対抗するために、corsair_scan は4つのシナリオをテストします。

  • 偽のドメイン注入: 元のリクエストにオリジンヘッダーがない場合でも、Origin ヘッダーを https://scarymonster.com に設定します
  • 元のリクエストにオリジンヘッダーがある場合(明確にするために、https://example.com と仮定します):
    • ドメイン前置注入: 元のドメインの左側に偽のドメインを連結します。この例では、Origin は https://scarymonsterexample.com に設定されます
    • ドメイン後置注入: 前置の逆で、右側に連結します。Origin は https://example.com.scarymonster.com になります
    • サブドメイン注入: CORS 設定が特定のドメインのすべてのサブドメインをホワイトリストに登録する場合があります。それ自体は問題ではありませんが、ドメインの1つが XSS に対して脆弱である場合、深刻な問題になる可能性があります。このシナリオでは、Origin は https://scarymonster.example.com になります

インストール方法

このプロジェクトは Python 3.9 で開発されましたが、Python 3.x のすべてのバージョンで動作するはずです。インストールする最良の方法は pip を使用することです。

pip3 install corsair_scan --user

使用方法

Corsair は Python モジュールとしても CLI としても使用できます。

Python モジュール

CORS スキャンを実行するメソッドは corsair_scan です。以下にその定義を示します。

corsair_scan

リクエストのリストと、リクエスト内の証明書チェックを有効/無効にするパラメータを受け取ります。

入力:

  • data [List]: リクエストのリスト。各リクエストは、そのリクエストに関連するデータを含む辞書です。

    • url_data [Dict]: リクエストに関連するすべてのデータを含む辞書です。
      • url [String]: リクエストが送信される URL
      • verb [String]: リクエストの動詞 (get, post, patch, delete, options など)
      • params [String]: リクエストで送信されるボディ(ある場合)
      • headers [Dict]: リクエストに含まれるすべてのヘッダーを含む辞書
  • verify [Boolean] [デフォルト: True] : 各リクエストに対して corsair_scan_single_url にこの値を送信します

出力:

  • final_report [List]: 実行されたテストの完全なレポートを含みます。filter が true に設定されている場合、レポートにテストのサマリーも追加されます。
    • report [List]: 実行されたテストの詳細な個別レポートのリスト
    • summary [Dict] : スキャンで検出された問題のサマリー

例

root@kitploit:~
import corsair_scan.corsair_scan as corsair
url_data = {}
data = []
verb =  'GET'
url = 'https://example.com/'
params = 'user=user1&password=1234'
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
           'Accept-Language': 'en-GB,en;q=0.5', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1',
           'Origin': 'https://example.com',
           'Host': 'example.com'}

url_data['verb'] = verb
url_data['url'] = url
url_data['params'] = params
url_data['headers'] = headers
data.append(url_data)

print (corsair.corsair_scan(data, verify=True))

レスポンス:

root@kitploit:~
{'report': [{'fake_origin': {'Access-Control-Allow-Origin': 'https://scarymonster.com',
                             'Origin': 'https://scarymonster.com',
                             'credentials': True,
                             'error': False,
                             'misconfigured': True,
                             'status_code': 200},
             'post-domain': {'Access-Control-Allow-Origin': 'https://example.com.scarymonster.com',
                             'Origin': 'https://example.com.scarymonster.com',
                             'credentials': True,
                             'error': False,
                             'misconfigured': True,
                             'status_code': 200},
             'pre-domain': {'Access-Control-Allow-Origin': 'https://scarymonsterexample.com',
                            'Origin': ' https://scarymonsterexample.com',
                            'credentials': True,
                            'error': False,
                            'misconfigured': True,
                            'status_code': 200},
             'sub-domain': {'Access-Control-Allow-Origin': 'https://scarymonster.example.com',
                            'Origin': 'https://scarymonster.example.com',
                            'credentials': True,
                            'error': False,
                            'misconfigured': True,
                            'status_code': 200},
             'url': 'https://example.com/',
             'verb': 'GET'}],
 'summary': {'error': [], 'misconfigured': [{'credentials': True,
                    'misconfigured_test': ['fake_origin',
                                           'sub-domain',
                                           'pre-domain',
                                           'post-domain'],
                    'status_code': 200,
                    'url': 'https://domain.com',
                    'verb': 'GET'}]}}

CLI

pip パッケージのインストールの一部として、CLI もインストールされます。実行する構文は次のとおりです。

corsair FILE [-nv/--noverify][-r/--report]

CLI はスキャンを実行するためにリクエストのリストを含む JSON ファイルを必要とします。サンプルファイルが テストの一部として 提供されています。

:

root@kitploit:~
[{
  "verb": "GET",
  "url": "https://example.com/",
  "params": "user=user1&password=1234",
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-GB,en;q=0.5",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",
    "Origin": "https://example.com",
    "Host": "example.com"
  }
}]

オプションのパラメータも2つあります。

  • -nv / --noverify: 自己署名証明書を使用しているサイトに対してテストする場合、証明書の検証をスキップします
  • -r / --report: レポートを JSON ファイルとして保存します

例

CLI report

ロードマップ

  • corsair_scan を CLI ツールとしてリリース ✅
  • テキストファイルから URL データを読み取る ✅
  • レポート形式の改善

開発者

Corsair_scan は Santander UK のセキュリティエンジニアリングチームによって開発されました。メンバーは以下のとおりです。

  • David Albone
  • Javier Domínguez Ruiz
  • Fernando Cabrerizo
  • Jonathan Strong
  • James Howieson
ツールをダウンロード