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
多くのリクエストを確認すると、下記のリクエストがあって。
下記のリクエストのリソースにアクセスするには。
トークンを提供する必要がありますとの応答が。
しかしながら、自分は持ってないので。
次に、ディレクトリをブルートフォースしてみると。
Dir Buster
DirB
WFuzz
Dirsearch
など。
下記の有効なディレクトリ「bankacc」を見つけて。
しかしながら、応答は空で。
POST /redacted.com/withdraw/bankacc
なので隠されたパラメータを見つけることを考え、Param Minerを実行することに。
結果、statusというパラメータを見つけることができたので。
任意の値を送ってみるとSQLエラーが発生したので。
POST /redacted.com/withdraw/bankacc?status=some123
下記のインジェクションを試すことに。
1' AND sleep(5)
すると5秒の遅延を取得し、脆弱性を確認できて。
すぐにsqlmapを起動して、このリクエストを渡すと。
1分以内に私はそこにすべてのデータベースをダンプすることができて。
小さなヒントは、隠されたパラメータで。
SQLインジェクションを試すことを忘れてはならず。
Best regards, (^^ゞ