HTTP Başlık Analizi

Web sunucularının vermiş olduğu HTTP başlıkları incelenerek; hedef web sunucusu, uygulama altyapısı, yük dengeleme cihazları, iç IP yapılandırması gibi bir çok bilgiye ulaşılabilir. Bu bilgiler güvenlik denetimlerinde, yapılacak olan diğer saldırıları destekleme amaçlı kullanılabilmektedir.

Web sunucusunun HTTP GET, HEAD, POST, OPTIONS isteklerine verdiği yanıtlar başta olmak üzere, TRACE, CONNECT, PUT, DELETE ve ek modüllerle aktif hale gelen birden fazla isteğe verdiği yanıtlardan çeşitli bilgiler elde edebiliriz [1]. Lab ortamında fuzzing yöntemleriyle bu isteklerin belirli bölümleri değiştirilerek, web sunucusu zaafiyet analizi de gerçekleştirilebilir.

Read the rest of this entry »

Penetrasyon Testlerinde Düşülebilecek Hatalar

3-4 Haziran 2011’de Bilgi Üniversitesi Dolapdere Kampüsünde gerçekleşen, İstanbul Bilgi Güvenliği Konferansı IstSec’te yaptığım sunumu aşağıda bulabilirsiniz.

Penetrasyon Testlerinde Düşülebilecek Hatalar, zaman içerisinde tecrübeyle edinilmiş bilgi birikiminden oluşan penetrasyon testi ipuçlarını içeriyor. Amacım profesyonel olarak penetasyon testi yapan veya bu işte henüz yeterince tecrübe kazanmamış kişilere ipuçları vererek belirli noktalarda kötü tecrübe yaşamalarını önlemek ve genel denetim kalitesini arttırmaktı.

Tabi ki sunum 45 dakikaya sığabilecek temel noktaları içeriyor. Bir kısmı bir çok kişi tarafından bilinse de, her seviyeden katılımcının kendisine bir şeyler kattığını duymak benim için sevindiriciydi.

Gelen herkese teşekkür ederim.

Sunumu buradan indirebilirsiniz.

Web Uygulamalarında Sık Karşılaşılan Güvenlik Açıkları

30 Nisan’da gerçekleşen Web Uygulama Güvenliği konulu NetSec Topluluk Buluşmasında yaptığım sunum dosyası aşağıda bulunabilir.

2010 yılında denetlenen 100’ün üzerinde özel geliştirilmiş web uygulamasında en sık karşılaşılan güvenlik problemleri bu şekildeydi. Ayrıca kategori bazında, eskiden ne tip durumlarla karşılaştığımız ve günümüzde bunun nasıl değiştiği de konuşuldu.

İstatistik detaylarında o kategoriye ait güvenlik açıklarının alt detayları, en sık karşılaşılandan daha az karşılaşılana göre sıralandı. Sunuma biraz hareket katmak için denetimler sırasında karşılaşılan ilginç güvenlik problemlerinden de bazıları sözlü olarak anlatıldı, bazılarıysa özel oluşturulmuş gerçeğe benzer örnek ekran görüntüleriyle açıklandı.

Bu istatistikler uğraştıran bir çalışmanın sonunda oluşturuldu. İstatistikler güvenlik açığının hedef uygulamada var olup olmadığına göre değerlendirildi. Örneğin XPath Injection denetlenen uygulamada var veya yok olarak değerlendirildi. 3 noktada XPath Injection vardır diye istatistiklere alınmadı.

Buna göre düşündüğünüzde SQL’e Sızma(SQL Injection) ortalama 100 uygulamanın 29’unda karşımıza çıkmıştır diye düşünebilirsiniz. O 29 uygulamanın kaç noktasında SQL Injection vardır bilgisi bu istatistiklerde görülmüyor.

Yurt dışında otomatik denetim yapan bazı firmalar, veritabanından direk bu istatistikleri sağlayabiliyorlar. Ben de ileride daha detaylı istatistikler sağlamak üzere raporlama yazılımlarını değiştirmeyi düşünüyorum.

Katılan herkese teşekkür ederim.

Sunumu indirmek için tıklayınız.

AIX Sistemlerde Parola Kirma

Normal bir kullanıcı olarak ele geçirdiğiniz veya /etc/passwd dosyasını okuyabildiğiniz AIX sistemlerde, sisteme giriş yapma yetkisi olan kullanıcıları tahmin/tespit edebilirsiniz.

root olarak ele geçirdiğiniz AIX sistemlerin parolalarını, John the Ripper yazılımını kullanarak kırabilirsiniz. Bu bize, deneme-yanılma saldırısıyla(brute-force) çok zaman kaybetmeden, komşu sistemlere gürültüsüz şekilde erişebilmemizi sağlayabilir.

AIX sistemlerdeki bazı ufak farklılıkları, /etc/passwd ve /etc/security/passwd dosyalarındaki detayları bu yazıda özetlemeye çalıştım.

Read the rest of this entry »

Web sunucunuz iç IP adresini ele veriyor mu?

Bazı web sunucuları, yapılan isteklere verdikleri yanıtlarda kendi iç IP adreslerini açığa çıkartmaktadır.

Yapılan özel bir HTTP GET isteği sonucunda, hedef web servisi “3XX Object Moved” HTTP hata mesajı yanıtı ile birlikte sunucu iç IP adresini veya makina adını açığa çıkartabilir.

Bu güvenlik problemini kontrol eden bir yazılım hazırladım. Internal IP Address Disclosure Scanner yazılımını buradan indirerek kendi sistemlerinizi test edebilirsiniz.

Örnek Kullanım ve Problemin Giderilmesi
Read the rest of this entry »

mssqlquery – Microsoft SQL sorgu yazılımı

Platform bağımsız MSSQL sorguları yapabileceğiniz ufak bir script hazırlamıştım. Temel amacım güvenlik denetimlerinde zayıf şifreye sahip Microsoft SQL veritabanlarında, Linux üzerinden belirli sorgular çalıştırabilmekti.
SQL Query Analyzer vb yazılımların bulunmadığı durumlarda basit bir osql, isql alternatifi olarak da kullanılabilir.

Microsoft SQL query yazılımına buradan ulaşabilirsiniz. Python ile yazılmıştır. pymssql kütüphanesine ihtiyaç duymaktadır.

Örnek kullanım:

$ ./mssqlquery.py -s 192.168.0.14 -u sa
Enter password for sa:
Connected to 192.168.0.14!
mssqlquery> select name from sysdatabases
master
tempdb
model
msdb
HR
CRM
mssqlquery> select @@version
Microsoft SQL Server 2008 (SP2) – 10.0.4000.0 (Intel X86)
Sep 16 2010 20:09:22
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Evaluation Edition on Windows NT 6.0 (Build 6002: Service Pack 2)
mssqlquery>

Bahaneyle mssqlcmd yazılımını da güncelledim. Microsoft SQL brute-force yazılımı yeni pymssql kütüphanesiyle çalışmıyor. Zaten bu işi gayet iyi yapan birden fazla yazılım olduğu için pek ihtiyaç duyulmayacağını tahmin ediyorum.

Windows Komut Satırı Kılavuzu (Denetim Yapanlar İçin)

Güvenlik denetimi yapanlar için bir Windows komut satırı kılavuzu hazırladım. Aşağıdaki komutların tümünün özelliği interaktif komut olmamalarıdır. (Uğraştım bir shell elde ettim, bir komutla işleri elime yüzüme bulaştırmayayım modu)

Bu kılavuz aşağıdaki bölümlere ayrılmıştır:

  • Temel Komutlar
  • Dosya Oluşturma ve Düzenleme
  • Ele Geçirilen Sistemin Analizi
  • Ağ Servisleri ve Firewall Analizi
  • İşlemler ve Çalışan Servisler
  • Registry Erişimi ve Düzenleme
  • Kullanıcı/Grup Analizi ve Kullanıcı Ekleme
  • Komşu Hedeflerin Keşfi
  • Yeni Sürümlerde Paket Yönetimi

Read the rest of this entry »

mssqlcmd – Yeni sürüm duyurusu ve xp_cmdshell’i aktif hale getirme

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.

mssqlbf – Microsoft SQL brute force yazılımı

Hazır konu Microsoft SQL’den açılmışken, yine güvenlik denetimlerinde zayıf veritabanı şifrelerini tespit etmede kullanılabilecek bir script hazırladım.

Basit bir şekilde, username ve password wordlist kullanarak, şifre deneme-yanılma (brute force) saldırısı yapabiliyor.
Daha sonradan kullanabilmek için, bulduğu kullanıcı adı ve şifreleri bir metin dosyasında arşivliyor.
Threading desteği sayesinde aynı anda birden fazla kullanıcı adı/şifre kombinasyonu deneyerek işlemi büyük oranda hızlandırabilir. Varsayılan maksimum thread sayısını 5 olarak ayarladım. Script içerisinden kolayca değiştirilebilir.

Microsoft SQL Brute Force yazılımına buradan ulaşabilirsiniz.
Python ile yazılmıştır. pymssql kütüphanesine ihtiyaç duymaktadır.

mssqlcmd – Microsoft SQL kullanarak karşı sunucuda komut çalıştırı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.