Konuyla ilgili bakış açısı kazandırabilecek okuyabileceğiniz makale: https://5haked.blogspot.com/2016/10/how-i-hacked-pornhub-for-fun-and-profit.html?zx=ed228ea37a1bc4bd
Lab: Using application functionality to exploit insecure deserialization Laba Gider
- Giriş yaptıktan sonra resim falan yüklediğinde bilgileri sessionda tutacağından dolayı yeni cookie set edecektir.
- Resim yükleme requestini burp ile yakalayıp decode ettiğimizde elimize serialize edilmiş bir cookie geçiyor. Bunun pathini değiştirip istediğimiz pathe gidebiliyoruz.

Lab: Arbitrary object injection in PHP and Property Oriented Programming Laba Gider
-
GET /product?productId=2
- burada product görüyorsan ve /product.php yazdığında erişemiyorsan demekki burası monolitik bir uygulama değildir ve burda web frameworkü kullanılmış demektir.
-
GET /my-account?id=weiner
- my-account diye bir şey görüyorsan VMC de bu routing pathidir. Bu route bir controller map edilir yani bu bir monolitik uygulamadaki gibi editörle düzenlendiğinde backup dosyası oluştuğu senaryo ortaya çıkması için burda da .php dediğinde gelmesi gerekir.
-
bahsettiği pattern yapısı varsa /libs deyip erişemezsin çünkü frameworklerde hikaye şöyle olur:
- libs -- vendor, classes, 3rdparty, public_html;index.php klasörleri olur.
- nginx kuralına bu web sitesine gittiğinde x.com a gelen request --> /var/www/ctfsorusu/public_html/ içine path et dersin ki diğer klasörlere erişemesin. VMC hikayesi burdan gelir.
-
HTML kaynak kodundaki pathin sonuna ~ ekliyorsun ve koda erişiyorsun
-
username’i objeye çevirdiği için ekrana basamadığından hata verdi. Bunun yerine direkt objeyi serialize edince çalıştı.

-
Normalde User objesinin username’inin custom string ifadeyi CustomTemplate() objesine çevirerek bir tane obje oluşturmuştuk ama işe yaramadı.
-
Üstte User yerine direkt CustomTemplate verip çözebilirdik mevzuyu ama property oriented programming konuşmak için böyle yaptı.
Lab: Exploiting Java deserialization with Apache Commons Laba Gider
- ysoserial githubdan çek
- commoncollections4 kullan karşıda remote code exec. yapabiliyorsun
Lab: Developing a custom gadget chain for PHP deserialization Laba Gider
- 2.labdaki gibi kaynak kodlarına bakıp yapılacak.
- call_user_func() sıkıntılı bir komut. İşletim sistemi komutu çalıştırabiliyorsun. O yüzden hedef bu kısım olacak.

- Object chaining yaparak "DefaultMap" sınıfını kullanıcaz. __construct ve __get methodları var burada.
- __get() is utilized for reading data from inaccessible(protected or privite) or non-existing properties.
$map = new DefaultMap("system");
$map->id;- __get, herhangi bir property okunduğunda çağırılır.

