API ペンテストを成功させるための 5 つの簡単な質問

キーボードへの指、時間の凍結。 ラップトップの画面から反射する明るい空白のピクセルをじっと見つめて、何をしているのか疑問に思います。 会社の API を攻撃するように依頼されましたが、どこから始めればよいかわかりません。

あなたは本を読みました。 ビデオを見ました。 オンライン サイバー レンジで意図的に脆弱なアプリケーションをハッキングし、クールなバッジを 1 つまたは 2 つ獲得しました。 しかし、実際のエンゲージメントで最初に何をすべきかはどこにも教えてくれませんでした.

「偵察をしろ」と彼らは言った。 とにかくそれはどういう意味ですか?

共感できますか?

心配しないでください。 それはかなり一般的です。 Appsec ペンテスターの方法論は、従来のネットワーク ペンテストとはかなり異なる場合があります。 他の人はさまざまな意見を持っているかもしれませんが、それが共有されることはめったにありません。

とにかく、少なくとも公にではありません。

それでは、それを修正しましょう。

この記事では、API ペンテスト エンゲージメント中に目標に近づき、より成功するために役立つ、自分自身 (および場合によっては利害関係者) に尋ねるべき 5 つの簡単な質問について説明したいと思います。

#1 – エンゲージメントの目標は何ですか?

API への攻撃について考える前に、自問してください。 動機は何ですか. あなたの動機ではありません…しかし、ペンテストの実行を求める人々の動機です。

なぜ今なのか? 何の目的で? 彼らは何のために解決していますか?

コンプライアンス上の理由ですか? リスク削減? 過去の違反? リストは延々と続く可能性があります。 聞かなければわからないでしょう。

この要求を引き起こした重要なイベントを理解することは、何が起こる必要があるか、最終的な成果物がどうなるかを理解するために、関与の一部であるすべての人をレベル設定するのに役立ちます.

これは難しい場合があります。 交戦規則 (RoE) を机の上に落として、裏話なしで町に行くように頼んだかもしれません。 うまくいけば、これは作業明細書で定義されるかもしれません。 ただし、通常はそうではありません。

したがって、必要に応じて押し戻してください。 関係者がエンゲージメントに何を期待しているかをチームに尋ねます。 そこには 動機であり、これを知ることは大きな助けになります。

スコーピング ここでは RoE が大きな助けになります。 私はそれについて前に話しました。 利害関係者が何をテストしたいかを知ることで、適切なタイミングで適切な場所に焦点を当てることができます。 新しい機能をテストしていますか? 以前の技術的負債に対する改善を模索していますか? 本番または本番前のターゲットに対して?

エンゲージメントの背後にある動機と、利害関係者が最終的な成果物から何を得たいかを理解すると、これらすべての質問 (および他の多くの質問) に焦点が当てられます。

#2 – この API にはどのようなテクノロジが使用されていますか?

私たちの業界には十分なパターンとアンチパターンがあり、API の構築に使用されているテクノロジーを理解することで、ターゲットにアプローチする方法を理解できるようになりました。

以前、API のプログラミング言語を検出する方法について書きましたが、それだけではありません。

使用されているプログラミング言語だけではありません。 これには、使用されているフレームワークが含まれます。 使用されているアーキテクチャ。 エンドポイントがどのように構築され、パッケージ化され、DevOps パイプラインにデプロイされるかを含めることもできます。

例を挙げましょう。 API エンドポイントのスキャフォールディングに使用されるフレームワークを特定できれば、悪意のあるテイント インジェクション テストを行う際に作成するペイロードについて、より多くの情報に基づいた決定を下すことができます。

また、悪用される可能性が低いことがわかっている場合は、テスト プロセス全体にかかる労力を削減できることも意味します。 頭に浮かぶ例は、オブジェクト リレーショナル マッピング (ORM) クライアントを利用するフレームワークでの従来の SQL インジェクションです。

SQLi を探して入力検証テストを行うなと言っているのですか? 絶対違う。 ただし、直接 SQL インジェクション攻撃が見つかる可能性は低いです。 ただし、ORM クライアント自体が脆弱になる可能性があります。 したがって、これを理解することは重要です。 Snyk には、私の言いたいことを理解するために読むべき素晴らしい記事があります。

特定の種類のテストをいつ、どのように実施するかの優先順位を変更することは、使用されているテクノロジーについて学べば学ぶほど容易になります。 特定のパターンを探すように単語リストを調整できれば、Feroxbuster や Kiterunner を使用してエンドポイントの発見がどれほど改善されるか想像してみてください。 多分それはファイル拡張子によるものです。 またはルートプレフィックス。 または有名なルート。

孫子はかつて「敵を知れ」と言いました。 良いアドバイスのように聞こえます。

チップ: Web アプリや API のペンテストに関して、テクノロジーを方法論にマッピングするための優れたリソースが必要な場合は、HackTricks をチェックしてください。

#3 – API ドキュメントにアクセスするにはどうすればよいですか?

API ドキュメントにアクセスすることが重要です。 これは、エンゲージメントの最初のステップの 1 つです。 結局、理解していないものをテストすることはできません。

API の構造を理解することは、可能な限り多くの API を確実にテストするために最も重要です。 ペイロードを適切に作成し、戻り値を調べるには、リクエストとレスポンスがどのようなものかを知る必要があります。 この理解がないと、正しく行わないとテストの一部が無意味になります。

通常、API ドキュメントへのアクセスは問題になりません。 それでも、それらを見つけるのが難しい場合や、コンテンツにアクセスする前にいくつかの認証手順が必要な場合があります.

API ドキュメントに直接アクセスできない場合は、独自の不正な API ドキュメントを作成することをお勧めします。 その方法を詳しく書いています。 独自の OpenAPI ドキュメントを構築することで、Postman を使用して独自の API クライアントをまとめ、エンゲージメントの攻撃段階でそれを活用できます。

副次的なメリットもあります。ペイロード インジェクションに Postman コレクションを使用してテストを自動化できるなどです。

しかし、すべては明確でクリーンで完全な API ドキュメントから始まります。

#4 – API のソース コードにアクセスするにはどうすればよいですか?

API のソース コードにアクセスするのは難しい場合があります。 エンゲージメントや契約の種類によっては、これが不可能な場合もあります。

少なくとも… 直接ではありません。

しかし、それにアクセスでき、テスト要件に静的分析コンポーネントが含まれている場合、このプロセスは非常に貴重です。 エンドポイントがどこでどのように処理されているかを知ることは、エンドポイントに対して動的テストを実行するときに、より優れたペイロードを作成するのに役立ちます。

ほとんどの API では、スタック全体で複数のプログラミング言語またはフレームワークが使用されていることを考慮することも重要です。 公開する必要がある機能に応じて、さまざまな言語/フレームワークを併用できます。

特定の言語で書かれている領域を知ることは、特定の種類の脆弱性がどこで見つかる可能性があるかを知ることを意味します。

たとえば、API の一部が Java で記述されている場合、逆シリアル化の問題をテストする際に特別な注意を払う必要がある場合があります。 一部が NodeJS で記述されている場合は、Broken Object Level Authorization (BOLA) などのビジネス ロジックの欠陥にもっと集中する必要があるかもしれません。

最終的には、API のテストに深く入り込む前に、API のアーキテクチャと実装の両方の詳細を理解することが重要です。 ソース コードにアクセスできると、この作業が容易になります。

コード レビューと汚染分析を使用して API の悪用可能性をトレースする際に、これが重要である理由について説明しました。

また、逆コンパイルを利用して、コンテナー化された API を介してソース コードにアクセスする方法も示しました。 おっと、ちょっとした運とリバース エンジニアリングを駆使して、現実世界で .NET API をハッキングした方法を共有したことを忘れないでください。

要点は、API のソース コードの何らかの形式にアクセスすることで、これまで考えもしなかった悪用可能な脆弱性の世界にさらされる可能性があるということです。

#5 – API にはどのような外部依存関係がありますか?

依存関係はどこにでもあります。 API も例外ではありません。

ペンテスト中に理解を深めるための最も重要な詳細の 1 つは、API が持つ外部依存関係です。 相互作用するサードパーティのサービスはありますか? 他のデータベースや API を呼び出しますか? 別のサービスが認証を処理しているかどうか知っていますか? プロセス フローに関係するキューとメッセージ ブローカーはありますか?

これらはすべて、エンゲージメントの一環として回答する必要がある質問です。 すべてを確実にカバーすることは困難な場合がありますが、成功には不可欠です。

外部依存関係は、存在すら知らなかった攻撃経路を開く可能性があります。 これらの外部サービスを掘り下げると、脆弱な認証メカニズムや、アクセスを取得する方法を提供する壊れたアクセス制御ポリシーが見つかる場合があります。

鍵となるのは、API がやり取りする外部サービスを含め、API の攻撃面を理解することです。 これらのサービスを調査し、どのような種類の脆弱性にさらされる可能性があるかを判断するには、十分な時間をかけてください。 多くの場合、ペンテスターは目の前のコードだけに集中しますが、外部の依存関係を忘れると、深刻な問題を見逃す可能性があります。

場合によっては、アプリケーションで使用されるソフトウェア ライブラリの調査も必要になることがあります。 オープンソースか商用かにかかわらず、これらのコンポーネントが API とどのように相互作用するかを理解することは、ブレーク テストの成功に非常に役立ちます。

ソフトウェア部品表 (SBOM) を使用して API を攻撃する方法について説明したときに、そのことについて書きました。 ここでの利点は、サードパーティの依存関係の信頼の深さと、脆弱性が公開される典型的なウィンドウの問題を理解することです。 依存関係の信頼のカスケード効果により、API コードに影響を与える可能性のある信頼できるコンポーネントの悪用可能な脆弱性が修正されるまでに、数日、数週間、さらには数か月かかる場合があります。

これにより、API を攻撃する際に、これまでよりもはるかに深く API の脆弱性を検出し、侵入テストのエンゲージメント中にそれを悪用できるため、大きな利点が得られます。

API ペンテスト中に、考えられるすべての外部依存関係を確認することが重要です。 そうすることで、他の方法では無視されていた攻撃パスについての洞察を得ることができ、他の方法では見逃された可能性のある深刻な脆弱性を発見することにつながる可能性があります。

結論

それで、あなたはそれを持っています。 これらの 5 つの簡単な質問は、API ペンテストのエンゲージメントにとって非常に貴重です。 適切な質問をし、API のアーキテクチャを理解し、その外部依存関係を認識し、ソース コードを確認することはすべて、API ペンテストをより成功させるのに役立ちます。

テストを開始する前に時間をかけて適切に準備することは、何かを見逃さないようにするのに大いに役立ちます。 幸運を!

この記事は役に立ちましたか? 次に、API ハッキング リソースの究極のガイドに関する無料の電子ブックをチェックしてください。このガイドでは、このテーマに関する他の多くの有用なオンライン リソースを紹介しています。

API ペンテストをより成功させるための 5 つの簡単な質問の投稿は、最初に Dana Epp のブログに掲載されました。

*** これは、Dana Epp が執筆した Dana Epp のブログからの Security Bloggers Network シンジケート ブログです。 元の投稿を読む: https://danaepp.com/5-simple-questions-to-make-your-api-pentest-more-successful

Leave a Comment

Your email address will not be published. Required fields are marked *