Shikata Ga Nai

Private? There is no such things.

GraphQL exploitationを訳してみた

Hello there, ('ω')ノ

 

GraphQL の悪用を。

 

脆弱性:

 GraphQL

 

記事:

 https://0xparth.medium.com/graphql-exploitation-2ccce8cbea8

 

今回は、GraphQL インジェクションについて。

 

GraphQL は当初先進的であり、Facebook によって内部クエリ言語として

使用されていたため、GraphQL の機能は全体として内部領域と改善領域を中心に

展開されていて。

GraphQL は、記述されたデータで型システムを使用するクエリを実行し。

GraphQL の重要な、しかし忘れられがちな特性は、

イントロスペクション システムの助けを借りて、

サポートされているクエリに関する GraphQL スキーマを呼び出す可能性で。

 

GraphQLとは下記のとおりで。

1.GraphQL とはREST や SOAP などの API 標準の代替となり。

2.API用のクエリ言語でバックエンドからデータをやり取りしたり

 フェッチしたりするために使用され。

3.GraphQL も JSON 形式で記述されます。

4.Rest API とは異なり、GraphQL は 1 回のリクエストですべてのデータを取得し。

 

 

ターゲットが redacted.com であると考えて。

現在、GraphQL エンドポイントは多数あり。

したがって、これをファジングリストに追加することをお勧めし。

さらに、Burp Suiteは、GraphQL エンドポイントを支援し。

エンドポイントの一部は次のとおり。

 

    /graphql
    /graphiql
    /graphql.php or /graphql.php/debug=1
    /graphie/console/ → Online GQL IDE to interact with back-end

 

FFUF でファジングしているときに /graphql エンドポイントを見つけ。

そこで、サーバとの直接対話のためにGraphQL のオンラインIDEが有効に

なっているかどうかを試してみて。

しかし、ラボにいない限りオンライン IDE を直接期待していないので、

モチベーションが下がることはなく。

 

操作されたリクエストをサーバに送信したい場合は、Burp Suite が常に役に立ち。

そこで、さらなる悪用を求めてリピータにリクエストを送信して。

それで、これまでに次の点を見つけました。

 

    GraphQL is enabled
    IDE is not enabled.

 

イントロスペクションクエリ

さて、イントロスペクション クエリは実際には何をするのか。

イントロスペクション システムは、引数、フィールド、型、説明、型の

非推奨ステータスなどを含む、開発者によって定義された

バックエンド システムを完全に明らかにでき。

これにより、バックエンド システムの完全なマップとスキーマ

およびディレクティブを簡単に提供でき。

したがって、イントロスペクション クエリの出力の取得には依然として

脆弱性があり。

 

したがって、イントロスペクション クエリを実行すると、

フィールド、型などの間の関係を定義する出力が得られましたが、

前に書いたように、GraphQL は JSON で動作し。

そのため、JSON 内の関係を理解するには非常に時間がかかり。

それにもかかわらず、apis-guru が助けてくれて。

 

https://apis.guru/

 

イントロスペクションの出力を貼り付けると、すべてのフィールドと

列のすべての関係が得られて。

関係があれば、サーバに対して DOS 攻撃を行うこともでき。

それで、これまでに次の点を見つけて。

 

    GraphQL is enabled
    IDE is not enabled
    Back-end system relations with the help of introspection

 

GraphQL ミューテーション クエリ

GraphQL ミューテーション クエリは何に使用されるか。

したがって、答えは、ミューテーション クエリは、バックエンド システムから

データを作成、編集、削除するために使用されるということで。

イントロスペクション クエリの関係を確認した後、さまざまな方法、

何を編集できるのか、何が redacted.com に実害を与える可能性があるのかを

理解することができ。

これで、以下のクエリでさまざまなメソッドを呼び出すことができて。

 

    {
    __schema{
    queryType{
    name
    }
    }
    }

 

Best regards, (^^ゞ