Sabtu, 11 Mei 2019

Apa itu XXE Injection (XML External Entity)?


Sebelum kita masuk kepembahasan celah XXE, saya sarankan kalian harus mengerti dulu tentang XML, mungkin akan saya jelaskan sedikit.

XML adalah singkatan dari Extensible Markup Language, XML sendiri banyak digunakan untuk aktifitas penyajian data (output) dan sering juga digunakan sebagai penerima data (input), atau lebih simpelnya digunakan untuk mengintegrasian data di antara aplikasi yang berbeda-beda.
Tentunya kalau kalian pernah mempelajari tentang API mungkin kalian juga tahu tentang XML.

XML External Entity (XXE Injection)

Pada dasarnya Entity digunakan untuk mendefinisikan sebuah pintasan (shortcut) guna menampung sebuah nilai/karakter. Kalau kita analogikan dalam pemrograman, Entity dapat dikatakan sebagai variable.
Pada dasarnya Entity dapat dideklarasikan menjadi Internal maupun External.

Internal vs External

Internal Entity hanya dapat mendeklarasikan sebuah value yang disetting pada dokumen XML itu sendiri, sedangkan External Entity dapat mendeklarasikan sebuah value yang terdapat diluar dokumen XML, dengan kata lain: dapat mengakses dokumen lain (diluar dokumen XML tersebut).

Lalu apa maksud dengan dapat mengakses diluar dokumen XML itu sendiri?
Ya! Tentu saja dengan External Entity kita dapat membaca file-file berbahaya seperti file konfigurasi, file /etc/passwd, port scanning, dan lain-lain.

Contoh Internal Entity:

<!DOCTYPE root [<!ENTITY data 'isinya'>]><root>&data;</root>

Example:
<!ENTITY data 'isinya'>
Bilamana kita analogikan ke dalam bahasa pemrograman PHP akan terlihat seperti:
$data = 'isinya';

Kemudian
&data;
sama seperti
echo $data;

Contoh External Entity:

<!DOCTYPE root [<!ENTITY data SYSTEM "file:///etc/passwd">]><root>&data;</root>

Example:
<!ENTITY data SYSTEM "file:///etc/passwd">
Bilamana kita analogikan ke dalam bahasa pemrograman PHP akan terlihat seperti:
$data = file_get_contents("/etc/passwd");

Kemudian
&data;
sama seperti
echo $data;

Ilustrasi serangan XXE:


Mengapa XXE Injection bisa terjadi?

XXE terjadi hanya karena XML Parser mengizinkan memanggil Entity dari luar dokumen.

Apa saja yang dapat dieksploitasi dengan XXE?

Tentunya hanya Aplikasi yang menggunakan XML dan XML Parser sebagai media komunikasi (Input/Outputnya).

Sekian.
Share:

1 komentar:

  1. Nice post bro . Coba tak plejari aku taune xss file upload xml .

    BalasHapus