Shikata Ga Nai

Private? There is no such things.

Sql Injection via hidden parameterを訳してみた

Hello there, ('ω')ノ

 

非表示パラメータを介したSQLインジェクションを。

 

脆弱性:

 SQLインジェクション

 

記事:

 https://hajarerutik9.medium.com/sql-injection-via-hidden-parameter-6da7699248fc

 

調査結果:

ターゲットは商社で、redacted.comと呼ぶことに。

ターゲットに登録するとダッシュボードにリダイレクトされて。

リクエストをチェックするためにBurp Suiteを実行して。

ページを更新して確認したところ、何も面白いものは見つからず。

 

また、Webアプリでは。

取引レポートを表示/ダウンロードできるオプションがあったので。

サンプルレポートを生成して、Burp Suiteの実行中にダウンロードすると。

レポートをダウンロードするためにWebアプリが。

銀行ID、ユーザIDなどを取得するようにリクエストしていることがわかって。

 POST /redacted.com/withdraw/unbankacc

 

多くのリクエストを確認すると、下記のリクエストがあって。

下記のリクエストのリソースにアクセスするには。

トークンを提供する必要がありますとの応答が。

しかしながら、自分は持ってないので。

 

f:id:ThisIsOne:20210906145053p:plain

 

次に、ディレクトリをブルートフォースしてみると。

 Dir Buster
 DirB
 WFuzz
 Dirsearch

など。

 

下記の有効なディレクトリ「bankacc」を見つけて。

しかしながら、応答は空で。

 POST /redacted.com/withdraw/bankacc

 

なので隠されたパラメータを見つけることを考え、Param Minerを実行することに。

 

f:id:ThisIsOne:20210906150144p:plain

 

結果、statusというパラメータを見つけることができたので。

任意の値を送ってみるとSQLエラーが発生したので。

 POST /redacted.com/withdraw/bankacc?status=some123

 

f:id:ThisIsOne:20210906145122p:plain

 

下記のインジェクションを試すことに。

 1' AND sleep(5)

 

すると5秒の遅延を取得し、脆弱性を確認できて。

すぐにsqlmapを起動して、このリクエストを渡すと。

1分以内に私はそこにすべてのデータベースをダンプすることができて。

小さなヒントは、隠されたパラメータで。

SQLインジェクションを試すことを忘れてはならず。

 

Best regards, (^^ゞ