Hello there, ('ω')ノ
サーバのバックエンドロジックを壊して、どうやって€€€€を稼いだかを。
脆弱性:
論理的欠陥
情報開示
記事:
https://dewcode.medium.com/how-did-i-earn-by-breaking-the-back-end-logic-of-the-server-fd94882cbdf6
プライベートプログラムのドメイン名をexample.comと仮定して。
問題1: null値を介して入力検証をバイパス
ターゲットプログラムは、HotelsHighの自社開発のカスタマーポータルで。
顧客は宿泊を予約できて。
このプログラムは、データを安全に作成および変更できる。
ステージング環境を対象としていて。
通常、顧客には予約に使用できる顧客登録コードが提供されて。
アプリケーションのテスト中に登録ワークフローで。
phoneNumberやmailおよびその他の必要なパラメータがないと。
予約を作成できないことに気づいて。
ユーザがnull値で予約を作成できるエンドポイントでの疑わしい動作をみることに。
{
"registerCode": "CS1337",
"gender": "male",
"booking_date": "2021-10-03",
"email": null,
"firstName": "first_name",
"lastName": "Last_name",
"gdprConfirmed": null,
"phoneNumber": null,
"booking_time": "14:50"
}
ユーザがプロキシ履歴で下記のパスをリピータにリクエストを送信して。
/API/v1/rest/customer/booking/create/
パラメータをnull値に置き換えて送信するとバックエンド検証をバイパスして。
予約を作成できて。
email、gdprConfirmed、phoneNumber
問題2:空の配列を介した情報開示
低特権ユーザとしてアプリケーションをテストしていると。
予約データにアクセスできるエンドポイントを見つけたので。
/event/api/v1/bookings?
page=0&perpage=25&pagesize=25&sort=%2BbookingDate&sortby=bookingDate&ascending=true&bookingdatefrom=<DATE>&visitdatefrom=<DATE>
ユーザーが上記のエンドポイントに対してGETリクエストを行うと。
nullの応答が返されて。
ただし、bookingdatefromパラメータに空の配列を追加して。
GETリクエストを行うと予約データにアクセスできて。
Best regards, (^^ゞ