Belajar Exploitasi XXE injection (XML Eternal Entity Injection)


XML adalah bahasa markup yang dapat membantumu memahami struktur dasar sebuah website. Pada awal kemunculannya, XML digunakan untuk format pertukaran data menggunakan API. Bisa dibilang XML ini hampir seperti json. Pada penggunaan real nya XML ini dapat ditemui di mobile apps dan web apps. Salah satu kerentanan yang sering terjadi pada XML adalah XXE injection (XML Eternal Entity Injection) yaitu kerentanan dimana attacker dapat mengubah pemrosesan data menjadi sebuah injeksi code dimana nantinya umumnya akan menghasilkan output file internal dari dalam server. Dampak dari serangan ini bervariasi mulai dari Local File Read, SSRF, Dos dll. Contoh Struktur XML adalah sebagai berikut.




Reconnaissance

Didapati body request dari fitur check stok seperti dibawah ini, dimana dengan melakukan request pada Product 2 dan store ID 1, didapati hasil 482 buah. Apa maksut dari product 2 dan store id 1?
Misal pada database terdapat data seperti Berikut:

Product
1 - Sepatu
2 - Baju
3 - Topi

Nama Toko
1 - Nakanosec
2 - Maxteroit
3 - Indoxploit

Jika kalian ingin melakukan checking product, maka yang harus kalian lakukan adalah melakukan request menggunakan XML dengan Body seperti dibawah.




Exploitasi

*Note: Pada serangan XXE sangat perhatikan space/newline karena akan sangat berpengaruh pada proses exploitasi

XXE Read Internal File
Untuk melakukan exploitasi XML injection, pertama kita harus mendefinisikan XML entity berisi payload. Disini payload yang bisa digunakan pada XML adalah payload yang hampir sama dengan LFI. Disini saya mendefikan XML Entity bernama xxe dengan payload <!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> kemudian entity tadi dipanggil dengan mengubah value yang ada menjadi &xxe; 



XXE Read AWS Metadata

Ini adalah serangan yang umum dan terkenal di AWS. Serangan ini bertujuan untuk mengambil kredensial IAM dari aplikasi web. Untuk mengurangi risiko ini, bisa dengan menerapkan IMDSv2 untuk semua instans EC2 yang memiliki fitur keamanan tambahan. IMDSv2 akan secara signifikan mengurangi risiko hacker mencuri kredensial IAM melalui SSRF.

payload untuk XXE read AWS Metadata
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://169.254.169.254//latest/meta-data/iam/security-credentials/admin"> ]>



XXE Parse Data

Beberapa aplikasi menerima data yang dikirimkan user dengan request  XML, dan kemudian menguraikan dokumen tersebut. Contoh pada kasus ini data yang dikirimkan user diproses oleh SOAP back-end yang mana membuat kita harus mengubah elemen DOCTYPE menggunakan XInclude.

payload 

<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>

Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.