Selam arkadaşlar
Bugün sizlerle XXE
yani XML External Entity
hakkında bilgi edinecek ve
nasıl sömürülür öğreteceğim.
Çok zevkli olacağından eminim haydi başlayalım.
XXE Enjeksiyonu Nedir?
Harici varlık enjeksiyonu diyebiliriz.
XML belgelerinin dış varlık özelliğinden kaynaklı bir açıktır.
verileri yapılandırması için kullanılan bir işaretleme dili
olarak nitelenebilir.
Özel varlıkları sıralamayı sağlar.
hackırların XML verilerinin işlemesine yardımcı olur.
uygulama sunucusundaki dosya sistemi
dosyalarını görüntüleyebilir.
uygulamanın uzandığı arka uç veya harici sistemlerden
herhangi birine bağlanabilir.
Nasıl Ortaya Çıkar?
Bazı üreticiler,
sunucu-tarayıcı bağlantısı için XML kullanırlar.
Bunu sağlayan uygulamalar,
Her zaman standart bir arşiv gibi,
Platform API'si kullanır.
Uygulamaca kullanılmayan özellikleri
bile desteklemesi ile oluşan bir açık denebilir.
DTD'nin dışından yüklenen özel bir
varlık türü olarak çalışır.
URL yada dosya yolu ile
içerik tanımlayabilme açısından dikkat çekicidir.
Bu işlemde kısaca,
dosyanın içeriğini içeren harici bir varlık tanımlanır
uygulamanın yanıtında bu varlık döndürülür.
URL üzerinden tanımlanarak SSRF saldırısıda
yapılabilir.
Bant dışı veri sızdırma yapılabilir.
Hata mesajları ile veri elde edilebilir.
Basitçe göstereceğim.
Öncelikle göstermek için bir lab açıyoruz.
gerçek sitelerdede deneyebilirsiniz.
denenen site bir E-Ticaret sitesi.
yaparken bir payload kullanacağız
kod aşağıdakidir.
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<stockCheck><productId>&xxe;</productId></stockCheck>
sitemiz yukarıdaki gibi.
burp suit arkada açık şekilde
check stock tuşuna basıyoruz.
ve karşımıza yazı çıkıyor.
burp suite açıp işlem olan bölüme giriyoruz.
ve repeater a gönderiyoruz.
ve alttaki bölüm açılıyor.
yukarıdaki sayfada aşağıya iniyoruz.
ve altta gördüğünüz gibi xml bölümünü görüyoruz.
bu bölümde XXE zafiyeti varmı denememiz lazım.
bunun için öncelikle açılış satırının altına;
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd">
yazmamız gerekiyor.
bu saldırı yüküdür ve dosyada &xxe; varlığını tanımlar
/etc/passwd ise bu varlığı productid içerisinde kullanır.
aşağıdaki gibi yapıştırın kodu.
sıradaki işlemimiz productid yazan yerlerin arasındaki rakamı silip &xxe; özelliğini çağırmamızdır.
Bu sayede tüm /etc/passwd dosyasının içeriğini görebiliriz.
ve başardık!
aşağıdaki görüntüyle karşılaşmanız lazım.
Evet arkadaşlar.
bugün sizlerle XXE açığı nedir ne işe yarar ve
nasıl sömürülür bunu öğrendik.
umarım faydalı olmuştur başka bir açıkta görüşmek üzere hoşçakalın.







