Kurum ağında 10.20.30.72 IP adresindeki MS SQL veritabanındaki bir veritabanı kullanıcısına ait erişim bilgileri, “Test/Test” olarak elde edilmiş olsun. Bu kullanıcı hesabına ait sunucu rolü Public olduğu görülmektedir.
“Test” adlı veritabanı kullanıcı hesabı “sa” ve “sql_hesabi” adlı iki veritabanı kullanıcısının yetkileri ile işlem yapması gerektiği için, bu hesaba IMPERSONATE yetkileri verildiği (ve bu yetkinin geri alınmasının unutulduğu) varsayılsın.
Yetki verildikten sonra Securable sayfasında bu yetkinin alınmış olduğu görülmektedir.
Bu durum istismar edilerek IMPERSONATE yetkisi verilen kullanıcının hakları ele geçirildiğinde, “sa” ve “sql_hesabi” kullanıcısının hakları ile komut çalıştırılabilir. Veritabanındaki bu konfigürasyon hatasının istismarı için MSF mssql_escalate_execute_as modülü kullanılabilir. Bu amaçla, modül seçilir ve seçenekleri incelenir.
search mssql_escalate_execute_as
use auxiliary/admin/mssql/mssql_escalate_execute_as
show options
Modüle IP adresi, erişim için gerekli kimlik bilgisi verilerek modül seçenekleri ayarlanabilir.
set RHOST 10.20.30.72
set USERNAME Test
set PASSWORD Test
show options
Seçenekler ayarlandırıldıktan sonra modül çalıştırılabilir. Modül çalıştırıldığında mevcut kullanıcının sysadmin rolüne sahip olmadığı, ancak IMPERSONATE yetkisine sahip olduğu görülmektedir. Kimliğine bürünülebilecek (IMPERSONATE edilebilecek) kullanıcılar listelendiğinde ise, “sa” adlı kullanıcının sysadmin sunucu rolüne sahip olduğu görülmüş ve bu kullanıcı hakları ile “Test” kullanıcı hesabına da aynı rol verilmiştir.
Not: Bazı durumlarda, modülün birden fazla kere çalıştırılması gerekebilmektedir.
Böylece IMPERSONATE hakkı kötüye kullanılarak Public rolündeki kullanıcı hesabı sysadmin rolüne sahip olmuş olur.