XQuery Injection ?

XQuery Injection Nedir? Ne Değildir?

Hherkese merhabalar. Bu yazımda XQuery injection'tan bahsedeceğim. Az çok anlatmaya çalışacam. Başlayalım isterseniz;

 XQuery injection saldırıları bazen daha yaygın olan SQL enjeksiyon saldırıları için küçük kardeşi gibi düşünübiliriz. Neden öyle dediğimi soracak olursanız ikisininde injection olayı aynı kökten geliyor gibi düşünebiliriz. Ayrıca sömürü kodları da hemen hemen aynıdır. Sadece XQuery injection saldırıları yalnızca XML verileri için bir XPath sorgusu sırasında gerçekleşebilir. Bu nedenle, bunlar bazen kullanılan XPath Injection veya sadece XPath saldırıları olarak adlandırılır.

Web sitelerinin büyük bir kısmı, kullanıcı oturum açma kimlik bilgilerini tutma, müşteri bilgileri, kişisel kimlik bilgileri ve gizli veya hassas veriler gibi kritik işlevleri yerine getirmek için XML veritabanlarını kullanır ve bu da saldırganlar için XQuery injection saldırılarına başvurmalarına yol açar. Peki aklımıza gelen soru;

Saldırganlar bir XQuery Injection'u Nasıl Kullanır?

Özünde, bir XPath sorgusu, XML veritabanına hangi bilgilerin aranacağını söyleyen basit bir ifadedir. En basit örneklerden birinde, bir kullanıcı kaydının olup olmadığını kontrol etmek ve daha sonra giriş bilgilerini almak için kullanılır. Sorun şurada başlıyor, XPath sorgularının kullanıcı girişi bilgilerini içerdiğinden, hackerların, korunması gereken bilgileri döndürmek için sorguyu değiştirebilmeleri ile başlıyor.
Örneğin, oturum açma güvenliğini atlamaya çalışırken, bir saldırgan, tüm işlemi atlayan XPath sorgularının sonuna değişkenler ekleyebilir. Bir örnek şöyle göstereyim:

//Employee[UserName/text()='anyone' or 1=1 or 'a'='a' And Password/text()='doesnotmatter']

Burada, Kullanıcı Adı alanı, 1 = 1 veya a = a ifadesi nedeniyle herhangi bir kullanıcıyla eşleşmesi için yapılır. Parola alanı önemli olmaz çünkü sorgunun yalnızca ilk bölümünün doğru olması gerekiyor. Eğer doğru ise saldırganlar xquery olayını yapmış olur.

XQuery Injection Neden Tehlikelidir?

XQuery injection saldırılarının bu kadar tehlikeli olmasının birincil nedeni, saldırganların oturum açma ve hesap güvenliğini atlamasına izin vermeleridir. Uygulamanız savunmasızsa, saldırganlar bunu kullanacaktır. Hesap güvenliğinden ziyade, XQuery saldırıları veri dökümü için de kullanılabilir. Örneğin, bir saldırgan tüm kayıtları XML veritabanından kendine aktarabilir ya da kendi payloadlarla sisteme enjekte ederek sistemde yetki alabilir.
Peki akla gelen soru şu biz bu saldırılardan nasıl korunacağız?

XQuery Injection Saldırılarında Korunma

Benzer güvenlik açıklarında olduğu gibi, bir temel savunma sadece kullanıcı girişine bakmıyor. Her zaman kullanıcıların veritabanı sorguları yapıp yapmadığına yada kullanıcılara verilen yetkileri de göz önüne almak gerekiyor. Kullanıcılar uygulamalarınızda neler yapabilir? diye de düşünerek hareket etmek gerekiyor. Yani uygulamanızda ne kadar az yetki verirseniz o kadar güvenli olur. Ayrıca sql injection korunma yöntemlerinde olduğu gibi whitelist oluşturarak kullanıcılar için girebileceği girdiler sistemde tanımlanarak korunma sağlanabilir. Tabi tamamen durdurmak mümkün mü tartışılabilir ama en azından temel olarak saldırılardan bir nebze de olsa korunma sağlanabilir.

Bu yazıyı burda bitirelim. Uygulamalı olarak ilerde bir video ile anlatırım. Başka bir yazıda görüşmek üzere ;) 

Yorumlar

Bu blogdaki popüler yayınlar

Bazı JavaScript Kütüphaneleri Ve Zafiyetleri

NASA Reflected XSS Write Up

Herşey Bir Tırnakla Başladı