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

By Elif Bensu K.
2 min read
ESC3 AD CS hizmetinde Certificate Request Agent Extended Key Usage (EKU) yanlış yapılandırılması sonucu ortaya çıkan 2 aşamalı bir yetki yükseltme süreci içeren bir zafiyettir.
ESC2 mantığını benzer ama ESC3'te 2 şablon zincirleme kullanılır.
Certificate Request Agent EKU'su nedir?
AD CS'de bir sertifikanın başka bir kullanıcı veya cihaz adına (on-behalf-of) sertifika talep etmesini sağlayan özel bir EKU yetkisidir.
ESC3 zafiyetinin oluşması için gerekenler:
İlk olarak ilk şablondan Enrollment Agent sertifikası almamız gereklidir ki daha sonra ikinci gideceğimiz şablon bize Administrator adına sertifikayı verebilsin.
İlk şablonda:
- EKU alanında Certificate Request Agent tanımlıdır. Yani düşük yetkili kullanıcılar bu şablondan sertifika talebinde bulunabilir.
- Düşük yetkili kullanıcı veya grubun şablon üzerinde Enrollment hakkında sahip olmalıdır.
- Manager approval disable olmalıdır ki yönetici onayı istenmesin
- Authorized Signature disable olmalıdır ki yetkili kişi imzasına gerek duyulmadan sertifika alınabilsin
İkinci şablonda:
- EKU olarak Client Authentication, SmartCard Logon, PKINIT Authentication veya Any Purpose'dan birinin olması gereklidir.
- Authorized Signature sayısı 1 olmalı ve bu Certificate Request Agent imzası olarak kabul edilmelidir.
- Manager Approval disable olmalıdır
- Saldırganın bu şablon üzerinde doğrudan bir Enroll yetkisine sahip olmasına gerek yoktur.
LAB ortamının hazırlanması:
certtmpl.msccerttmpl.msckısmından SmartCard Logon şablonunu duplicate ederek ve General kısımından isim olarak Example_ESC3 adlı bir template oluşturalım.
Ardına Extensions kısmından → Edit diyerek → Certificate Request Agent EKU'sunu ekleyelim bu sırada diğer tanımlı olan EKU'ları da siliyorum.
Security kısmından → Domain Userları için Enroll seçeneğini aktifleştiriyorum.
Ardına bu template'i publish ediyorum.
certsrv.msccertsrv.mscile CA kısmını açıp Certificate Templates sağ tık oradan New → Certificate Template to Issue ile publish işlemini gerçekleştirelim.
Nasıl exploit edilir?
Ardına kali makineme geçerek bir önceki yazılarımdaki gibi certipy kullanıyorum.
Bu sefer Client Authentication aktif olmamasına rağmen ya da Supply in the Request gibi SAN değerini random verilmesine izin verilen zafiyetler olmadan sadece Certificate Request Agent aktif olmasıyla birlikte düşük yetkili bir kullanıcı olmamıza rağmen sertifika talebinde bulunduk ardına,Ş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. Bu sefer Authorized Signature kısmında şablonumuzda 1 imza var ve o da Certificate Request Agent adına imzaların kabul edilmesi ve bu sayede User template'inden administrator olarak sertifikamızı alabiliyoruz.
User Template'i içerisinde Client Authentication EKU'su default olarak tanımlı olduğu için administrator adına bu sertifika ile authenticate işlemi de gerçekleştirebiliyoruz ve diğer senaryolarda olduğu gibi bunda da NTLM hash ve TGT elde etmiş oluyoruz.
Not : Bu yazıda paylaştıklarımın hepsi eğitim amaçlıdır. Yetkiniz olmadığı ortamlarda kullanmayınız.