Apa Itu Deserialization Attack?
Deserialization adalah proses mengubah data serial (string/bytes) kembali menjadi objek. Jika data yang di-deserialize tidak divalidasi, attacker bisa membuat objek berbahaya yang mengeksekusi kode.
PHP Deserialization
// Serialize object
$obj = new User("rizky", "admin");
echo serialize($obj);
// Output: O:4:"User":2:{s:4:"name";s:5:"rizky";s:4:"role";s:5:"admin";}
// Payload berbahaya — ubah role
O:4:"User":2:{s:4:"name";s:5:"rizky";s:4:"role";s:5:"admin";}
PHP Magic Methods yang Dieksploitasi
__wakeup() ← dipanggil saat deserialize
__destruct() ← dipanggil saat objek dihapus dari memory
__toString() ← dipanggil saat objek dikonversi ke string
Cara Menemukan
- Cookie yang berisi data serialized (base64 + PHP serialize format)
- Parameter tersembunyi dengan nilai base64
- Response yang mengandung serialized object
# Ciri PHP serialized object di cookie/parameter
Tzo0OiJVc2VyIjoy... ← base64 dari O:4:"User":...
# Decode dan analisis
echo "Tzo0OiJVc2VyIjoy..." | base64 -d
Tools
- ysoserial — Generate Java deserialization payloads
- phpggc — PHP gadget chain generator
// CEK PEMAHAMAN
PHP magic method mana yang paling sering dieksploitasi dalam deserialization attack?
A__construct()
B__wakeup()
C__sleep()
D__clone()