Akademik Bilişim 2015 - Web Uygulama Güvenliği ve Sızma Testleri 1. Gün


        Bu yıl Akademik Bilişime Anadolu Üniversitesi (Eskişehir) ev sahipliği yapıyor. Biz de meslektaşım Alpaslan Öztürk ile birlikte Web Uygulama Güvenliği ve Sızma Testi kursunda dört günlük bir eğitime dahil olduk.

        Kursun eğitmenleri; Ayşe Bilge Gündüz, Mehmet İnce ve Barkın Kılıç. Eğitimin ilk günü eğitmenlerin kendilerini tanıtmaları ile başladı. Daha sonra sözü kursiyerlere verdiler. Sıra bize geldiğinde kendimizi tanıtırken Çanakkale Onsekiz Mart Üniversitesinden geliyoruz dediğimizde Necdet Yücel de anılmadan geçilmedi.

        Kursa katılım en çok Ankara'dan olmuş. Askeri ve kamu alanından katılımın arttığını söyleyen eğitmenler daha sonra özgür yazılımın hikayesinden, LKD ve FSF gibi derneklerden ve yaptıkları işlerden bahsettiler. Son olarak şu videoyu izledikten sonra eğitime başladık.

        Eğitmenler bu eğitimde ileri seviye güvenlikten daha çok temel düzeyde bir eğitim vaadediyorlardı. Eğitimin içeriğinden bahsettikten sonra ilk günün konularına başladılar. Bundan sonraki kısım eğitimde tuttuğum notlardan oluşuyor. Eksiklerim ve hatalarım muhakkak vardır. Düzeltirseniz sevinirim..


        Web teknolojilerine Giriş
  • Network protokolü üzerinde bir protokol koşar: HTTP.
    • Client Server Mimarisi: İstemci isteğini sunucuya gönderir sunucu da cevap verir. Bunlar düz metin olarak gönderilir.
  • HTTP de oturum kontrol mekanizması yoktur.
  • İnternette HTTP’nin 1.0 ve 1.1 sürümleri aynı anda bulunur.
URL: Web üzerindeki bir kaynağın konumunu belirtir.
URI: Protokol bulunur, dizin
  • www.google.com: URL
  • http://www.google.com.tr/index.php: URI
Netcat: Uzak sistemlerde hangi portların açık olduğu bilgisinin belirlenmesi için kullanılan bir yazılımdır.

nc www.google.com.tr 80 -v: Belirtilen adrese domain veya IP adresi ile bağlanılmasını sağlar.

GET / HTTP/1.0: Metod şekli Neresi Protokolü ve Sürümü

HTTP Özellikleri:
  • Başlık bilgisi: Sunucunun göndereceği data ile ilgili yaptığı ayarları gösterir.
    • HTTP/1.0 200 OK: HTTP Response Kodu
    • Date: Tarih
    • Expires: Sonlanma süresi (-1 Sonlandırma)
    • Cache-Control:
    • Content-Type: Verilen cevabın işlenme kısmının nasıl işleneceği bilgisi.
    • Set-Cookie: İstemciye verilen sunucunun onu tanımasını sağlayan kısım.
    • X-Frame-Options: Başka bir sayfada bu sayfayı arka planda çağırıp çağıramayacağımızın belirlendiği kısımdır.
  • HTML Body: Sayfanın içeriği ile ilgili kısımdır.
  • HTTP Response Code:
    • 1xx: Bigi
    • 2xx: Başarı
      • 200: Ok (Tamam): İstek anlaşıldı ve cevap döndürüldü.
    • 3xx: Yönlendirme
      • 301: Moved Permanently: URL değimiş.
      • 302: Moved Temporarily: Sayfa taşınmış.
      • 307: Temporary Redirect: Geçici olarak yeniden gönder.
    • 4xx: İstemci kaynaklı hatalar.
      • 400: Bad request (Kötü İstek): İsteğin anlaşılmadığını gösterir.
      • 403:Forbidden: Yetki yok
      • 404: Not found (Bulunamadı): Talep ulaştı ama sayfa bulunamadı.
    • 5xx: Sunucu kaynaklı hatalar.
      • 500: Internal Server Error: Sunucunun cevap döndüremedi.
    • 999: Saldırı olduğunda dönen cevaptır. Bilinen bir atak türüyse bu cevap döner.
  • HTTP Metodları: Yapılan isteklerin tiplerini belirtir.
    • GET:
      • Bir kaynağı elde etmek için kullanılır.
      • Query String ile yapılır.
      • Yapılan istekler Access Log a düşer.
      • Örn: /index.php?isim=mehmet
        • Access Log: Yapılan istekler tutulur, içerisinde;
          • IP Adresi Bilgisi
          • Zaman Bilgisi
          • Talep
          • Response Code
          • Data Boyutu (byte)
          • Domain
          • User_Agent
      • Not: 
        • Kritik veriler gönderilmez. Loga düşer. 
        • Sistem yöneticileri erişebilir.
        • Uzun metinler gönderilmez.
    • POST: 
      • Yeni bir kaynak oluşturmak için kullanılır.
      • Access Log a düşmez.
    • OPTIONS: 
      • Sunucunun hangi metodlara izin verdiğini öğrenmeye yarar.
      • Hangi dizinin kullanıldığı önemlidir.
    • PUT: 
      • Var olan kaynağı değiştirmek için kullanılır.
      • Gönderilen veriler bir dosya oluşturmak için kullanılır.
    • HEAD:
      • GET metodu ile aynı işi yapar.
      • Sadece başlık kısmının dönmesini sağlar.
    • DELETE:
      • Var olan kaynağı silmek için kullanılır.
      • Silme işlemi yaparken kaynağı sorgulamaz.
    • TRACE:
      • İsteğin hangi kaynak üzerinden gideceğini kontrol eder.
    • CONNECT: 
      • Sunucunun bizim yerimize istenilen bir yere bağlantı kurmasını sağlar.
Not: echo -en “PUT /method/test.txt HTTP/1.0\/r/n/r/n | nc IP port”: Metotların daha kolay çalıştırılması için kullanılan komuttur.

Cadaver: Metot kullanımını kolaylaştırır.

sudo apt-get install cadaver: Kurulum

cadaver http://193.255.255.248/method

        OWASP

OWASP (Open Web Application Security Project): Web güvenliği için çalışan insanların bir araya gelip web uygulamalarının zafiyetlerini kontrol ettikleri, belge ve etkinlik düzenledikleri topluluk.

INPUT: Girdi. Verilen uygulamanın aksiyomunu değiştirir.

OWASP TOP TEN:
  1. INJECTION: Yazılımın girdisinin ne olacağı belli değildir. Girdi olarak sorgu çalıştırılan durumdur.
Not: HTTP PROXY: PORTSWIGGER / OWASP ZAPROXY
  • İlk başlanan nokta, veritabanı ismi. Bunu öğrenmek için kullanılan sorgu: 
    • SELECT database();
  • Hedef uygulamanın hiyerarşisi öğrenilmeli. Tablo isimlerini öğrenmek için;
    • SELECT table_name FROM information_schema.tables WHERE table_schema=’mysql’;
  • Colon isimlerini öğrenmek için kullanılan sorgu;
    • SELECT column_name FROM information_schema.coluns;
    • SELECT column_name FROM information_schema.coluns WHERE table_schema = ‘mysql’;
    • SELECT column_name FROM information_schema.coluns WHERE table_name=’user’ AND tanle_schema=’mysql’;