Neler Yeni

XML External Entity Injection (XXE)

Katılım
22 Nis 2020
Mesajlar
86
Tepkime puanı
23
Puanları
150
XXE Explanation and Exploitation

S.A. / A.S. değerli DH ailesi bu makalemizde sizlere XXE Injection ve Exploit etme hakkında bilgi vermeye çalışacağım. XXE (XML Dış Varlık saldırısı), artık Facebook, PayPal, vb. büyük web uygulamalarında giderek daha fazla bulunmakta ve raporlanmaktadır. XXE yıllardır sistemlerde olmasına rağmen bilinmediğinden hakettiği kadar ilgi görmedi. Şimdi biz bu zaafiyeti ve nasıl kullanıldığını daha yakından göreceğiz.

7a1RvP.png


XML Dış Varlıklar (External Entities) Nedir?

XML’in farkında olmayan biri için, verileri tanımlamak için kullanılan bir şey olarak düşünebilirsiniz. Böylece, farklı teknolojiler üzerinde çalışan iki sistem, XML kullanarak birbirleriyle iletişim kurabilir ve veri alışverişinde bulunabilir. Örneğin, aşağıda çalışanı tanımlayan örnek bir XML belgesi bulunmaktadır. ’İsim’ ’maaş’ ve ’adres’ XML öğeleri olarak adlandırılır.

16ZzLb.png


Şimdi bu XML belgeleri, bir sistem tanımlayıcısı kullanılarak tanımlanan ve bir DOCTYPE başlığı içinde bulunan ’entity’ adı verilen bir şey içerebilir. Bu entity’ler yerel veya uzak içeriğe erişebilir. Örneğin, aşağıda XML extity’ler içeren örnek bir XML belgesi bulunmaktadır.

V9z4MR.png


Yukarıdaki kodda, ”entityex” harici varlığı (external entity) file:///etc/passwd değeri ile bildirilir. XML ayrıştırma sırasında, bu varlık ilgili değerle değiştirilecektir. SYSTEM anahtar kelimesinin kullanılması, ayrıştırıcıya, varlık değerinin aşağıdaki URLden okunması gerektiğini bildirir.
XML varlıklarında, ’SYSTEM’ anahtar sözcüğü bir XML ayrıştırıcısının bir URI’den verileri okumasına neden olur ve belgede değiştirilmesine izin verir. Böylece, saldırgan varlık yoluyla kendi değerlerini gönderebilir ve uygulamanın göstermesini sağlayabilir. Basit bir deyişle, bir saldırgan XML ayrıştırıcısını, sistemde veya herhangi bir uzak sistemde bir dosya olabilecek kendisi tarafından belirtilen kaynağa erişmeye zorlar. Örneğin, aşağıdaki kod bu sistemde mevcut olan klasörü / dosyayı alır ve kullanıcıya gösterir.

oXNB6q.png


XML Nedir?

XML nedir şimdi bunun tanımına bi bakalım önce. XML (Extensible Markup Language) kelimelerinin kısaltılmış halidir. Bilgilerinizi daha doğru, esnek ve uyarlanabilir bir şekilde tanımlamanıza izin vererek Web’in işlevselliğini geliştirir. verileri depolamak ve aktarmak için yazılımdan ve donanımdan bağımsız bir araçtır. Genişletilebilir çünkü HTML gibi sabit bir format değildir, XML bir meta dildir. World Wide Web Consortium’un (W3C) resmi bir önerisi olan XML kodu , Köprü Metni Biçimlendirme Dili’ne (HTML) benzer. Hem XML hem de HTML, sayfa veya dosya içeriğini tanımlamak için işaretleme sembolleri içerir . HTML kodu, Web sayfası içeriğini (çoğunlukla metin ve grafik görüntüleri) yalnızca nasıl görüntüleneceği ve etkileşime gireceği konusunda tanımlar. XML verileri, kendi kendini tanımlayan veya kendi tanımlayan olarak bilinir; bu, verilerin yapısının verilerle gömülü olduğu anlamına gelir; böylece veriler geldiğinde, verileri depolamak için yapıyı önceden oluşturmaya gerek yoktur; XML içerisinde dinamik olarak anlaşılır. XML formatı, bilgileri tutarlı bir şekilde paylaşmak isteyen herhangi bir kişi veya grup ya da şirket tarafından kullanılabilir. XML aslında , bir belge yapısı oluşturma standardı olan Standart Genelleştirilmiş İşaretleme Dilinin (SGML) daha basit ve kullanımı kolay bir alt kümesidir.
Bir XML belgesinin temel yapı taşı, etiketlerle tanımlanan bir öğedir. Bir elemanın başlangıç #8203; #8203;ve bitiş etiketi vardır. Bir XML belgesindeki tüm öğeler, kök öğe olarak bilinen en dıştaki öğede bulunur. XML ayrıca iç içe geçmiş öğeleri veya öğeler içindeki öğeleri de destekleyebilir . Bu yetenek, XML’in hiyerarşik yapıları desteklemesini sağlar. Öğe adları, öğenin içeriğini, yapı ise öğeler arasındaki ilişkiyi tanımlar.

6av3GP.png


XMLin Kullanıldığı Alanlar

XML veri alışverişinin yapıldığı sistemlerde çoğunlukla kullanılmaktadır. Unicode desteği bulunmaktadır ve bu özellik çoğu alfabedeki karakter desteğini sunmaktadır. Böylelikle evrensel bir uygulama da tercih edilebilir. Veri paylaşımlarında veri tabanı sistemleri farklılıklar gösterebilir ve bunların paylaşımları zor olabilir. Hele birde verilerin büyüklüğü devasa ise (big data ) XML in text tabanlı olması ve kolay anlaşılabilir olması avantaj sağlar. Bu açıdan Busines To Busines (B2B) uygulamalarında büyük avantaj sağlamaktadır. Kısaca özetlemek istersek verinin taşınması ve saklanması gerekilen uygulamalarda XML kullanımı yaygındır.

DTD Nedir?

Document Type Declaration kelimelerinden oluşturulmuştur. Belge Türü Tanımı (DTD), SGML’nin bir alt kümesi olan Standart Genelleştirilmiş İşaretleme Dili (SGML) veya Genişletilebilir İşaretleme Dili (XML) kurallarını izleyen tanımları veya ifadeleri tanımlayan ve sınırlayan belirli bir belgedir. DTD’ler, XML belgelerinin yapısının uygun XML dilinin gramer kurallarına göre kelime ve geçerliliğini kontrol eder. Bir XML DTD, belgenin içinde belirtilebilir veya ayrı bir belgede tutulabilir ve daha sonra ayrı olarak kullanılabilir.

JZzPGQ.png


XXE Injection Nedir ?

OWASP’ın tanımına göre XML external entity saldırısı, XML girişini ayrıştıran bir uygulamaya karşı yapılan bir saldırı türüdür. Bu saldırı, harici bir varlığa başvuru içeren XML girişi zayıf yapılandırılmış bir XML ayrıştırıcı tarafından işlendiğinde gerçekleşir. Bu saldırı, gizli verilerin ifşa edilmesine(disclosure of confidential data), hizmet reddine(DoS), sunucu tarafı talebinde sahtecilik yapılmasına (SSRF), çözümleyicinin bulunduğu makinenin port taramasına ve diğer sistem etkilerine yol açabilir.
XML 1.0 standardı, bir XML belgesinin yapısını tanımlar. Standart, bir tür depolama birimi olan varlık (entity) adı verilen bir kavramı tanımlar. Birkaç farklı entity türü vardır external general/parameter gibi. Sistem tanımlayıcısının, entitiy işlenirken XML işlemcisi tarafından yönlendirilebilen (erişilebilen) bir URL 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 yönlendirilen içeriklerle değiştirir. Sistem tanımlayıcısı kusurlu veriler içeriyorsa ve XML işlemcisi bu kusurlu verileri geçersiz kılıyorsa, XML işlemcisi normalde uygulama tarafından erişilmeyen gizli bilgileri ifşa edebilir. Saldırılar, şifreler veya özel kullanıcı verileri gibi hassas veriler içerebilen 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ı, başka iç sistemlere yönlendirmek için, muhtemelen başkalarının içeriğini http (s) istekleri yoluyla açıklamak veya korunmayan herhangi bir dahili hizmete CSRF saldırısı başlatmak için kullanabilir. Bazı durumlarda, savunmasız bir XML işlemci kitaplığı istemci tarafında bellek bozulması sorunları, muhtemelen uygulama hesabı altında rasgele kod yürütülmesine izin veren kötü amaçlı bir URL’yi reddetmek suretiyle kullanılabilir. Diğer saldırılar, veri döndürmeyi durduramayacak yerel kaynaklara erişebilir ve çok fazla iş parçacığı veya işlem yayınlanmadığında muhtemelen uygulama kullanılabilirliğini etkileyebilir.

36lyYp.png


Şimdi yukarıdaki OWASP tanımından ne anladık biraz daha sadeleştirelim. XXE zafiyeti ile sistemimizdeki hassas dosyalar okunabilir ve bazı özel durumlarda sistemde komut çalıştırılabilir. Bunların ne denli önemli olduğu aşikardır. Eski bir örnek verecek olursak My Fullxml website anahtar kelimesini google da arattığımızda karşımıza gelen sonuçlardan /db/member.xml uzantısına sahip olan sitelerde admin password bilgileri bulunabiliyordu. Böylelikle sitede admin yetkisi ile giriş yapılabilmekteydi. Bir örnek ile xxe injection inceleyelim;

7aWoZr.png


Yukarıdaki resimde verilen örnek üzerinden incelememizi yapalım. İlk olarak taglere göz atalım. Name, descr*iption ve openmrsVersion tagleri arasında xxe1 , xxe2 , xxe3 verileri tanımlanmış. Bakıldığında bir tehlike arz etmemektedir. Fakat !ENTITY ile başlayan taglere baktığımızda sistem dosyalarına erişebildiğimiz görülmektedir. Örneğin xxe1 verisi ile /etc/passwd dosyasına erişilmiştir. Bu gibi hassas verilere ulaşmak çok tehlikelidir. Bunun gibi örnekler çoğaltılabilir. Uygulama kısmında bu atak türü daha iyi anlaşılabilir.

Etkileri Nelerdir?

1-) File Disclosure
2-) Remote Command Execution (RCE)
3-) Server Side Request Forgery (SSRF)
4-) Client Side Request Forgery (CSRF)
5-) Local Port Scanning
6-) Internal Network Hosts Scan
 

Konuyu görüntüleyen kullanıcılar

Üst