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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
openapi_security_scanner — OpenAPIベースのAPI向け自動認可セキュリティスキャナ。差分的応答分析により、複数の認証情報セットでGETエンドポイントをテストし、権限昇格や壊れたアクセス制御のバグを検出します。 | Kitploit
ツール/GitHubGitHub/ngalongc/openapi_security_scanner
脆弱性スキャナーAPIセキュリティテストウェブセキュリティペネトレーションテスト
GitHubngalongc/openapi_security_scanner

openapi_security_scanner

OpenAPIベースのAPI向け自動認可セキュリティスキャナ。差分的応答分析により、複数の認証情報セットでGETエンドポイントをテストし、権限昇格や壊れたアクセス制御のバグを検出します。

リポジトリを見る
173375年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

OpenAPI Security Scanner

プロジェクトについて

現代のWebアプリケーションにおける認可のセキュリティ問題は、セキュリティスキャナーでは容易に検出できません。例として Shopify、LINE、NordVPN があります。 その理由の一つは、セキュリティスキャナーが主にSQLi、XSS、RCEを探すのに対し、認可のセキュリティバグを探していないこと、そしてスキャナーは通常、Webアプリケーションがどのように動作すべきかという知識を持っていないことです。そのため、現在の認可バグの大部分は主に手動で発見されています。 OpenAPI Security Scannerは、自動化と手動レビューの両方で認可のセキュリティ問題を発見するために作成されました。これは外部のユニットテストツールのように動作し、すべてが期待通りに動作していることを確認します。

使用技術

  • Schemathesis

はじめに

このvideoを見ながら進めるか、読み進めてください。

このプロジェクトをForkまたはクローンし、以下の手順に従って開始してください。

このスキャナーを使用するワークフローは次のようになります。

  • 対象APIのOpenAPI yamlファイルを準備する
  • APIテストに使用する対象エンドポイントと変数を定義する
  • APIテストを実行する際にさまざまなエッジケースをカバーできるよう、複数のユーザーからの複数の認証情報セットを生成する
  • 設定後、ランナーを起動し、スキャン結果はアーティファクトで確認できます
  • ランナーを定期的に実行するようにスケジュールし、スキャン結果に変更があった場合に通知を受け取る方法をカスタマイズする

利点

開発者にとって、このツールを使用することで、APIが内部的にも外部的にも期待通りに動作するという追加の確証が得られます。また、パイプライン https://docs.gitlab.com/ee/ci/triggers/ をトリガーすることで、コードデプロイのたびにスキャナーを起動できます。

バグバウンティハンターにとって、このツールを使用することで、対象のAPIを常に把握しておくことができます。なぜなら、特定のエンドポイントが以前は脆弱でなかったとしても、様々な理由で将来脆弱になる可能性があることを誰もが知っているからです。そのため、バグハンティングの手動部分をこのツールで自動化する方が簡単です。

使用前の注意

対象APIをスキャンする許可があることを確認してください。

前提条件

WebアプリケーションのOpenAPI yamlファイルが必要です。それをリポジトリ内の api.yaml の内容と置き換えてください。

使用方法

api.yaml の内容を対象のOpenAPI yamlファイルに置き換え、GitLabプロジェクトの Settings -> CI/CD -> Variables を展開し、以下の形式で変数を入力します。

OPENAPI_CREDS

ここで提供された認証情報は、Authorization: Bearer ヘッダー形式でAPI呼び出しに渡されます。少なくとも2つの異なる権限を持つユーザーアカウントのアクセストークンを準備することを推奨します。また、ユーザーアカウントごとに複数のアクセストークンを作成し、異なるスコープのアクセストークンに対する正しい動作をテストすることもできます。

root@kitploit:~
{
   "<user_a>":[
      {
         "scope":"<scope>",
         "access_token":"<value>",
         "name":"<name_of_access_token>"
      },
      {
         "scope":"<scope>",
         "access_token":"<value>",
         "name":"<name_of_access_token>"
      }
   ],
   "<user_b>":[
      {
         "scope":"<scope>",
         "access_token":"<value>",
         "name":"<name_of_access_token>"
      }
   ]
}

OPENAPI_ENDPOINTS

ここで提供するエンドポイントは GET ベースのAPI呼び出しである必要があります。JSONボディにクエリを含めることもできます。以下の例では、エンドポイントは /org/{orgs}/repos で、クエリは type=all です。エンドポイント /repos/{owner}/{repo} にはクエリはありません。

root@kitploit:~
{
   "/orgs/{org}/repos":{
      "type":"all"
   },
   "/repos/{owner}/{repo}":{
      
   }
}

OPENAPI_PATHS

パス変数はここで提供できます。スキャナーはパス変数の値からすべての組み合わせを生成します。

root@kitploit:~
{
   "org":[
      "test-org"
   ],
   "owner":[
      "ngalongc",
      "reconless"
   ],
   "repo":[
      "public-repo",
      "private-repo"
   ]
}

この場合、以下の組み合わせのAPI呼び出しが生成され、それらはすべて OPENAPI_CREDS で提供された異なる認証情報セットによって呼び出されます。

root@kitploit:~
/orgs/test-org/repos?type=all
/repos/ngalongc/public-repo
/repos/ngalongc/private-repo
/repos/reconless/public-repo
/repos/reconless/private-repo

PRIVATE_TOKEN

https://gitlab.com/-/profile/personal_access_tokens にアクセスし、api アクセストークンを作成し、ここで値を置き換えてください。このGitLabアクセストークンは、GitLabランナーからスキャン結果をダウンロードするために使用されます。

root@kitploit:~
<YOU_GITLAB_API_ACCESS_TOKEN>

OPENAPI_BASE_URL

これはAPIサーバーのベースURLの値です。

root@kitploit:~
https://example.com/api/v3

デモ: GitHub APIでの簡単な権限テストの実行

APIの変更が検出されたときのSlack通知のスクリーンショット

アーティファクトのスキャン結果のスクリーンショット

サンプルレポート: https://ngalog-gitlab.gitlab.io/-/openapi_security_scanner/-/jobs/966841401/artifacts/sample.html

制限事項

  • GET ベースのエンドポイントのみテスト可能
  • /users/{user_id}/activities のような一部のAPIエンドポイントでは、呼び出されるたびに応答が異なるため、この種のAPIの変更を検出することは意味がありません

コントリビューション

コントリビューションは、オープンソースコミュニティを学び、刺激を受け、創造する素晴らしい場所にしています。皆様のコントリビューションを心から感謝します。

  1. プロジェクトをFork
  2. 機能ブランチを作成 (git checkout -b feature/AmazingFeature)
  3. 変更をコミット (git commit -m 'Add some AmazingFeature')
  4. ブランチにプッシュ (git push origin feature/AmazingFeature)
  5. マージリクエストを開く

ライセンス

MITライセンスの下で配布されています。詳細は LICENSE を参照してください。

連絡先

Ron Chan - @ngalongc

プロジェクトリンク: https://gitlab.com/ngalog-gitlab/openapi_security_scanner

ツールをダウンロード