Lightweight Directory Access Protocol ( Hafifletilmiş Dizin Erişim Protokolü): LDAP

Yazar: Övgü Kaya

LDAP, dizin hizmetleri için kullanılan bir protokoldür. Bir LDAP dizin sunucusu, dizindeki kayıtları saklar ve bu kayıtları arama, ekleme, güncelleme ve silme işlemleri yapmak için bir arabirim sağlar. Birçok web uygulaması, kullanıcıların kimlik doğrulama bilgilerini doğrulamak için LDAP dizinlerine erişir. Active Directory de oluşturulan herhangi bir Nesne LDAP ta kayıt altına alınır. LDAP protokolü TCP/IP protokolünü kullandığından dizinlere web üzerinden erişim imkanı sağlamaktadır.

  • LDAP isimlendirme standardında belli tanımlamalar vardır. Bunlar :

    DC (Domain Component) : Active Directory yapısında oluşturulan bütün domainler DC ile tanımlanır.

    OU (Organizational Unit) : Active Directory yapısında oluşturulan bütün ornagizational unitler OU ile tanımlanır.

    CN (Common Name) : Active Directory yapısında oluşturulan kullanıcı, bilgisayar, printer vb. gibi nesneler CN ile tanımlanır.

    LDAP Injection Nedir?

    LDAP Injection, kullanıcı girdisine dayalı olarak LDAP ifadeleri oluşturan web tabanlı uygulamalardan yararlanmak için kullanılan bir saldırıdır. Bir uygulama kullanıcı girişini düzgün bir şekilde temizleyemediğinde, yerel bir Proxy kullanarak LDAP ifadelerini değiştirmek mümkündür. Bu, yetkisiz sorgulara izin verilmesi ve LDAP ağacında içerik değişikliği gibi rastgele komutların yürütülmesine neden olabilir.

    LDAP, özel karakterlerin (örneğin köşeli ayraçlar, yıldız işaretleri, ve işaretleri veya tırnak işaretleri) kullanımını içeren yüklemlerden oluşturulan sorguları kullanır. Bunlar gibi karakterler, sorgunun anlamını kontrol eder; bu nedenle, temel dizinden alınan nesnelerin türünü ve sayısını etkiler. Saldırgan bu kontrol karakterlerini içeren bir girdi gönderebilirse, sorguyu değiştirebilir ve amaçlanan davranışı değiştirebilir.

    LDAP İnjection Nasıl Gerçekleşir?

    Örnek bir LDAP sorgusu aşağıdaki gibidir:

     (&(objectClass=person)(uid=ovgu)(userPassword=sifre))

    Bu sorgu kişinin kimlik doğrulama bilgilerini (kullanıcı adı “ovgu” ve şifre “sifre”) doğrular. Bir saldırgan, web uygulamasına kötü amaçlı bir girdi göndererek bu sorguyu manipüle edebilir.

    Örneğin, bir saldırgan aşağıdaki gibi bir girdi gönderebilir:

    *)(uid=*))(|(uid=*

    Bu girdi, LDAP sorgusunu aşağıdaki gibi manipüle eder:

    (&(objectClass=kullanici)(*)(uid=*))(|(uid=*)(userPassword=*))

    Bu sorgu, LDAP dizinindeki tüm kullanıcıların kimlik doğrulama bilgilerini doğrular. Saldırgan, bu saldırı yöntemiyle hedef sistemin LDAP dizinindeki tüm kullanıcıların kimlik doğrulama bilgilerine erişebilir.

    Eğer LDAP sorgusu sonuçları görüntülüyorsa daha fazla özellik görüntülenmesi için enjeksiyon yapılması mümkündür.

    <LDAP://ldapsunucusu>;(givenName=Ali);cn,telephoneNumber,department

     Örneğin yukarıdaki sorguda arama filtre kriteri kullanıcı girdisi kullanılarak oluşturuluyorsa aşağıdaki girdi:

    ovgu);mail,cn;

    şu sorgu ifadesinin oluşmasına neden olur:

    <LDAP://ldapsunucusu>;(givenName=ovgu);mail,cn;);cn,telephoneNumber,department

    Bu şekilde ek olarak “mail” özelliğinin bilgisi de görüntülenmiş olur. Ayrıca “cn;);cn” başlıklı boş bir kolon oluşur. LDAP sorgularında özellikler (attributes) virgülle ayrıldığından iki virgül arasındaki ifadeler özellik ismi olarak algılanır. Active Directory mevcut olmayan özellikler istendiğinde hata verir, ancak özellik ismi geçerli bir isim olup da noktalı virgülle takip edilirse bunu tolere eder. Bu yüzden enjekte edilen metnin sonunda “cn;” girilir.

    Ayrıca sorgu filtresi olarak “*” işareti “wildcard” (Wildcards yani joker karakterler, belirli tekrarlanır durumların (işlem, ifade vb.) tek seferde tanımlanmasını sağlayan özel karakterler ) anlamına gelmekte olup “ovgu” yerine “*” kullanılsaydı tüm kayıtlar görüntülenebilirdi.

    LDAP İnjection Nasıl Tespit Edilir?

    1-Kullanıcıların kimlik doğrulama bilgilerini gönderdikleri formların nasıl işlendiği ve LDAP sorgularının nasıl oluşturulduğu incelenmelidir. Bu inceleme, web uygulamasının kaynak kodunun veya JavaScript dosyalarının incelenmesi yoluyla yapılabilir.

    2- Web uygulamasına kötü amaçlı girdiler göndererek LDAP sorgularının nasıl tepki verdiği gözlemlenebilir. Örneğin, kullanıcı adı veya şifre alanlarına kötü amaçlı kodlar gönderilebilir ve ardından gönderilen kodların LDAP sorgularına nasıl yansıdığı izlenebilir. Bu testler, bir web tarayıcısı aracılığıyla manuel olarak yapılabilir veya otomatik test araçları kullanılarak otomatikleştirilebilir.

    3- Web uygulamasının LDAP sorgularının nasıl oluşturulduğu ve gönderildiği izlenebilir. Bu izleme, bir ağ trafik analizi aracı kullanılarak yapılabilir. Bu tür araçlar, web uygulaması ile LDAP sunucusu arasındaki trafiği izleyerek, gönderilen LDAP sorgularının içeriğini ve yapılarını görüntüleyebilir.

    Sonuç olarak, LDAP Injection, web uygulamalarındaki önemli bir güvenlik açığıdır. Bu açık, bir web uygulamasındaki doğrulama sürecinin doğru bir şekilde çalışmaması durumunda meydana gelir. Web uygulamalarının doğru bir şekilde doğrulama yaptığından emin olmak için düzenli olarak test edilmeleri ve güvenlik açıklarının tespit edilmesi önemlidir. Bu tür testler, manuel olarak veya otomatik test araçları kullanılarak yapılabilir.

    LDAP İnjection İçin Çözüm Önerisi

    1- Girdi Alanlarının Parametrelere Atanması: Bellek sorgularında veya sistem komutlarında kullanıcı girişlerini doğrudan birleştirmek yerine parametreli sorguları kullanın. Bu, girişleri güvenli bir şekilde işlemek ve kötü niyetli kod yöneticiliğini engellemek için önemlidir.

    2- Girdi Doğrulama: Kullanıcının girdiğini doğrulayın ve gereksiz karakterleri veya potansiyel kod kullanımını engellemek için filtreleyin.

    3- Giriş doğrulamasını zorunlu kılın: Güvenilmeyen girişi LDAP sorgularına dahil etmeden önce, girişin izin verilen diziler veya karakterlerden oluşan bir tercih listesine göre doğrulanması gerekir. Girdi daha önce istemci tarafında doğrulanmış olsa bile bu doğrulama her zaman sunucu tarafında yapılmalıdır.

    4- Kodlama ile girişten kaçış: Kullanıcı tarafından kontrol edilen giriş dizelerinden, girişteki herhangi bir kontrol karakterinin LDAP arama filtresinin amaçlanan anlamını değiştirmeyecek şekilde kaçının. Örneğin, bir Java uygulamasında, bir LDAP sorgusundaki meta karakterler kaçış karakterleri olarak ters eğik çizgilerle hazırlanabilir. Bu yöntemle, güvenilmeyen girişler, LDAP yüklemleri olarak değil, hazır bilgi dizesi değerleri olarak bir arama filtresine eklenir.

    5-Dizin yetkilendirmesini güçlendirin: Bu savunma tekniği, en az ayrıcalık ilkesini kullanarak herhangi bir enjeksiyon girişiminin etkisini en aza indirmeyi amaçlamaktadır. Bir uygulamada dizini bağlamak için kullanılan LDAP hesabının kısıtlı erişimi olmalıdır. Bu yaklaşımla, LDAP sunucusuna karşı yalnızca yetkili LDAP sorguları yürütülebilir.

    https://medium.com/databulls/owasp-top-10-a1-injection-4bc3ddc77b36

    https://learn.snyk.io/lesson/ldap-injection/

    https://stackoverflow.com/questions/18756688/what-are-cn-ou-dc-in-an-ldap-search

    https://1517081779-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2Fgit-blob-a58ea2462cf2b98a868750b068a00fa32ccb807b%2FEN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf?alt=media

    http://padre.web.elte.hu/ldap.html

    https://medium.com/@salihaker/ldap-lightweight-directory-access-protocol-d3d33c63ddeb

    https://book.hacktricks.xyz/pentesting-web/ldap-injection

    https://www.synopsys.com/glossary/what-is-ldap-injection.html

    http://blog.btrisk.com/2015/03/Web-Uygulama-Analizi-LDAP-Enjeksiyonu.html

İlgili Yazılar

MongoDB Güvenlik Açığı CVE-2025-14847

CVE-2025-14847, siber güvenlik dünyasında popülerleşen adıyla "MongoBleed", MongoDB Server'da Aralık 2025'te keşfedilen ve Heartbleed zafiyetine benzerliğiyle dikkat çeken kritik bir...
velociraptor

Velociraptor

Velociraptor, siber güvenlik dünyasında "Dijital Adli Bilişim" (Digital Forensics) ve "Olay Müdahale" (Incident Response) süreçlerini otomatize eden, Google mühendisleri tarafından...

DİJİTAL DÜNYAYA KARŞI DİJİTAL SAVUNMA! : BİLGİ İLETİŞİM GÜVENLİĞİ DENETİMİ

Yazar: Ebru ARSLANAY

Günümüzde kurumların en kritik varlıklarından biri, sahip oldukları bilgi ve dijital veridir. Bu nedenle bilgi güvenliği; sadece teknik...