Shikata Ga Nai

Private? There is no such things.

How did I earn €€€€ by breaking the back-end logic of the serverを訳してみた

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の自社開発のカスタマーポータルで。

顧客は宿泊を予約できて。

このプログラムは、データを安全に作成および変更できる。

ステージング環境を対象としていて。

通常、顧客には予約に使用できる顧客登録コードが提供されて。

 

アプリケーションのテスト中に登録ワークフローで。

phoneNumbermailおよびその他の必要なパラメータがないと。

予約を作成できないことに気づいて。

ユーザが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値に置き換えて送信するとバックエンド検証をバイパスして。

予約を作成できて。

 emailgdprConfirmedphoneNumber

 

f:id:ThisIsOne:20210809122258p:plain


問題2:空の配列を介した情報開示

低特権ユーザとしてアプリケーションをテストしていると。

予約データにアクセスできるエンドポイントを見つけたので。

 /event/api/v1/bookings?
page=0&perpage=25&pagesize=25&sort=%2BbookingDate&sortby=bookingDate&ascending=true&bookingdatefrom=<DATE>&visitdatefrom=<DATE>

 

ユーザーが上記のエンドポイントに対してGETリクエストを行うと。

nullの応答が返されて。

 

f:id:ThisIsOne:20210809122228p:plain

 

ただし、bookingdatefromパラメータに空の配列を追加して。

GETリクエストを行うと予約データにアクセスできて。

 

f:id:ThisIsOne:20210809122154p:plain

 

Best regards, (^^ゞ