Shikata Ga Nai

Private? There is no such things.

LAB: NoSQL演算子インジェクションによる認証バイパス

Hello there, ('ω')ノ

🔐 認証バイパスの概要

このラボでは、MongoDBを使用したログイン機能に対して、NoSQLインジェクションを利用して管理者アカウントに不正ログインする方法を学びます。


🛠️ 手順

  1. ログインリクエストの確認 Burp Suiteのブラウザで、wiener:peterの資格情報を使用してログインし、POST /loginリクエストを確認します。

  2. $ne演算子を使用したインジェクションのテスト usernameフィールドの値を{"$ne": ""}に変更し、リクエストを送信します。

   {
     "username": {"$ne": ""},
     "password": "peter"
   }

ログインが成功すれば、$ne演算子が適用されていることを示します。

  1. $regex演算子を使用した管理者アカウントの特定 usernameフィールドに{"$regex": "admin.*"}を設定し、passwordフィールドには{"$ne": ""}を設定してリクエストを送信します。
   {
     "username": {"$regex": "admin.*"},
     "password": {"$ne": ""}
   }

これにより、adminで始まるユーザー名を持つアカウントにログインできる可能性があります。

  1. ブラウザでの確認 Burp Suiteのレスポンスで「Show response in browser」を選択し、表示されたURLをブラウザで開きます。

    管理者アカウントにログインできれば、ラボは解決されます。


🎯 ポイントとコツ

  • 演算子インジェクションの理解: $ne(not equal)や$regex(正規表現)などのMongoDBの演算子を利用して、認証ロジックを操作します。

  • レスポンスの観察: リクエストに対するレスポンスの変化を注意深く観察し、インジェクションの成功を判断します。

  • セッションの維持: Burp Suiteで得られたセッション情報をブラウザに適用することで、実際のログイン状態を確認できます。

Best regards, (^^ゞ