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

 

intigritiのプライベートプログラムの1つでクールなバグを見つけたので。

ドメイン名をexample.comを仮定することに。

 

問題1:`null`値による入力検証のバイパス

ターゲットプログラムは、HotelsHighの自社開発のカスタマーポータルで。

顧客は訪問を予約できて。

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

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

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

 

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

phoneNumber/emailやその他の必要なパラメータがないと予約を作成できず。

ただし、エンドポイントで不審な動作を観察して。

これにより、ユーザは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/

 

emailgdprConfirmedphoneNumberパラメータをnull値に置き換えると。

バックエンド検証をバイパスして、予約を作成できて。

f:id:ThisIsOne:20220315205709p:plain

 

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

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

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

 

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

 

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

ただし、ユーザがGETリクエストを行って。

bookingdatefromパラメータに空の配列を追加すると。

予約データにアクセスできるようになって。

 

f:id:ThisIsOne:20220315205623p:plain

 

Best regards, (^^ゞ