
Selamın Aleykum TurkHackTeam Ailesi ;
- İçerik -
Bugun OSI Modeli'nde 7.katman (Sunum Katmanı) üzerinde ki HTTP-HTTPS Kavramlarını Göreceğiz .
* HTTP ile HTTPS arasındaki farklarları
* HTTP başlıklarını
* HTTP başlıkları analizi
* HTTP request
* HTTP response
Konuları Hakkında Bilgi Sahibi olucaz
HTTP ve HTTPS Nedir ? Farkları Nelerdir ?

HTTP Nedir ?
--------
HTTP protokolü '' Hyper Text Transfer Protocol '' olarak bilinir .
HTTP 7.katmanda (Sunum Katmanı) bulunan bir protokoldür .
HTTP Protokolünde sizle sunucu arasında ki trafik hiç bir şekilde şifreleme yapılmaz .
Trafik 80 Port'u Üzerinden sağlanmaktadır .
Yani HTTP ' li websitelerinde veri hızlığı olabilme ihtimali çok yüksektir , bu yüzden HTTP Bağlantılarda Banka, Kredi Kartı vb. bilgilerimizi girmekten kaçınalım
HTTPS Nedir ?
--------
HTTPS Protokolünün Açılımıda '' Secure Hypertext Transfer Protocol '' olarak bilinir .
HTTPS Protokolüde aynı şekilde 7.Katmanda (Sunum katmanı) yer alır .
Burdaki olay Sizin ile Sunucu arasında ki trafiğin '' SSL Sertifikası '' ile şifrelenmesidir .
SSL Sertifikası Sayesinde Kullanıcı ile sunucu arasında ki trafik alışında ki veriler şifrelenir .
Online olarak alışveriş yapılan sitelerde yada Bankalar gibi kurumlarda SSL Sertifikası Mecburen olmak zorundadır .
Port olarak 443'ü Kullanır .
Hem Hacking olaylarına maruz kalmak istenmemesi SSL Sertifikasına iten sebepler hemde
googlede ki Seo çalışmalarında SSL Sertifikasının etkisi olduğu için tercih edilir .
HTTPS Protokolüde aynı şekilde 7.Katmanda (Sunum katmanı) yer alır .
Burdaki olay Sizin ile Sunucu arasında ki trafiğin '' SSL Sertifikası '' ile şifrelenmesidir .
SSL Sertifikası Sayesinde Kullanıcı ile sunucu arasında ki trafik alışında ki veriler şifrelenir .
Online olarak alışveriş yapılan sitelerde yada Bankalar gibi kurumlarda SSL Sertifikası Mecburen olmak zorundadır .
Port olarak 443'ü Kullanır .
Hem Hacking olaylarına maruz kalmak istenmemesi SSL Sertifikasına iten sebepler hemde
googlede ki Seo çalışmalarında SSL Sertifikasının etkisi olduğu için tercih edilir .
HTTP ' Protokolünde Güvenlik Kuralları Nasıl Yapılmalıdır ?

'' Strict Transport Security '' Nedir ? Nasıl Uygulanır ?
------------------------
Strict Transport Security (HSTS) uygulanmış olan bir websiteye yapılacak olan her bir istek
HTTPS ' yi kullanamya zorlar ve haliyle bu durum '' Downgrade '' Saldırılarının önüne geçmek için çok zekice kullanılabilecek bir protokoldür .
HSTS Konfigürasyonu yapılandırma Şekli ;
Bunu Ana Domain' dışında eğer ki bütün SubDomainler için uygulamak istersek;
HTTPS ' yi kullanamya zorlar ve haliyle bu durum '' Downgrade '' Saldırılarının önüne geçmek için çok zekice kullanılabilecek bir protokoldür .
HSTS Konfigürasyonu yapılandırma Şekli ;
Aşağıdaki cod HTTP Başlık Bilgisine Yerleştirilmelidir .
Kod:
[COLOR="White"][CENTER]Strict-Transport-Security: max-age=16070400;[/CENTER][/COLOR]
Bunu Ana Domain' dışında eğer ki bütün SubDomainler için uygulamak istersek;
Kod:
[CENTER][COLOR="White"]Strict-Transport-Security: max-age=16070400;[/COLOR] includeSubDomains[/CENTER]
Strict Transport Security (HSTS) Nerelerde Kullanılır Ve Nasıl Uygulanır ?
Şimdi öncelikle eğer ki bir HTTPS Protokolünde siteniz varsa bunu kullanmanız performans ve güvenlik açısından şart olduğunu belirtmeliyim .
Sonrasında bunu hangi sunucular üzerinde aktif edebileceğinizi sorarsanız bunlar ;
Apache/IIS/Nginx/Tomcat Temel olarak bu sunucu türleri için kullanımı mümkündür .
Sunucular Üzerinde HSTS'yi Nasıl Aktif Ederiz ?
Apache' de HSTS aktifleştirmek için ;
Nginx' de HSTS aktifleştirmek için ;
'' X-Frame-Options '' Yapılacak Saldırılar ve Önlemleri

Oncelikle bu saldırıyı anlatalım Saldırganların iframe kodu yürüterek kullanıcıları istenmeyen sayfalara sürükleyebilmektedirler .
Bu x-Frame-Optionların 3 Farklı Parametresi bulunmaktadır ;
Deny Parametresi
Sonrasında bunu hangi sunucular üzerinde aktif edebileceğinizi sorarsanız bunlar ;
Apache/IIS/Nginx/Tomcat Temel olarak bu sunucu türleri için kullanımı mümkündür .
Sunucular Üzerinde HSTS'yi Nasıl Aktif Ederiz ?
Apache' de HSTS aktifleştirmek için ;
Kod:
[CENTER]# Apache HSTS
LoadModule headers_module modules/mod_headers.so
<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</VirtualHost>[/CENTER]
Nginx' de HSTS aktifleştirmek için ;
Kod:
[CENTER]add_header Strict-Transport-Security max-age=63072000; includeSubdomains[/CENTER]
IIS web.config ile HSTS aktifleştirmek için ;
Kod:
[CENTER]<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000"/>
</customHeaders>
</httpProtocol>
</system.webServer>[/CENTER]
'' X-Frame-Options '' Yapılacak Saldırılar ve Önlemleri

Oncelikle bu saldırıyı anlatalım Saldırganların iframe kodu yürüterek kullanıcıları istenmeyen sayfalara sürükleyebilmektedirler .
Bu x-Frame-Optionların 3 Farklı Parametresi bulunmaktadır ;
Deny Parametresi
Bir sayfanın frame içerisinde çağrılmasını engeller .
SAMEORIGIN Parametresi
Sahip oldugunuz Domain haricinde başka hic bir domainin frame isteklerine yanıt vermez.
ALLOW-FROM uri Parametresi
Sadece uri adresinin frame çağrısı kabul ediler diğer bütün çağrılar engellenir .
SAMEORIGIN Özelliği ile saldırgan kontrolünde ki domain üzerinden yapılacak frame isteklerini engellemek için ;
Kod:
[CENTER]# Nginx için
add_header X-Frame-Options SAMEORIGIN;
# Apache için
Header always append X-Frame-Options SAMEORIGIN
# IIS için
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>[/CENTER]
X-XSS-Protection Engelleme (XXS Saldırılarından Korunma)
XXS Saldırılarından korunması için x-xss-Protection codları başlık bilgisine girilmelidir .
Sonrasında ise internet tarayıcıları için xxs güvenligini aktif etmemiz gerekmektedir .
Belli Sunucular için X-XSS Protection Codları
Kod:
[CENTER][COLOR="White"][COLOR="Red"]# Nginx için[/COLOR]
add_header X-Frame-X-XSS-Protection 1;
[COLOR="red"]# Apache için[/COLOR]
Header always append X-XSS-Protection 1
[COLOR="red"]# IIS için[/COLOR]
<httpProtocol>
<customHeaders>
<add name="X-XSS-Protection" value="1" />
</customHeaders>
</httpProtocol>[/COLOR][/CENTER]
Mode Block - XSS Saldırı blogunun çalışmasını engellemektedir . Şüpheli bir durumda tüm içeriğin render edilmesini engellemek için ise ;
Uygulanması Gereklidir .
Kod:
[CENTER]X-XSS-Protection: 1; mode=block[/CENTER]
X-Content-Type-Options (Stored XSS zafiyeti) Zaafiyeti Nedir Nasıl Engellenir ?
Tarayıcılar üzerinden yüklenen dosyaların türlerini belirleme olayıdır .
Ornek olarak GIF dosyası veya JPEG dosyasına erişim talebi olduysa HTTP cevabı üzerinden analiz gerceklestirilerek dosya türü tahmin edilmeye calışılır .
Örnek Senaryo üzerinden bakarsak JPEG uzantılı içeriği ise text/html olan bir dosyayı düsündügümüzde eğer ki biz bu güvenlik kodunu girmessek , Yüklenen dosya url üzerinden çağırılacak ve bu şekilde cagrıldıgı zaman MIME Type sniffing denilen olay gerçekleşecek ve içerik html olarak render edicektir .
En sonunda artık Stored XSS zafiyeti meydana gelecektir .
X-Content-Type-Options: nosniff satırı HTTP başlık bilgisine eklenerek, internet tarayıcılarının MIME Type sniffing yaparak içerik üzerinde karar vermesi engellenmelidir.
Kod:
[CENTER][COLOR="White"][COLOR="Red"]# Nginx için[/COLOR]
add_header X-Content-Type-Options nosniff;
[COLOR="red"]# Apache için[/COLOR]
Header always X-Content-Type-Options nosniff
[COLOR="red"]# IIS için[/COLOR]
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>[/COLOR][/CENTER]
Cookie HttpOnly ve Secure Bayrakları
------------------
HttpOnly Bayrağı
Web uygulamalarında kullanıcı oturumları session ID ile takip edilir . Bu değeri diğer kullanıcıya HTTp Set-Cookie başlığı ile iletilir .
Cookie'lerin tek görevi oturum anahtarını taşıması değil aynı zamanda örnek olarak bir sitede dolaştıgınızda orda ki resimlerinizi ön bellege atar bir sonraki girişinizde sitenin daha hızlı açılmasını sağlar .
Burdaki mesele en güvenli Cookie ' ler hangileridir sorusu gelecek burda ki cevap ise Oturum anahtarı bilgisine Javascript vb client-site programming ile ulaşılmaması gerekir bu yüzden de burada HTTPOnly olayı gelir .
Web uygulamalarında kullanıcı oturumları session ID ile takip edilir . Bu değeri diğer kullanıcıya HTTp Set-Cookie başlığı ile iletilir .
İnternet tarayıcıları ise bu değeri saklayarak Cookie nin geçerli oldugu kapsam için otomatik olarak her HTTP talebinde devreye sokacaktır .
Cookie'lerin tek görevi oturum anahtarını taşıması değil aynı zamanda örnek olarak bir sitede dolaştıgınızda orda ki resimlerinizi ön bellege atar bir sonraki girişinizde sitenin daha hızlı açılmasını sağlar .
Burdaki mesele en güvenli Cookie ' ler hangileridir sorusu gelecek burda ki cevap ise Oturum anahtarı bilgisine Javascript vb client-site programming ile ulaşılmaması gerekir bu yüzden de burada HTTPOnly olayı gelir .
Kod:
[CENTER]Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly[/CENTER]
Cookie set işleminde gönderilen HttpOnly değerine dikkat edilmeli .
HttpOnly bayrağını gören internet tarayıcı ********.cookie değişkeni üzerinden Cookie' e erişim yapıldığında HttpOnly bayrağı olan değerleri işleme almayacaktır.
Secure Flag
Set Cookie işlemlerinde Secure bayrağının kullanılması , bu Cookie değernin HTTPS Taleplerinde headere işlenir .
Bu durum yoğunlukla e-ticaret sitelerinde yada banka sitelerinde görürüz . Hem trafik hızını arttırmak için hem daha güvenli olmasını sağlamak için kullanılan bir yöntemdir .
Ayrıca bu sayede kullanıcıların giriş bilgileri ve banka kartı gibi bilgiler '' NSA '' dan gizlenmiş olacaktır .
Örnek olarak bir saldırı senaryosu cizersek eğer ki ?
Kullanıcı E-ticaret sitesinden login girişini yapar ,
Burada uygulama HTTPS üzerinden istek alır .
İlk adımda Set-Cookie işlemi Secure bayrağı olmadan yapılır .
Kullanıcı Alışverişini yapar .
şimdi buraya kadar sıkıntı yok ama burdan sonra eğer ki kullanıcı tekrardan site içinde gezmeye devam ederse Bu sefer HTTP üzerinden trafik devam edecek bu durumda da korunmasız sistemi Sniff eden bir hacker varsa bütün bilgileri çekecektir .
HTTP Request Metod ( HTTP istekleri )
Bu sorgular karşı sunucuda öğrenilmek istenen bilgilerin ve yapılabilecek durumların kalıpları bulunmaktadır .
8 Adet HTTP Sorgu Metodumuz Bulunmaktadır .
Get, Post, Head, Put, Delete, Connect, Options, Trace Metodları Bulunmaktadır .
HTTP Sorgu Metodları İçerik Bilgileri
-----------
Get Metodu; Sunucudan belli başlı verileri öğrenmek için kullanılır.
Head Metodu; Genel olarak servis sağlayıcısı hakkında bilgi edinilir .
Post Metodu; Bu metodda HTML formları kullanılarak örneğin müşteri bilgileri yada dosya yükleme gibi veriler sunucuya yazdırılır .
Put Metodu; Bu metod ile Servis sağlayıcısı içinde ki bir kaynak üzerinde güncelleme yada kaldırma işlemi uygulanmaktadır .
Delete Metodu; Sunucu içerisinde ki veriler bu metod ile silinir .
Connect Metodu; Belirli bir Kaynak ile hedef sunucu arasında bir tünel oluşturur .
Options Metodu; İstenilen kaynaklarla iletişime geçilebilir .
Trace Metodu; istenilen kaynağın trafik döngüsünü, haritasını ortaya koyabiliriz .
HTPP Request Konusuna Değinmişken ufak bir bilgilendirme yapayım ddos saldırılarında yapılan ataklarda 7.katman saldırılarının etkili olma sebebi ip'e saldırı olmuyor direk olarak GET/POST istekleri gönderiliyor , bu isteklerde koruma kalkanlarına takılmadan direk ana makinaya gittiği için saldırılar başarılı oluyor .
HTTP Reponse (Bilgi Yanıtları)
---------------------
Burdaki Konu hepimizin gördüğü birşey aslında şöyle ki bazen istenilen siteye girişlerde bazı hatalar alırız daha doğrusu hata olarak nitelendiririz neydi onlardan birisi misal '' 404 Not Found '' işte bu karşımıza çıkan kod hata değil bize verilen bir bilgi mesajıdır .
Şimdi Bu HTTP Bilgilendirme Mesajlarının Detaylarına bakalım Hangi kodlar bize ne anlatmak istiyormuş öğrenelim .
1xx ile başlayan HTTP Reponses
100 Contine
Bu tamamen geçici olan bir mesajdır burada yapılan işlemin devam ettiğini sürdürüldügünü gösterir eğer ki bitmişsse görmezden gelinmesi gerekir .
Şimdi Bu HTTP Bilgilendirme Mesajlarının Detaylarına bakalım Hangi kodlar bize ne anlatmak istiyormuş öğrenelim .
1xx ile başlayan HTTP Reponses
100 Contine
Bu tamamen geçici olan bir mesajdır burada yapılan işlemin devam ettiğini sürdürüldügünü gösterir eğer ki bitmişsse görmezden gelinmesi gerekir .
101 Switching Protocol
Bu kod bizlerin sunucuya gönderdigi istek tarafından oluşturulur ve sunucunun protokol değişikliğine gittiğini söyler bize .
102 Processing
Bu kod sunucuya yaptığınız işteğin işleme alındıgını fakat daha yanıt vermedigini gösterir
En temel olarak bunları belirttim bunlar haricinde de bir hata alırsanız bu hatanın numarası 1xx başlıyorsa bilin ki bu sizlere sadece bilgi amaçlı çıkan bir koddur .
2xx ile başlayan HTTP Reponses (Başarı bildiren Kodlar)
Burda ki bu kodlar karşı tarafa gönderilen isteğin olumlu sonuçlandığını bildirir .
200 OK
İstek başarılı oldu. Başarının anlamı, HTTP yöntemine bağlı olarak değişir:
GET: Kaynak alındı ve ileti gövdesinde iletildi.
HEAD: Varlık başlıkları mesajın gövdesindedir.
POST: Eylemin sonucunu açıklayan kaynak, mesaj gövdesinde iletilir.
TRACE: Mesaj gövdesi, sunucu tarafından alınan istek mesajını içerir.
201 Created
Bu genellikle PUT İsteğinden sonra görülen bilgi Kod'udur
200 OK
İstek başarılı oldu. Başarının anlamı, HTTP yöntemine bağlı olarak değişir:
GET: Kaynak alındı ve ileti gövdesinde iletildi.
HEAD: Varlık başlıkları mesajın gövdesindedir.
POST: Eylemin sonucunu açıklayan kaynak, mesaj gövdesinde iletilir.
TRACE: Mesaj gövdesi, sunucu tarafından alınan istek mesajını içerir.
201 Created
Bu genellikle PUT İsteğinden sonra görülen bilgi Kod'udur
202 Accepted
Toplu istekler yapıldıgında onaylandıgı ve istegin işleme alındıgında görülen cod'dur
203 Non-Authoritative Information
200 Kod'unun benzeri özellikler taşır onun yerine bu kodda gösterilebilir .
203 Non-Authoritative Information
200 Kod'unun benzeri özellikler taşır onun yerine bu kodda gösterilebilir .
204 No Content
Gösterilecek bir içerik yok ise eğer ki bağlantının başarılı oldugunu fakat gönderilecek içeriğin bulunmadıgını anlatır bize bu kod .
Ve Görebileceğiniz nadir bir kaç bilgilendirme konuduna aşşağıya bırakıyorum .
Ve Görebileceğiniz nadir bir kaç bilgilendirme konuduna aşşağıya bırakıyorum .
205 Reset Content
206 Partial Content
207 Multi-Status( WebDAV )
208 Multi-Status( WebDAV )
207 Multi-Status( WebDAV )
208 Multi-Status( WebDAV )
3xx ile başlayan HTTP Reponses (Yönlendirme Kodları)
Burda ki kodları biz göremiyoruz cünki erişmek istediginiz bir website başka bir siteye yönlüdür siz girdiginiz an yönlendirilmis olan siteye yönlenir fakat ne olursa olsun belirlenen kod ile bu işlem yapılır .
300 Multiple Choice
301 Moved Permanently
İstenen kaynağın URI'si değiştiginde bu bilgilendirme kodunu bize gösterir .
302 Found
İstenilen kaynağın geçici olarak URI'sinin yer değiştiği bilgisini bize verir .
300 Multiple Choice
301 Moved Permanently
İstenen kaynağın URI'si değiştiginde bu bilgilendirme kodunu bize gösterir .
302 Found
İstenilen kaynağın geçici olarak URI'sinin yer değiştiği bilgisini bize verir .
303 See Other
304 Not Modified
Bu kodu önbellekleme amacıyla kullanır , sayfa hızının artıs saglaması için 2. 3. aynı kaynağa ulaşmak istenildiginde direk bu kod üzerinden işlem yapılır .
305 Use Proxy
Bir proxide bant içi uygulamada güvenlik zaafiyeti sezildiği takdirde bu kod devreye girer.
306 unused
305 Use Proxy
Bir proxide bant içi uygulamada güvenlik zaafiyeti sezildiği takdirde bu kod devreye girer.
306 unused
307 Temporary Redirect
Bu Kod'u görüyorsanız sorgu metodunu değiştirin post ise get get ise post sorgulamayı deneyin düzelicektir .
308 Permanent Redirect
HTTP Reponse 4xx'lü Bilgi Mesajları
Bizim sıklıkla gördügümüz bilgi mesajları burada bulunmaktadır .
400 Bad Request
Sunucunun geçersiz söz dizimleri bulunduğu için istekleri algılayamadığı durumlarda görükür.
403 Forbidden
Sunucu tarafından izin verilen kişilerin erişebildigi bölüme yetkisiz kişiler girmeye çalışırsa bu kod çalışır .
404 Not Found
Sunucu çok yogun olduğu için isteği işleme alamaz bu yüzden bu kod'u verir
308 Permanent Redirect
HTTP Reponse 4xx'lü Bilgi Mesajları
Bizim sıklıkla gördügümüz bilgi mesajları burada bulunmaktadır .
400 Bad Request
Sunucunun geçersiz söz dizimleri bulunduğu için istekleri algılayamadığı durumlarda görükür.
403 Forbidden
Sunucu tarafından izin verilen kişilerin erişebildigi bölüme yetkisiz kişiler girmeye çalışırsa bu kod çalışır .
404 Not Found
Sunucu çok yogun olduğu için isteği işleme alamaz bu yüzden bu kod'u verir
408 Request Timeout
Gönderilen isteklerin belli bir süre cevap alınmayışı sonrasında istek zaman aşımına uğrar ve bu kod ortaya çıkar .
423 Locked( WebDAV )
451 Unavailable For Legal Reasons
HTTP Reponse 5xx'lü Sunucu Hatası Mesajları
Bu hatayı görüyorsak muhtemelen hedef sunucu sistemi zarar görmüş yada kitlenmiştir .
Yukarıda ki ve 5xx tüm Kodlar Sunucu arızası sebebiyle verilen kodlardır .
- Kazanımlar -
HTTP-HTTPS Nedir ? Portları Nedir ?
XXS Açığı Ve Kapatma yolları .
HTTP-HTTPS Osı Modelinde Kaçıncı Katmanda yer alır ?
HTTP odaklı yapılan Saldırılar ve Önlemleri nelerdir .
HTTP Request Metodları ve Anlatımı .
HTTP Reponse Kodları ve Anlatımları .
Saygılarımla
// xMit !!
423 Locked( WebDAV )
451 Unavailable For Legal Reasons
HTTP Reponse 5xx'lü Sunucu Hatası Mesajları
Bu hatayı görüyorsak muhtemelen hedef sunucu sistemi zarar görmüş yada kitlenmiştir .
500 Internal Server Error
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
Yukarıda ki ve 5xx tüm Kodlar Sunucu arızası sebebiyle verilen kodlardır .
- Kazanımlar -
HTTP-HTTPS Nedir ? Portları Nedir ?
XXS Açığı Ve Kapatma yolları .
HTTP-HTTPS Osı Modelinde Kaçıncı Katmanda yer alır ?
HTTP odaklı yapılan Saldırılar ve Önlemleri nelerdir .
HTTP Request Metodları ve Anlatımı .
HTTP Reponse Kodları ve Anlatımları .
Saygılarımla
// xMit !!
