WEB | OWASP TOP 10 | XML Entity Injection
XML’in açılımı Extensible Markup Language’dir. Genişletilebilir İşaretleme dili anlamına gelir ve HTML’nin geliştiricisi tarafından oluşturulmuştur.
XML içerisindeki verilen parse edilirken çağırılan payloadın enjekte edilmesine XML Entity Injection saldırısı denilir.
Serinin devamı olarak application.security üzerinden XML Entity Injection zaafiyetini anlatmaya başlayalım. PeakFitness uygulaması üzerinde saldır
ganımız Bob zaafiyet aramaya başlıyor. Uygulamaya giriş yaparak devam ediyor.
giriş yaptıktan sonra açılan anasayfa ekranında
Yapılan spor aktivitelerini eşitlemek için kullanılan bi upload sayfası karşılıyor. ”.gpx” uzantısını kabul ettiğini görüyoruz.
”route.gpx” dosyasının içeriğini incelediğimizde XML ile
lokasyon bilgilerini içeren taglar bulunduğunu görüyoruz.
”route.gpx” seçtikten sonra Upload and Review e tıklayarak karşıya yüklüyoruz.
Gönderdiğimiz bilgilerin harita üzerinde işlendiğini görüyoruz.
Yüklediğimiz ”route.gpx” dosyasına müdahale ederek ”/etc/password” dosyasını okumamızı sağlayacak tagları ekliyoruz.
Manipule ettiğimiz XML dosyasını karşıya yüklüyoruz.
Saldırganımız XML Entity Injection açığını kullanarak ”/etc/password” dizininin altını okumayı başardı. Bu şekilde zaafiyeti sömürmüş olduk.
Zaafiyetin oluştuğu kaynak kodları incelediğimizde Java ile yazılan kodlarda DocumentBuilderFactory ile bir nesne oluşturuluyor.
External General Entities parametresi true olarak veriliyor. Bu XML Entity Injection açığına sebeb oluyor.
Fixlenmiş kaynak kodları incelediğimizde ilk altı çizili satırda DOCTYPE girilmesi bloklanıyor.Ardından External General Entities parametresi false olarak değiştirilerek açık ortadan kaldırılıyor.