HTTP Protokolüne Dair Önemli Bilgiler

En çok Görülen Saldırı Yöntemleri

Broken authentication: Giriş-login  alanlarının yanlış yapılandırılması sonucu giriş alanlarının atlatılması ya da zayıf password yapısından yararlanarak kaba-kuvvet(brute-force) saldırıları ile izinsiz-yetkisiz giriş yapılama durumudur.
Broken access controls: Sunucu üzerinde eksiz veya yanlış yapılandırılma sonucu yetkisi dahilinde olmayan kullanıcıların bilgilerine ulaşmayı sağlayan açıklıklardır.
Sql Injection: Uygulama ile veritabanı arasındaki etkileşim açıklıklarını kullanarak izinsiz-yetkisi dahilinde olmayan bilgileri alma,veritabanı sunucusunu istediği gibi yönetme olaylarını sağlayan açıktır.
Cross-site scripting: Javscript kodları kulalnıcalara dair bilgilerin çalındığı saldırılardır.(XSS saldırıları)
Cross-site request forgery: Javascript kodları kullanılır ancak bu saldırlarda etkileşimi sağlayan kurbanlardır. Normal görünen zararlı linkler,resimler vb. nesnelerle etkileşim sonucu zafiyetin oluşması durumudur.
Information leakage: Uygulama hatalarının tahlil edilmesi sonucu uygulamaya dair hassas bilgilerin elde edilerek saldırının gerçkeleşmesi durumudur.

HTTP Metotları

GET: İsteğin ve parametrelerin URL içinde gitmesi durumunda kullanılır.Giden her istek loglanacağı için hassas parametrelerde şifre kullanıcı adı bilgileri loglanır.
POST: Parametrelerin URL alanında değilde body alanında gitmesi durumunda kullanılır.
HEAD: İstekde sadece URL bilgi vardır. Bu sunucunun varlığını ya da isteğin sunucuda bulunması durumunu kontrol etmede kullanılır.
TRACE: Bu method ile istek-request değerinin değiştirilip değiştirilmediği kontrol edilir.
OPTIONS: Sunucu da kullanılabilecek http metotların listesi istenir.
PUT: Sunucuya veri eklemek için kulalnılan bir yöntemdir. Kontrolü iyi yapılandırılmadır. Yoksa zararlı veri enjekte edilebilinir.
DELETE: Sunucuya veri silmek için kulalnılan bir yöntemdir. Kontrolü iyi yapılandırılmadır.

HTTP Request Değerlerinin Anlamı

GET    /auth/488/YourDetails.ashx?uid=129       HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml,
image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwaveflash,
*/*
Referer: https://mdsec.net/auth/488/Home.ashx
Accept-Language: en-GB
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR
3.0.30729; .NET4.0C; InfoPath.3; .NET4.0E; FDM; .NET CLR 1.1.4322)
Accept-Encoding: gzip, deflate
Host: mdsec.net
Connection: Keep-Alive
Cookie: SessionId=5B70C71F3FD4968935CDB6682E545476
———————————
GET –>Kullanılan HTTP metotu
/auth/488/YourDetails.ashx?uid=129 –> Sunucudan istenen sayfa
HTTP/1.1 –>Kullanılan HTTP protokol versiyonu
Accept: Kabul edilebilecek nesne türleri
Referer: İsteğin yapılacağı sayfanın url bilgisi
Accept-Language: Sitein dil bilgisi
User-Agent: Tarayıcı bilgisini gösteren değer
Host: Host bilgisi
——————————-

HTTP Responses Değerlerinin Anlamı

HTTP/1.1  200  OK   –> HTTP protokolünün kullanıldığı ve versiyon bilgisi. Ayrıca sunucunun verdiği cevabın rakamsal değeri ile string değeri… İsteğin başarılı olup olmadığı dair.
DateTue, 19 Apr 2011 09:23:32 GMT  –>Sunucunun saat-tarih bilgisi
Server: Microsoft-IIS/6.0  –> Sunucu bilgisi
X-Powered-By: ASP.NET  –> Sitenin hangi dille yazıldığını gösterir.
Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc  –> İstemci ile sunucu arasında kurulan bağlantının çerez bilgisi… Site ile kurulan bir sonraki istek için kullanılır.
X-AspNet-Version: 2.0.50727  –>  Sitenin yazıldığı dil versiyon bilgisi
Cache-Control: no-cache  –> Cache alma olayının olup olmadığını kontrol eder.
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT  –> Çerezlerin yenilenme süresine dair bilgiler…
Content-Type: text/html; charset=utf-8  –>Tarayıcıda gösterilen html sayfanın uzantı bilgisi ve dil formatı…
Content-Length: 1067 –> Dönen cevabın body kısmının byte cinsinden değeri….
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://
www.w3.org/1999/xhtml” ><head><title>Your details</title>
—————————————————————————-

URL Bilgisi

protocol://hostname[:port]/[path/]file[?param=value]
protokol: Kullanılan protokol bilgisi.. http,https,ftp vs.
hostname: Ziyaret edilecek sitenin ana dizini
port: Sitenin kullandığı port bilgisi.Genelde 80. port kullanılır. Ama ftp için21,https için 443 kullanılır.
path: Sitenin içerdiği dizinlerin yolu.
param: Sitede talep ettiğimiz sayfanın herhangi bir değerine karşılık gelen değişken adı.
value: Değişkenin değeri.
Örnek:  https://www.fbh.com.tr/eğitim/web_egitimi.php?sid=12
————————————————————————-

REST Bilgisi

Bu URL değerinde talep edilen sayfaya ait parametre bilgileri görünmez.
Normal URL isteği:  https://www.fbh.com.tr/eğitim/web_egitimi.php?sid=12&step=egitim
REST URL değeri:   https://www.fbh.com.tr/eğitim/web_egitimi.php/12/egitim
————————————————————————-

HTTP BAŞLIKLARI

HTTP protokolünde istek-cevap işlemlerinde kullanılan başlık bilgilerinin anlamları aşağıdaki gibidir.

Genel Başlıklar

Connection: İstemci-sunucu arasında HTTP iletimi tamamlandıktan sonra TCP bağlantısının devam edip etmeyeceğine dair bilgidir.
Content-Encoding: Veri iletimini daha hızlı gerçekleştirmek için kullanılan bazı metotların bilgisini tutulduğu türdür.(gzip gibi).
Content-Length: (HEAD başlığı hariç) Get,Post gibi metotları ile yapılan isteklerin body bilgisinin uzunluk bilgisini gösterir.
Content-Type: İletim gövdesinin türünü gösterir.(text/html, text/javascript)
Transfer-Encoding: İletilen cevabın mesaj bölümünün veri iletiminde daha hızlı aktarılması için bazı dönüşümlerin yapılmasına olanak sağlayan türdür.

REQUEST Başlıkları

Accept: İstemcinin kabul edilebileceği tür bilgisini gösterir. Resim formatları,dosya formatları gibi.
Accept-Encoding:  Sunucunun kabul edebileceği format bilgisini gösterir.
Authorization: HTTP kimlik doğrulama türlerini gösterir.
Cookie: İstemci daha önce kullanılan çerezleri sunucuya yollar.
Host: Talep edilen sayfanın bağlı olduğu hostname bilgisini gösterir.
If-Modified-Since: Talep edilen sayfanın en son tarayıcan istenme bilgisidir. Eğer bu talep edilen sayfa sunucuda yoksa 304 kod yapısında cevap dönülür. Arama motorlarıda en son cache aldığı sayfa şeklini gösterir.
If-None-Match: Sunucu tipini belirlemek için kullanılır.
Origin: AJAX istelerinde domainin kökeni belirlemek için kullanılır.
Referer:Geçerli isteğin URL değerini gösterir.
User-Agent: Tarayıcı bilgilerini gösterir.

RESPONSE  Başlıkları

Access-Control-Allow-Origin: AJAX isteklerinde kaynak kontrolünde kullanılır.
Cache-Control: Tarayıcının cache alma yapısının olup olmadığını kontrol eder.
ETag:  Özel etiketleri gösterir. Sunucunun türünü göstermede de kullanılır.
Expires: İletilen cevabın daha ne kadar süre gösterilebileceğini gösterir.
Location: Yönlendirme sayfaları mevcut olduğu durumlarda kullanılır. Sunucu tarafında 3.. ile başlayan cevaplarda kullanılır.
Pragma: Ön belleğe alma işlem direktiflerin durumunu gösterir.(no-cache)
Server: Sunucuda kullanılan web sunucunun yazılım dili hakkında bilgiyi gösterir.
Set-Cookie:  İstemci-sunucu arasındaki çerez bilgisini tutar.Bir sonraki etkileşim için kullanılır.
WWW-Authenticate: Sunucun desteklediği kimlik doğrulama türlerini gösterir.(401 code)
X-Frame-Options: Desteklenebilir pencere ayarını gösterir.

COOKIE Başlıkları

Çerezler, istemci ile sunucu arasında etkileşimi daha güvenli hale getirmek için kullanılan yapılardır.
expires:Bir çerezin son kullanma süresini gösterir.
domain:Çerezin kullanılacağı etki alanını gösterir.(fbh.com.tr)
path: Çerezlerin adresini gösterir.
secure: Bu seçenek kullanılırsa çerezler sadece https bağlantılarında kullanılacaktır.
HttpOnly: Bu özellik aktif edilirse istemci tarafında javascript kodu ile çereze ulaşımı engellenir.

Durum Kodları(Status Codes)

İstemci sunucu arasındaki etkileşim sonucunda dönen cevap durumlarını bazı sabitlenmiş kodlar ile anlamlandırılmıştır.
1xx: Bilgilendirme mesajlarını gösterir.
2xx: İsteğin başarılı olduğunu gösterir.
3xx: İsteğin başka sayfaya yönlendirileceğini gösterir.
4xx: İstemci bazlı hataları gösterir.
5xx: Sunucu bazlı hataları gösterir.
————————————————

Bazı Sayfaların Anlamları

200: İsteğin başarılı olduğunu ve isteğin body kısmının gönderileceğini gösterir.
301: İstenilen sayfanın kalıcı olarak taşındığını-silindiğini gösterir.
302: İstenilen sayfanın geçici olarak ulaşılamadığını gösterir.
304: Geçici oalrak ulaşılamayan sayfaya önbellekten ulaşılabileceğini gösterir.
400: Yanlış yapılandırılmış bir URL isteğini gösterir.(URL içinde boşluk olması)
401: HTTP kimlik doğrulamasının olacağını gösterir.
403: Yetkisiz olan istekler için gösterilemeyecek sayfa olduğunu gösterir.
405: Belirtilen URL için kullanılamaz olduğunu gösterir. PUT metotunu desteklemeyen bir sayfaya istek yaptığımızda bu cevap gelir.
413: İstenilen sayfanın body kısmının çok büyük olmasından dolayı sunucun cevap verememesi durumunda oluşur.
414: İstenilen sayfanın URL değerinin çok uzun olmasından dolayı sunucunun cevap verememesi durumundan kaynaklanır.
500: Beklenmedik bir hatadan dolayı sunucu tarafından verilen cevaptır.

HTTPS

HTTP protokolü TCP protokol yapısını kullanarak veri iletimi gerçekleştirir ve bu iletim araya giren saldırganlar tarafından görünmek istenirse kolayca görüntülenir.HTTPs ile veriler SSL protokol yapısı kullanılarak şifrelenerek iletimi gerçekleştirilir. Verinin bütünlüğü ve gizliliği korunur.Araya giren saldırganlar trafiği görebilir ancak anlamlandıramaz.HTTPs ile HTTP nin çalışma mantıkları güvenli protokol desteği hariç aynıdır.

Yorumlar

Bu blogdaki popüler yayınlar

Wamp Server ile Yerel Ağınızda Site Yayınlama

Web Pentest İşlemlerinde Burp Suite Kullanımı-1