XPath Injection terjadi ketika masukan yang diberikan oleh pengguna tidak dibersihkan dengan benar dan penyerang berbahaya dapat mengirim dan membangun query XPath cacat untuk data XML dengan maksud untuk mengekstrak informasi sensitif yang user normal tidak memiliki akses ke. Hal ini mirip dengan SQL Injection di mana penyerang melakukan hal yang sama, di SQL Injection, SQL query dibuat dan XPath Injection, query XPath dibuat untuk data XML /. Pertanyaan XML dilakukan melalui XPath yang jenis dari pernyataan deskriptif sederhana yang memungkinkan permintaan XML untuk mencari informasi tertentu.
Untuk memahami lebih jelas bagaimana dokumen XML terlihat seperti, kita lihat di bawah ini. Ini adalah kode dokumen XML sederhana untuk otentikasi pengguna berdasarkan kombinasi username dan password mereka masuk.
<Pengguna>
<User>
<Nama> Administrator </ nama>
<Username> hackingsec </ username>
<Password> password123! </ Password>
<Admin> 1 </ admin>
</ User>
<User>
<Nama> Admin </ nama>
<Username> admin </ username>
<Password> reddit12 </ password>
<Admin> 0 </ admin>
</ User>
</ Pengguna>
Ketika username 'admin' dan password 'reddit12' dimasukkan, query XPath berikut dijalankan
/ * [0] / pengguna [username = "admin" dan
password = "reddit12"]
Yang akan kembali berikut
<User>
<Nama> Admin </ nama>
<Username> admin </ username>
<Password> reddit12 </ password>
<Admin> 0 </ admin>
</ User>
Pemanfaatan XPath Injection: Authentication Bypass
Pengguna berbahaya dapat melewati otentikasi dengan mengirimkan permintaan masukan khusus dibuat.
/ * [0] / pengguna [username = "admin" dan password = "reddit12"]
Jika penyerang menyampaikan masukan berbahaya berikut:
username: admin "atau" 1 "=" 1
password: apa-apa
query XPath yang akan dilaksanakan akan menjadi sebagai berikut:
/ * [0] / pengguna [username = "admin" atau "1" = "1" dan
password = "sesuatu"]
Query XPath akan menghasilkan memotong otentikasi dan penyerang akan dapat login ke
aplikasi sebagai pengguna "admin". Hal ini karena klausul OR dalam query XPath adalah suatu kondisi yang selalu benar. Di bawah XPath (mirip dengan SQL) DAN klausul mendahului selama ATAU klausa, sehingga query XPath akan dievaluasi seperti yang ditunjukkan oleh berikut pseudo-code:
nama pengguna = "admin" atau [BENAR DAN Salah]
yang akan menghasilkan:
nama pengguna = "admin" atau PALSU
Sebagai admin nama pengguna berlaku, penyerang akan dapat login sebagai pengguna ini.
Itu adalah pengenalan dasar untuk memberitahu Anda, apa yang sebenarnya XPath adalah dan untuk memanfaatkannya. Saya akan membagi posting ini menjadi 3 bagian yang terpisah. Ini adalah bagian 1, di bagian 2 saya akan menjelaskan cara mengekstrak informasi basis data melalui XPath Injection. Pada bagian 3 kita akan berbicara tentang beberapa alat otomatis untuk mengeksploitasi XPath Injection.
Untuk memahami lebih jelas bagaimana dokumen XML terlihat seperti, kita lihat di bawah ini. Ini adalah kode dokumen XML sederhana untuk otentikasi pengguna berdasarkan kombinasi username dan password mereka masuk.
<Pengguna>
<User>
<Nama> Administrator </ nama>
<Username> hackingsec </ username>
<Password> password123! </ Password>
<Admin> 1 </ admin>
</ User>
<User>
<Nama> Admin </ nama>
<Username> admin </ username>
<Password> reddit12 </ password>
<Admin> 0 </ admin>
</ User>
</ Pengguna>
Ketika username 'admin' dan password 'reddit12' dimasukkan, query XPath berikut dijalankan
/ * [0] / pengguna [username = "admin" dan
password = "reddit12"]
Yang akan kembali berikut
<User>
<Nama> Admin </ nama>
<Username> admin </ username>
<Password> reddit12 </ password>
<Admin> 0 </ admin>
</ User>
Pemanfaatan XPath Injection: Authentication Bypass
Pengguna berbahaya dapat melewati otentikasi dengan mengirimkan permintaan masukan khusus dibuat.
/ * [0] / pengguna [username = "admin" dan password = "reddit12"]
Jika penyerang menyampaikan masukan berbahaya berikut:
username: admin "atau" 1 "=" 1
password: apa-apa
query XPath yang akan dilaksanakan akan menjadi sebagai berikut:
/ * [0] / pengguna [username = "admin" atau "1" = "1" dan
password = "sesuatu"]
Query XPath akan menghasilkan memotong otentikasi dan penyerang akan dapat login ke
aplikasi sebagai pengguna "admin". Hal ini karena klausul OR dalam query XPath adalah suatu kondisi yang selalu benar. Di bawah XPath (mirip dengan SQL) DAN klausul mendahului selama ATAU klausa, sehingga query XPath akan dievaluasi seperti yang ditunjukkan oleh berikut pseudo-code:
nama pengguna = "admin" atau [BENAR DAN Salah]
yang akan menghasilkan:
nama pengguna = "admin" atau PALSU
Sebagai admin nama pengguna berlaku, penyerang akan dapat login sebagai pengguna ini.
Itu adalah pengenalan dasar untuk memberitahu Anda, apa yang sebenarnya XPath adalah dan untuk memanfaatkannya. Saya akan membagi posting ini menjadi 3 bagian yang terpisah. Ini adalah bagian 1, di bagian 2 saya akan menjelaskan cara mengekstrak informasi basis data melalui XPath Injection. Pada bagian 3 kita akan berbicara tentang beberapa alat otomatis untuk mengeksploitasi XPath Injection.