SQL Injection in The HTTP Custom Header から学ぶ

ソース:

medium.com

脆弱性SQLインジェクション

 

訳:

そこで、私はターゲットの API ペネトレーション テストを行っていました。 redacted.com だとします。
ログインに成功した後、リクエストにはもう 1 つの HTTP ヘッダー、User ヘッダーがあり、その値はアプリケーションにログインするユーザー名です。 

 

POST /abcd/abcd
Authorization: token
Host: redacted.com
User: user.abc
Postman-Token: token
...
{body request}

 

ここで、IDOR の可能性を考慮してユーザー名を変更しようとしましたが、サーバーは、内部エラー コード 500 と、この API アクセスを取得できないというエラー メッセージを含むメッセージを表示して、ユーザー名を検証します。 

 

ユーザー値を変更するときのエラー メッセージ

このパラメータは検証されているため、SQL インジェクションの可能性もあるため、基本的な SQL インジェクションをリクエストに ' OR 1=1- - を加えてリクエストを送信すると、サーバーは簡単にリクエストを受け入れ、有効な情報を提供します。

 

リクエストはサーバーによって受け入れられました

 

はい、有効な SQL インジェクションが得られました。
もちろん、 残りの作業はsqlmap が行います。
しかし、この脆弱性により、認証トークンなしでサーバーにリクエストを行うこともできることが判明しました。

 

認可トークンなしでリクエストが成功した

 

ほなほな。