XXE İNJECTİON NEDİR ?

Bu yazımızda xml external entity olarak bilinen xxe zafiyetinini ne olduğundan bahsedeceğiz.

İlk önce xml nedir onu anlatalım.

Xml (Extensible Markup Language) türkçe karşılığı genişletilebilir işaretleme dili olarak geçen hem makinelerin hem de insanların okuyabilecekleri belgeleri kodlamak için Wide Web Consortium(W3C) tarafından oluşturulan bir biçimlendirme dili olarak bilinmektedir.

XXE olarak bilinen xml external entity enjeksiyonu ise bu işaretleme dili kullanılarak her hangi bir saldırganın xml verilerini işlemesine dışarıdan müdahalede bulunmasına olanak tanıyan bir güvenlik açığıdır.Bu zafiyet genellikle saldırganın sistem dosyalarını görüntülemesine ve backdoor denilen yöntemlerle sisteme erişim sağlamasına neden olabilir.Aynı zamanda farklı saldırı türleri de (ssrf vb.) bu zafiyet sayesinde gerçekleştirilebilir.

XXE injection saldırı türleri olarak;

  • Ssrf (sunucu taraflı istek sahteciliği).
  • Dosya okuma.
  • Sisteme erişim.
  • Blind (kör) xxe.

saldırı türleri kullanılarak zafiyet sömürülebilir şimdi dilerseniz bu saldırı tekniklerin kısaca inceleyelim.,

XXE SALDIRI TÜRLERİ

Dosyaları Almak İçin Kullanılan XXE

Bu saldırı türü sistemde yer alan sunucu dosyalarına erişmek için kullanılan saldırı yöntemidir.

Bu saldırı için xml kodunu 2 şekilde manipüle etmeniz gerekmektedir:

  • Dosyanın yolunu içeren harici varlığı tanımlayan bir öğeyi(DOCTYPE)tanıtın veya düzenleyin.
  • Tanımlı harici varlığı kullanabilmek için response (yanıtta) döndürülen xml veri değerini düzenleyin.

Örnek olarak bir alışveriş uygulamasında aşağıdaki xml kodunu sunucuya göndererek ürünün stok miktarını kontrol ettiğini düşünelim:

<?xml version=”1.0″ encoding=”UTF-8″?> <stockCheck><productId>381</productId></stockCheck>

Uygulama XXE saldırılarına karşı herhangi bir koruma sağlamaz bu nedenle Linux sistemlerde yer alan “/etc/passwd” dosyasını XXE yükünde bir değişiklik yaparak gönderiyoruz ve uygulama bize dosyanın içeriğini eğer XXE zafiyeti bulunuyorsa çıktı olarak getiricektir.

<?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]> <stockCheck><productId>&xxe;</productId></stockCheck>

Yukarıda göndermiş olduğumuz kodda bir “DOCTYPE” değişkeni tanımladık ve bu tanımın içine zafiyeti sömürüp dosyayı okumamızı sağlayacak bir kod yerleştirdik sistemde xxe zafiyeti bulunduğu için bizlere dosyanın içeriğini çıktı olarak sundu.

Invalid product ID:

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

 

SSRF Saldırıları İçin Kullanılan XXE

Sunucu taraflı istek sahteciliği olarak geçen “ssrf” saldırısı xxe zafiyeti yoluyla kullanılabilmektedir.

Ssrf saldırısı için daha detaylı bir yazı için aşağıdaki linke tıklayabilirsiniz:

SSRF NEDİR

Bu, sunucu tarafındaki uygulamanın, sunucunun erişebildiği herhangi bir url’ye http isteklerinde bulunmasına neden olabileceği, potansiyel olarak ciddi bir güvenlik açığıdır.

XXE zafiyeti ile ssrf saldırısı gerçekleştirmek için hedef bir url seçmemiz ve bu url’i xml varlığı olarak tanımlamanız ardından tanımladığınız varlığı bir veri değişkeni içerisinde kullanarak uygulamanın döndürdüğü yanıtta yer alan url’den gelen yanıtı görüntüleyebilir ve böylece backend system (arka uç sistemi) ile iki yönlü etkileşim elde edebilirsiniz.Aksi halde sadece blind ssrf saldırıları gerçekleştirebileceksiniz ama yine de riskli sonuçlara yol açabilir.

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM “http://internal.vulnerable-website.com/”> ]>

Örnekte belirtilen kod,harici varlık sunucunun kuruluşunun altyapısı içerisindeki dahili sisteme bir http isteğinde bulunmasına neden olacaktır.

 

Blind XXE (Kör XXE)

Aslında xxe zafiyetinin bir çok örneği kör xxe’dir.Bu, uygulamanın yanıtlarında tanımlanmış herhangi bir harici varlığın değerlerini döndürmediği ve bu nedenle sunucu tarafındaki dosyaların doğrudan alınmasının mümkün olmadığı anlamına gelir.

Blind xxe güvenlik açıkları xxe zafiyetlerine göre zor tespit edilen ve gerekli teknik bilgi olmadan kullanılmayan bir saldırı çeşididir

Bazen güvenlik açıklarını bulmak ve sömürmek için alışılmışın dışından teknikler kullanılabilir ve veri çekme işlemlerinde bu tekniklerden yararlanabilirsiniz hatta bazen hata mesajlarında işinize yarar bilgileri açığa çıkarabilir ve xml ayrıştırma hatalarını tetikleyebilirsiniz.

—-

Yazılarımızdan anında haberdar olmak için Telegram kanalımıza abone olun: https://t.me/siberguvenlikwebtr

About The Author

Reply