XXE (XML External Entity) Injection Nedir?


Türkçeye çevrildiğinde XML Dış Varlık enjeksiyonu anlamına gelmektedir.

XML: Kullanımı ve kod yapısı kolay, veri seçim ve aktarım işlemleri hızlı gerçekleşen, verilerinizi farklı dillerde kullanabilmenizi sağlayan, veri depolamak ve aktarmak amacıyla geliştirilen bir **** dilidir.

XML External Entity (XML Harici Varlık) saldırısı, XML ayrıştırıcılarını hedef alan bir saldırı türüdür. Herhangi bir uygulamanın XML verilerine müdahalede bulunmasını sağlayan bir açık türüdür de diyebiliriz. Uygulamanın sunucudaki verilerine müdahalede bulunulmasına yetki verir. Kısacası XXE, kiritik zafiyetleri elde edebileceğimiz bir güvenlik zafiyetidir.

Server-side request forgery (SSRF) saldırılarındaki amaç için de XXE araç olarak kullanılabilir.
(SSRF: İstek sahteciliği)

Zafiyetin kullanılabilmesi için XML kütüphanesinin özel entity tanımlama veya çağırmaya izin vermesi gerekmektedir. Bazı yerlerde default olarak bu özellik açık gelmektedir.

XXE zafiyeti sayesinde sistemdeki hassas dosyalar okunabilir ve bazı özel durumlarda sistemde komut çalıştırılabilir.


Okuduğum bir çok kaynakta bu zafiyetin yeni olmadığını fakat Sosyal Medya devi olan Facebook'un sunucularında bulunmasıyla gündeme geldiğini gördüm. Devamında bu zafiyeti keşfeden Mohamed Ramadan adında bir Mısırlıydı. Bu güvenlik açığını tespit eden Mohamed'e 6.000$'dan fazla ödül verilmiş ve bunun karşılığında zafiyetin ayrıntılarını istemişler.

Ramazan; Facebook Kariyer kısmına cv dosyasını " .docx" uzantısında bir takım değişiklikler ile yüklemeye çalıştığını belirtmiş. Edindiği bilgide .docx dosyalarının sıkıştırılmış xml dosyası türünde olduğunu söylüyor. " .docx " dosyasını " 7zip" programıyla açtığını ve içindeki xml dosyalarına eriştiğini burada bir takım değişiklikler yaparak sayfaya iyi huylu kod ekledi. Kod, 15 dakika sonra python HTTP sunucusuna bağlandığını söyledi. Ayrıca bu olay Ramazan'ın Facebook şirketinden aldığı ilk olay de değildir. 2013 yılında da Ramzan; Andorid Messenger uygulamasında bir zafiyet bulmuştur.

Facebook şirketi bu hatayı çözdükten sonra, bu sefer de Brezilyalı bir araştırmacı; Facebook'un Şifremi unuttum kısmında XXE güvenlik açığı bulmuş ve şirket bu araştırmacıya da 33.500 Dolarlık bir ödül ödemiştir.


XXE Güvenlik Açıklarından Yararlanma

1- Dosyaları Geri Almak İçin XXE'yi Kötüye Kullanma
(Örneği yabancı bir kaynaktan kullandım. Aşağıda belirteceğim.)

Örneğin, bir alışveriş uygulamasının aşağıdaki XML'i sunucuya göndererek bir ürünün stok seviyesini kontrol ettiğinizi varsayalım.
Kod:

3301
Burada uygulama hiçbir XXE savunması yapmaz ve bu nedenle yararlanılması mümkündür.
Sunucunun /etc/passwd dosyasının içeriğini almak için ekleyeceğimiz kod;
" "

Kod:


&xxe;
Sonuç olarak;

DOCTYPE öğresi, sunucundan harici bir valığa başvurmak için SYSTEM anahtar sözcüğü kullanılarak eklendi ve ardından istediğimiz verilere ulaşmak için kullandığımız &xxe komutu.

Kullandığım kaynaklar;
Kod:
https://medium.com/@onehackman/explo...20can%20access.
https://talhacelik.com.tr/index.php/...y-xxe-attacks/
http://kasimfeke.com/xxe-xml-externa...tion-zafiyeti/
https://sibertehdit.com/xml-external...ies-saldirisi/
https://vvhack.org/t/xxe-xml-external-entity-nedir/275