Hello there, ('ω')ノ
目的:
シリアライズされたセッション情報を改ざんし、管理者権限を取得。その後、carlosユーザーを削除することでラボを完了させます。
🛠️ 初期準備
- ログイン情報:
wiener:peter - 使用ツール:Burp Suite(ProfessionalでもCommunityでも可)
ステップ1:ログインしてセッション確認
wiener:peterでログインします。GET /my‑accountのリクエストをBurpでキャプチャ。- Cookieヘッダー内にあるセッション情報(Base64+URLエンコードされた文字列)をBurpのInspectorで展開します。
ステップ2:シリアライズされたPHPオブジェクトを読み解く
- デコードされたセッション文字列を見てみると、PHPのオブジェクト形式になっていることが分かります:
O:4:"User":...{...s:5:"admin";b:0;...}
admin属性がb:0(false = 管理者ではないことを示す)であることを確認。
ステップ3:オブジェクト改ざん
- 該当リクエストをBurp Repeaterに送信します。
- Inspector で
adminの値をb:1に書き換え(true にする)。 - Apply changes を押せば、Burpが自動で再シリアライズ&再エンコードしてくれます。
- この状態でリクエストを送信。
ステップ4:管理者ページにアクセス
- 応答に
/adminへのリンクが現れ、管理者としてアクセス可能になっていることが確認できます。 GET /adminを実行し、ユーザー一覧が表示されるかチェック。
ステップ5:carlos のアカウント削除
GET /admin/delete?username=carlosを送信。- 成功すれば「carlos ユーザーの削除」が完了し、ラボも解決です。
✏️ まとめ(ブログ用タイトル付き)
タイトル:LAB: PHPシリアライズオブジェクトの改ざんによる権限昇格
- ログインしてセッションCookieを取得
- BurpのInspectorでPHPオブジェクトを復元し、admin属性を確認
- Burp Repeaterでadmin属性を
b:0 → b:1に書き換え - 管理者パネル(/admin)へのアクセスを確認
/admin/delete?username=carlosを使って carlos を削除
Best regards, (^^ゞ