Shikata Ga Nai

Private? There is no such things.

Modifying serialized data typesをやってみた

Hello there, ('ω')ノ

 

脆弱性診断ガイドラインには、シリアライズされたオブジェクトとして。

下記のように記述があって。

 

シリアライズされた値(言語によってシリアライズ形式は変わります)

■PHPの場合は、下記のような値

a:4:{i:0;i:132;i:1;s:7:"Mallory";i:2;s:4:"user";i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}

 

検出パターンがリクエストに含まれていないかを確認して。

ただし、この診断手法の脆弱性の有無については確定ではなく。

あくまで可能性を示唆するものであるとのことで。

 

開発経験や知識がないとなんのことやらで。

シリアル化とは以下のようで。

 

f:id:ThisIsOne:20210218095519p:plain

 

そして、PHPに関してシリアル化されたオブジェクトを理解することも。

 'b':Boolean

 'i':Integer

 'd':Float

 's':String

 'a':Array

 '0':Object

 

まずは、ログインして。

 

f:id:ThisIsOne:20210218133450p:plain

 

Cookieへデコードへ。

 

f:id:ThisIsOne:20210218133741p:plain

 

URL⇨URL⇨Base64でデコードした結果は以下のとおりで。

O:4:"User":2:{s:8:"username";s:6:"wiener";s:12:"access_token";s:32:"qr9qqfck3drtwo1vvue4h9bf58737o18";}

 

以下のようにUserオブジェクト名や文字数等を変更して。

O:4:"User":2:{s:8:"username";s:13:"administrator";s:12:"access_token";i:0;}

 

f:id:ThisIsOne:20210218133844p:plain

 

逆にエンコードしていって。

ただ、デコード中に等号(==)が得られたので、同じように等号(==)を追加して。

 

f:id:ThisIsOne:20210218135327p:plain

 

ページをリロードして。

 

f:id:ThisIsOne:20210218134332p:plain

 

インターセプト時にCookieを入れ替えると。

 

f:id:ThisIsOne:20210218134756p:plain


管理者のページが。

 

f:id:ThisIsOne:20210218134856p:plain


ここでもCookieを変更して、carlosをDeleteして。

 

f:id:ThisIsOne:20210218134944p:plain

 

ここでもCookieを変更してインターセプトをオフにすると。

 

f:id:ThisIsOne:20210218135033p:plain

 

 

クリアできた。

 

f:id:ThisIsOne:20210218135053p:plain

 

Best regards, (^^ゞ