Exploit XML Injection Or XML External Entity ( XXE
Exploit XML Injection Or XML External Entity ( XXE 

Exploit XML Injection Or XML External Entity ( XXE ) - Halo teman-teman bagaimana kabarmu semoga kamu baik-baik saja jadi di sini kita mendekati seri kami ini saya benar-benar berharap bahwa kamu telah belajar banyak atau sedikit: jadi jika kamu mengetahui sesuatu, beri tahu kami dengan berkomentar dan berbagi. Inilah bagian lain MySql Injection , Directory Traversal , File Include Attacks ,Unrestricted File Upload , Command Injection Attacks, LDAP Injection

XML eXternal Entity (XXE) attack:

External Entity: Himpunan entitas yang valid dapat diperpanjang dengan mendefinisikan entitas baru. Jika definisi suatu entitas adalah URI, entitas tersebut disebut entitas eksternal. kecuali jika dikonfigurasikan untuk melakukan sebaliknya, entitas eksternal memaksa parser XML untuk mengakses sumber daya yang ditentukan oleh URI, mis., file pada mesin lokal atau pada sistem jarak jauh. perilaku ini mengekspos aplikasi untuk serangan XML eXternal Entity (XXE), yang dapat digunakan untuk melakukan penolakan layanan dari sistem lokal, mendapatkan akses tidak sah ke file di mesin lokal, memindai mesin jarak jauh, dan melakukan penolakan layanan dari sistem jarak jauh.

Example 1 :

Beberapa parser XML akan menyelesaikan entitas eksternal, dan akan memungkinkan pengguna yang mengontrol pesan XML untuk mengakses sumber daya; misalnya untuk membaca file di sistem. Entitas berikut dapat dideklarasikan, misalnya :
Anda harus membungkusnya dengan benar, agar dapat berfungsi dengan benar:
Anda kemudian dapat menggunakan referensi ke x: & x; (jangan lupa untuk menyandikan &) untuk mendapatkan hasil yang sesuai dimasukkan dalam dokumen XML selama penguraiannya (sisi server).

dalam contoh ini, eksploitasi terjadi langsung di dalam permintaan GET, tetapi kemungkinan besar jenis permintaan ini dilakukan menggunakan permintaan POST, dalam aplikasi web tradisional. masalah ini juga sangat umum dengan layanan web, dan mungkin merupakan tes pertama yang ingin Anda lakukan, saat menyerang aplikasi yang menerima pesan XML.

contoh ini juga dapat digunakan untuk membuat aplikasi melakukan permintaan HTTP (dengan menggunakan http: // alih-alih file: //) dan dapat digunakan sebagai pemindai port. Namun, konten yang diambil sering tidak lengkap karena, parser XML akan mencoba menguraikannya sebagai bagian dari dokumen. –PentesterLab

kamu juga bisa menggunakan ftp: // atau http: //.

Jadi apa solusinya ??
Ini solusinya dan sangat sederhana.

Attacking Payload (read system file: /etc/passwd):

]>&xxe;

PoC (with URL encoded):

Example 2 :

Dalam contoh ini, kode menggunakan input pengguna, di dalam ekspresi XPath. XPath adalah bahasa permintaan, yang memilih node dari dokumen XML. Bayangkan dokumen XML sebagai database, dan XPath sebagai query SQL. jika Anda dapat memanipulasi kueri, Anda akan dapat mengambil elemen yang biasanya Anda tidak memiliki akses.

Jika kami menyuntikkan satu kutipan, kami dapat melihat kesalahan berikut:

Warning: SimpleXMLElement::XPath(): Invalid predicate in /var/www/xml/example2.php on line 7 Warning: SimpleXMLElement::XPath(): xmlXPathEval: evaluation failed in /var/www/xml/example2.php on line 7 Warning: Variable passed to each() is not an array or object in /var/www/xml/example2.php on line 8

Seperti SQL Injection, XPath memungkinkan Anda melakukan logika boolean, dan Anda dapat mencoba:

  • ' and '1'='1 and you should get the same result.
  • ' or '1'='0 and you should get the same result.
  • ' and '1'='0 and you should not get any result.
  • ' or '1'='1 and you should get all results.
Berdasarkan tes-tes ini dan pengetahuan sebelumnya tentang XPath, dimungkinkan untuk mendapatkan gambaran seperti apa ekspresi XPath :

Untuk mengomentari sisa ekspresi XPath, Anda dapat menggunakan NULL BYTE (yang perlu Anda enkode sebagai% 00). Seperti yang dapat kita lihat dalam ekspresi XPath di atas, kita juga perlu menambahkan] untuk menyelesaikan sintaks dengan benar. Payload kami sekarang terlihat seperti hacker ']% 00 (atau hacker' atau 1 = 1]% 00 jika kami menginginkan semua hasil) .

Jika kami mencoba menemukan anak dari simpul saat ini, menggunakan payload '%20or%201=1]/child::node()kami tidak mendapatkan banyak informasi.

Di sini, masalahnya adalah kita harus kembali dalam hierarki node, untuk mendapatkan informasi lebih lanjut. Di XPath, ini bisa dilakukan usingparent ::* as part of the payload. 

Kita sekarang dapat memilih induk dari simpul saat ini, dan menampilkan semua simpul child usinghacker '%20or%201=1]/parent::*/child::node()

Salah satu nilai simpul terlihat seperti kata sandi. Kami dapat mengkonfirmasi ini, dengan memeriksa apakah nama simpul adalah kata sandi menggunakan payloadhacker']/parent::*/password. - PentesterLab

Untuk membuang semua kredensial pengguna, saya menggunakan payload “‘ or 1=1]” untuk membangun variabel $Xpath sebagai berikut:

users/user/name[.='' or 1=1]']/parent::*/message

Di sini% 00 akan menghilangkan string berikut.

 PoC:

Next tunggu artikel selanjutnya mohon maaf jika ada yang salah bisa bantu komentar dibawah, semoga bermanfaat thx u.

Post a Comment

http://www.hackcuih.com/ akan terus berkembang dan akan membagikan artikel menarik lainnya.

Previous Post Next Post