3 minute read

Serialization, nesneler ve bunların alanları gibi karmaşık veri yapılarını sıralı bir bayt akışı olarak gönderip alınabilen “daha düz” bir biçime dönüştürme işlemidir. Verileri serializing etmek şunları daha kolay hale getirmektedir:

  • Inter-process memory, bir dosyaya veya bir veritabanına karmaşık verilerin yazılmasına
  • Bir ağ üzerinden, uygulamanın farklı bileşenleri arasında veya bir API çağrısında karmaşık verilerin gönderilmesinde

En önemlisi, nesne serializing edilirken durumu kalıcı olmaktadır yani nesnenin nitelikleri atanan değeriyle birlikte korunur.

Deserialization, serialized durumdan çıkarma, orijinal nesnenin tam olarak işlevsel bir kopyasına serialized hale getirilmeden önceki haline geri yükleme işlemidir.

Insecure deserialization, kullanıcı tarafından kontrol edilebilen verilerin bir web sitesi tarafından seri durumdan çıkarılmasıdır. Saldırganın zararlı verileri uygulama koduna geçirmek için serileştirilmiş nesneleri değiştirmesine olanak tanımaktır.

Serileştirilmiş bir nesneyi tamamen farklı bir sınıftan bir nesneye değiştirmek bile mümkündür. Web sitesinde mevcut olan herhangi bir sınıfın nesneleri hangi sınıftan beklendiğine bakılmaksızın seri hale getirilecek ve somutlaştırılacaktır. Bu nedenle ınsecure deserialization bazen bir “object injection” güvenlik zafiyetine neden olabilmektedir.

Lab 1 Lab 2 Lab 3 Lab 4 Lab 5 Lab 6 Lab 7

Lab-1 Modifying serialized objects

Bu laboratuvar, serialization-based session mekanizması kullanmaktadır ve privilege escalation güvenlik zafiyetine sahiptir. Lab’ın tamamlanması için cookie bilgisi üzerinde oynamalar yaparak Carlos kullanıcısının silinmesi gerekmektedir.

Id-pw ile giriş yaptıktan sonra set edilen cookie bilgisi base64 ile encode yapılmıştır. Decode edip “admin” bilgisini 0 dan 1 e getirerek yetki yükseltme gerçekleştirilmektedir.

image-center

image-center

Lab-2 Modifying serialized data types

Bu laboratuvar, serialization-based session mekanızmasına sahiptir ve authentication bypass güvenlik zafiyetine sahiptir. Lab’ın tamamlanması için administrator hesabına erişip carlos kullanıcısının silinmesi gerekmektedir.

Session bilgisi base64 ile decode edilerek incelendiğinde access_token bilgisi string değer olarak sunucu tarafına gönderilmekte. Access token değeri string (s) değerinden integer(i) değerine değiştirilerek ve basamak olarak 0 ayarlanarak sunucu tarafına gönderildiğinde, authentication bypass gerçekleştirilmiş ve admin yetkilerine erişilmiş olmaktadır.

image-center

image-center

Lab-3 Using application functionality to exploit insecure deserialization

Bu laboratuvbarda serialization-based session mekanizması bulunmaktadır. Belirli bir fonksiyon serileştirilmiş bir nesnede sağlanan veriler üzerinde tehlikeli bir metot çağırmaktadır. Lab’ın tamamlanması için carlos kullanıcısının home dizininde bulunan morale.txt’nin silinmesi gerekmektedir.

Uygulamaya avatar yüklenebilmektedir.

image-center

Account silinmek istendiğinde account ile ilişkili avatar görseli de dizin üzerinden silinebilmektedir ve bu bilgi serialization halde session bilgisinde tutulmaktadır.

image-center

Base64 ile decoding işlemi yapıp sonrasında morale.txt dosyasını hedefleyen path yazılmaktadır.(s:23 değeri path basamağı kadar ayarlanmaktadır.) Daha sonrasında account delete işlemi gerçekleştirildiğinde morale.txt dosyası silinmektedir.

image-center

image-center

Lab-4 Arbitrary object injection in PHP

Bu laboratuvar, serialization-based bir session mekanızması kullanmaktadır ve rastgele nesne enjeksiyonuna karşı savunmasızdır. Lab’ın tamamlanması için morale.txt dosyasının silinmesi gerekmektedir. Lab’ın çözülmesi için kaynak kod erişimi elde edilmesi gerekmektedir.

Uygulamada CustomTemplate.php adlı bir dosya bulunmaktadır.

image-center

Tilda (~) kullanılarak php dosyası istendiğinde dosyanın içeriği görüntülenmektedir.

image-center

Dosya incelendiğinde CustomTemplate class’ı çağırıldığında, __destruct magic metodu eğer lock_file_path değişkenine bir değer atandıysa local_file_path değişkenini silmektedir.

image-center

Session bilgisinde lock_file_path değişkenine morale.txt dosyasının path’i yazılarak gönderilmektedir ve morale.txt silinmektedir.

image-center

image-center

Lab-5 Exploiting Java deserialization with Apache Commons

Bu laboratuvar, serialization-based session mekanızması kullanmaktadır ve Apache Commons Collections kütüphanesini yükler. Lab’ın tamamlanması için RCE yükü içeren zararlı bir payload serialized bir nesne oluşturulup morale.txt dosyası silinmelidir.

Uygulama Apache Commons kullanmaktadır.

image-center

ysoserial aracı kullanılarak hedeflenen payload’ı içeren bir çıktı üretilmektedir base64 encode halinde. Daha sonrasında URL encoding yaparak session parametresinde gönderilerek lab tamamlanmaktadır.

image-center

image-center

Lab-6 Exploiting PHP deserialization with a pre-built gadget chain

Bu laboratuvar, imzalı bir cookie kullanan serialization-based session mekanızmasına sahiptir. Ayrıca bir PHP framework kullanılmaktadır. Lab’ın tamamlanması için Carlos kullanıcısının morale.txt dosyasının silinmesi gerekmektedir.

Session bilgisinde token verileri serialization şeklinden gönderilmektedir.

image-center

Token değeri base64 ile encoding yapınca aşağıdaki gibi görüntülenmektedir.

image-center

Uygulamanın içerisinde debug sayfasının path’i ifşalanmaktadır.

image-center

İlgili path’de hmac algoritması için kullanılan Secret Key ifşa olmaktadır.

image-center

Phpgcc aracı ile (Symfony framework’u olduğu uygulamada ifşa olmuştu) ilgili payload hazırlanmaktadır.

image-center

Daha sonra secret key ve phpgcc aracı aracılıyla oluşturulan zararlı payload kullanılak uygun bir cookie haline getirilmektedir.

image-center

image-center

Son olarak session bilgisi ile değiştirilerek sunucuya gönderilmektedir morale.txt dosyası silinmektedir.

image-center

image-center

Lab-7 Exploiting Ruby deserialization using a documented gadget chain

Bu laboratuvarda serialization-based session mekanizması ve Ruby on Rails framework kullanmaktadır. Lab’ın tamamlanamsı için morale.txt dosyasının silinmesi gerekmektedir.

Uygulamanın session verisi serialized haldedir.

image-center

Universal Deserialisation Gadget for Ruby 2.x-3.x by vakzz on devcraft.io’dan payload generating kısmındaki son script alınarak morale.txt silinecek şekilde hedeflenmektedir.

image-center

Alınan hex çıktısı base64 hale getirilerek session bilgisine yazılmaktadır. Sonuç olarak payload yerleştirilmiş request sunucuya gönderilerek hedeflenen dosya silinmektedir.

image-center

image-center

image-center