Daha önceden yayınladığım Microsoft SQL kullanarak komut çalıştırma script’inde bazı ufak düzenlemeler yaptım.
İşlevini yerine getirmek için xp_cmdshell stored procedure’ını kullandığını iletmiştim. Peki ya xp_cmdshell devre dışı bırakıldıysa veya hedef sunucu Microsoft SQL Server 2005 sürümüyse?

Bu durumda xp_cmdshell’i yeniden devreye alabilmek için aşağıdaki yöntemleri izleyebiliriz:

  1. Microsoft SQL Server 2005 sürümünde, güvenlik nedeniyle xp_cmdshell devre dışı olarak gelmektedir. Aktif hale getirebilmek için aşağıdaki sorgunun çalıştırılması yeterlidir:

    USE master
    GO
    EXEC sp_configure ‘show advanced options’, 1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sp_configure ‘xp_cmdshell’, 1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sp_configure ‘show advanced options’, 0
    GO

  2. Bir güvenlik önlemi olarak, xp_cmdshell stored procedure’ı veritabanı yöneticisi tarafından kaldırıldıysa (ki Microsoft’un bunu pek de önerdiği söylenemez), tanımlamak için xpsql70.dll dosyasının sistemde bulunması yeterli. Bunun için aşağıdaki SQL sorgusunun çalıştırılması gerekir:

    EXEC sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’

mssqlcmd‘nin yeni sürümünü yine aynı yerden indirebilirsiniz.

Not: mssqlcmd.py dosyasında bu komutlar comment olarak gerekli yerlere eklenmiştir. Gerektiğinde satır başlarındaki # karakteri silinerek çalışmaları sağlanabilir.
Uyarı: Yukarıda yazan SQL sorgularının çalıştırılması ile ilgili sorumluluk kabul edilmemektedir. Gerçek sistemler üzerinde çalışmadan önce, test sistemlerinde denemeler yapın.

Güvenlik denetimlerinde kullanmak üzere hazırladığım bu basit script, Microsoft SQL sunucusu çalışan bir sunucu üzerinde komut çalıştırmaya yarıyor.
Bu işlevi yerine getirmek için xp_cmdshell stored procedure’ını kullanıyor. Zayıf veritabanı yöneticisi şifresi tespit edildiğinde kullanılabilir. (Örneğin ‘sa’ hesabı ve boş şifre)

mssqlcmd.py dosyasına buradan ulaşabilirsiniz.
Python ile yazılmıştır. pymssql kütüphanesine ihtiyaç duymaktadır.