Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Contoh analisis kerentanan suntikan entiti luaran XML

Contoh analisis kerentanan suntikan entiti luaran XML

王林
王林ke hadapan
2023-05-11 16:55:122103semak imbas

1. Suntikan entiti luaran XML

Kerentanan suntikan entiti luaran XML ialah apa yang sering kita panggil kerentanan XXE. XML ialah format penghantaran data yang digunakan secara meluas, dan banyak aplikasi mengandungi kod untuk memproses data XML Secara lalai, banyak pemproses XML yang lapuk atau tidak dikonfigurasikan dengan betul akan merujuk kepada entiti luaran.

Jika penyerang boleh memuat naik atau menambah kandungan berniat jahat pada dokumen XML, melalui kod yang terdedah, kebergantungan atau penyepaduan, mereka boleh menyerang pemproses XML yang cacat. Kejadian kelemahan XXE tidak ada kaitan dengan bahasa pembangunan Selagi data xml dihuraikan dalam aplikasi dan data dikawal oleh pengguna, aplikasi mungkin terdedah kepada serangan XXE. Artikel ini mengambil program java sebagai contoh untuk memperkenalkan punca dan pembaikan kelemahan XXE. Untuk butiran tentang kerentanan XXE, sila lihat CWE-611: Sekatan Tidak Wajar bagi Rujukan Entiti Luar XML ('XXE')(http://cwe.mitre.org/data/definitions/611.html).

2. Suntikan entiti luaran XML

Kerentanan XXE boleh digunakan untuk mengekstrak data, melaksanakan permintaan pelayan jauh, mengimbas sistem dalaman, melakukan serangan penafian perkhidmatan dan serangan lain . Kesan perniagaan bergantung terutamanya pada perujuk yang terjejas dan keperluan perlindungan data.

Sejak 2018, sebanyak 92 maklumat kerentanan yang berkaitan dengannya telah dikeluarkan dalam CVE. Beberapa CVE adalah seperti berikut:

CVE-2018-8027 Apache Camel 2.20.0 到 2.20.3 和2.21.0 Core 在 XSD 验证处理器中存在 XXE 漏洞。
CVE-2018-13439 微信支付 Java SDK 中的 WXPayUtil 类中存在XXE漏洞。
CVE-2018-1000548 在版本号小于 14.3 的 Umlet 中,在文件解析中存在XML外部实体注入漏洞,可能导致机密数据泄露、拒绝服务、服务器端请求伪造。此攻击可以通过特制的 UXF 文件进行攻击。
CVE-2018-1364
IBM Content Bavigator 2.0 和 3.0 版本中在处理XML数据时,易受XML外部实体(XXE)攻击。远程攻击者可以利用此漏洞暴露敏感信息或占用内存资源。

3. Kod Contoh

3.1 Kod Kecacatan

Bahagian ini menggunakan sumber kod sampel untuk membayar SDK Java sumber terbuka ( https:// /pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1), nama fail sumber: WXPayUtil.java, laluan fail: java-sdk-v3srcmainjavacomgithubwxpaysdk.

Contoh analisis kerentanan suntikan entiti luaran XML

Dalam kod di atas, anda boleh melihat bahawa data dihantar masuk melalui parameter formal xmlToMap pada baris 25. Data tidak ditapis dalam apa jua cara dan XML pemproses tidak mempunyai tetapan keselamatan. Data dihuraikan pada baris 32. Dalam senario sebenar, parameter strXML juga dikawal oleh penyerang, jadi penyerang boleh membina strXML berniat jahat untuk menjalankan serangan XXE.

Gunakan 360 ​​Code Guard untuk mengesan kod sampel di atas, dan anda boleh mengesan kecacatan "suntikan entiti luaran XML berisiko" pada baris 32 fail. Seperti yang ditunjukkan dalam Rajah 1:

Contoh analisis kerentanan suntikan entiti luaran XML

Rajah 1 Mengesan suntikan entiti luaran XML berisiko

3.2 Kod pembaikan

Contoh analisis kerentanan suntikan entiti luaran XML

Contoh analisis kerentanan suntikan entiti luaran XML

Baris 28 dalam kod pembaikan di atas menggunakan kelas alat xml WXPayXmlUtil untuk menjana pemproses xml yang selamat. Perkara yang paling kritikal dalam kelas WXPayXmlUtil ialah baris 16, yang menggunakan setFeature untuk melumpuhkan sepenuhnya DTDS dalam pemproses xml yang dihasilkan. Seperti yang dapat dilihat dari Rajah 2, 360 Code Guard tidak mengesan kecacatan pada kod yang telah dibaiki.

Contoh analisis kerentanan suntikan entiti luaran XML


Rajah 2 Contoh pembaikan kelemahan XXE

4 Bagaimana untuk mengelakkan kelemahan XXE

Biasa. Kaedah mengelak:

1 Gunakan format data ringkas (seperti JSON) sebanyak mungkin untuk mengelak daripada membuat siri data sensitif

2 Semua pemproses dan perpustakaan XML yang digunakan oleh sistem pengendalian asas. Pada masa yang sama, kemas kini SOAP kepada versi 1.2 atau lebih tinggi melalui pengesanan kebergantungan; 'XXE Prevention'》(https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet)

Kod berikut ialah contoh menghalang kelemahan XXE apabila menggunakan DocumentBuilderFactory untuk menghuraikan xml dalam aplikasi java :

Contoh analisis kerentanan suntikan entiti luaran XML 4. Pengesahan input: Gunakan senarai putih pada bahagian pelayan untuk pengesahan dan penapisan input untuk menghalang data berniat jahat daripada muncul dalam dokumen XML, pengepala atau nod.

5. Sahkan kelemahan XML dan XXE, dan penggunaan alat ASAT boleh menemui kelemahan XXE dengan mengesan kebergantungan dan konfigurasi keselamatan.

Atas ialah kandungan terperinci Contoh analisis kerentanan suntikan entiti luaran XML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam