Lab erişimi için :https://tryhackme.com/r/room/httpindetail

HTTP (HyperText Transfer Protocol) Nedir?

HTTP, bir web sitesini görüntülediğinizde kullanılan protokoldür ve Tim Berners-Lee ve ekibi tarafından 1989-1991 yılları arasında geliştirilmiştir. HTTP, web sunucularıyla iletişim kurmak ve web sayfası verilerini (HTML, görseller, videolar vb.) iletmek için kullanılan kurallar bütünüdür.

HTTPS (HyperText Transfer Protocol Secure) Nedir?

HTTPS, HTTP’nin güvenli versiyonudur. HTTPS verileri şifreler, bu sayede aldığınız ve gönderdiğiniz verilerin görünmesini engeller ve ayrıca doğru web sunucusuyla iletişim kurduğunuzdan emin olmanızı sağlar, yani bir taklitçi sunucu olmadığını doğrular.

  1. HTTP neyin kısaltmasıdır?

CEVAP: HyperText Transfer Protocol

  1. HTTPS’deki S harfi ne anlama gelir?

CEVAP: Secure

3.web sayfasında bir sorun var, challange flag’i nedir?

CEVAP: THM{INVALID_HTTP_CERT}

İstekler ve Yanıtlar:

Bir web sitesine eriştiğimizde, tarayıcınız HTML, resimler gibi varlıklar için bir web sunucusuna istek göndermeli ve yanıtları indirmelidir. Bunun öncesinde, tarayıcıya bu kaynaklara nasıl ve nereden erişileceğini belirtmeniz gerekir; işte bu noktada URL’ler devreye girer.

URL Nedir? (Uniform Resource Locator)

Eğer interneti kullandıysanız, daha önce bir URL kullanmışsınızdır. URL, internet üzerindeki bir kaynağa nasıl erişileceğini belirten bir talimattır. Aşağıdaki görsel, bir URL’nin tüm özellikleriyle nasıl göründüğünü gösterir (her istekte tüm özellikler kullanılmaz).

İstek Yapmak

Bir web sunucusuna tek bir satırla “GET / HTTP/1.1” isteği göndermek mümkündür.

Ancak daha zengin bir web deneyimi için, diğer verileri de göndermeniz gerekir. Bu diğer veriler, başlıklar olarak adlandırılan şeylerde gönderilir; başlıklar, iletişim kurduğunuz web sunucusuna ek bilgi sağlar, ancak bunu Başlık görevinde daha ayrıntılı olarak ele alacağız.

Örnek İstek:

GET / HTTP/1.1
Host: tryhackme.com
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://tryhackme.com/

Bu isteğin her satırını analiz edelim:

Örnek Yanıt:

HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Fri, 09 Apr 2021 13:34:03 GMT
Content-Type: text/html
Content-Length: 98

<html>
<head>
<title>TryHackMe</title>
</head>
<body>
Welcome To TryHackMe.com
</body>
</html>

Yanıtın her satırını analiz edelim:

1. Yukarıdaki örnekte hangi HTTP protokolü kullanılıyor?

CEVAP:HTTP/1.1

2. Hangi yanıt başlığı tarayıcıya ne kadar veri bekleyeceğini söyler?

CEVAP: Content-Length

3. HTTP Method’ları:

HTTP method’ları, istemcinin bir HTTP isteği gönderirken niyet ettiği eylemi belirtmenin bir yoludur. Birçok HTTP yöntemi vardır, ancak en yaygın olanlarını ele alacağız; genellikle GET ve POST yöntemleriyle karşılaşırsınız.

Soru 1: Yeni bir kullanıcı hesabı oluşturmak için hangi yöntem kullanılır?

Cevap: POST

Soru 2: E-posta adresinizi güncellemek için hangi yöntem kullanılır?

Cevap: PUT

Soru 3: Hesabınıza yüklediğiniz bir resmi kaldırmak için hangi yöntem kullanılır?

Cevap: DELETE

Soru 4: Bir haber makalesini görüntülemek için hangi yöntem kullanılır?

Cevap: GET

4. HTTP Durum Kodları:

Önceki görevde, bir HTTP sunucusunun yanıt verdiğinde ilk satırın her zaman bir durum kodu içerdiğini ve bu durum kodunun istemciye isteğin sonucunu ve potansiyel olarak nasıl işlemesi gerektiğini bildirdiğini öğrendiniz. Bu durum kodları 5 farklı aralığa ayrılabilir:

HTTP Durum Kodları türkçe:

Durum Kodu AralığıKapsamAçıklama
100-199Bilgi Yanıtıİstemciye isteğinin ilk kısmının kabul edildiğini ve geri kalanını göndermeye devam etmesi gerektiğini belirtir. Bu kodlar artık çok yaygın değildir.
200-299Başarıİstemciye isteğinin başarılı olduğunu bildirmek için kullanılır.
300-399Yönlendirmeİstemcinin isteğini başka bir kaynağa yönlendirmek için kullanılır. Bu, başka bir web sayfasına veya tamamen farklı bir web sitesine olabilir.
400-499İstemci Hatalarıİstemciye isteğinde bir hata olduğunu bildirmek için kullanılır.
500-599Sunucu HatalarıSunucu tarafında meydana gelen hatalar için ayrılmıştır ve genellikle sunucunun isteği işleme konusunda büyük bir problem yaşadığını gösterir.

Yaygın HTTP Durum Kodları:

Çok sayıda farklı HTTP durum kodu bulunmaktadır ve uygulamalar kendi durum kodlarını da tanımlayabilirler. İşte karşılaşmanız olası olan en yaygın HTTP yanıt kodları:

Durum KoduAnlamıAçıklama
200OKİstek başarıyla tamamlandı.
201CreatedBir kaynak oluşturuldu (örneğin, yeni bir kullanıcı veya yeni bir blog yazısı).
301Moved Permanentlyİstemcinin tarayıcısını yeni bir web sayfasına yönlendirir veya arama motorlarına sayfanın başka bir yere taşındığını bildirir.
302FoundYukarıdaki kalıcı yönlendirmeye benzer, ancak bu geçici bir değişikliktir ve yakında tekrar değişebilir.
400Bad RequestTarayıcıya isteğinde bir şeylerin yanlış veya eksik olduğunu bildirir. İstemcinin göndermediği belirli bir parametre gerekiyorsa kullanılabilir.
401Not AuthorisedBu kaynağı görüntülemek için yetkilendirilmiş olmanız gerekir, genellikle bir kullanıcı adı ve şifre ile.
403ForbiddenGiriş yapmış olsanız bile bu kaynağı görüntüleme izniniz yok.
405Method Not AllowedKaynak bu yöntem isteğine izin vermiyor; örneğin, /create-account kaynağı GET isteği alırken POST isteği bekliyordu.
404Page Not Foundİstediğiniz sayfa/kaynak mevcut değil.
500Internal Service ErrorSunucu isteğinizle ilgili bir hata ile karşılaştı ve bunu düzgün bir şekilde nasıl ele alacağını bilmiyor.
503Service UnavailableSunucu isteğinizi karşılayamıyor, çünkü aşırı yüklenmiş veya bakımda.

Bu HTTP durum kodlarının bazılarını tarayıcıda nasıl göründüğünü görmek için sağdaki “Siteyi Görüntüle” düğmesine tıklayın.

  1. Yeni bir kullanıcı veya blog yazısı oluşturduğunuzda hangi yanıt kodunu alabilirsiniz?

CEVAP: 201

  1. Var olmayan bir sayfayı erişmeye çalıştığınızda hangi yanıt kodunu alabilirsiniz?

CEVAP: 404

  1. Web sunucusu veritabanına erişemezse ve uygulama çökerse hangi yanıt kodunu alabilirsiniz?

CEVAP: 503

  1. Önce giriş yapmadan profilinizi düzenlemeye çalışırsanız hangi yanıt kodunu alabilirsiniz?

CEVAP: 401


Başlıklar (Headers):

Başlıklar, bir HTTP isteği yaparken web sunucusuna gönderebileceğiniz ek veri parçalarıdır.

HTTP isteği yaparken başlıklar kesinlikle gerekli olmamakla birlikte, bir web sitesini düzgün görüntülemeniz zor olabilir.

Yaygın İstek Başlıkları:

Bu başlıklar, istemciden (genellikle tarayıcınız) sunucuya gönderilir.

Yaygın Yanıt Başlıkları:

Bu başlıklar, bir isteğe yanıt olarak sunucudan istemciye döner.

Hangi başlık web sunucusuna hangi tarayıcının kullanıldığını bildirir?

CEVAP: User-Agent

Hangi başlık tarayıcıya döndürülen veri türünü bildirir?

CEVAP: Content-Type

Hangi başlık tarayıcıya hangi web sitesinin talep edildiğini bildirir?

CEVAP: Host


Çerezler (Cookies):

Çerezleri muhtemelen duymuşsunuzdur, bunlar bilgisayarınızda saklanan küçük veri parçalarıdır. Çerezler, bir web sunucusundan “Set-Cookie” başlığı aldığınızda kaydedilir. Daha sonra yaptığınız her istekte, çerez verilerini web sunucusuna geri gönderirsiniz. HTTP durumundan dolayı (önceki isteklerinizi takip etmez), çerezler web sunucusuna kim olduğunuzu hatırlatmak, web sitesindeki bazı kişisel ayarları veya web sitesini daha önce ziyaret edip etmediğinizi hatırlamak için kullanılabilir. İşte bir örnek HTTP isteği:

Çerezler birçok amaç için kullanılabilir, ancak en yaygın olarak web sitesi kimlik doğrulaması için kullanılır. Çerez değeri genellikle şifreyi görebileceğiniz bir düz metin dizisi olmaz, bunun yerine tahmin edilmesi zor olan benzersiz bir gizli kod (token) olur.

Çerezlerinizi Görüntüleme

Tarayıcınızın geliştirme araçlarını kullanarak web sitesine gönderdiğiniz çerezleri kolayca görüntüleyebilirsiniz. Tarayıcınızda geliştirme araçlarına nasıl erişeceğinizden emin değilseniz, bu görevdeki üst kısımda bulunan “Siteyi Görüntüle” düğmesine tıklayarak nasıl yapılacağına dair bir rehber bulabilirsiniz.

Geliştirme araçlarını açtıktan sonra, “Ağ” (Network) sekmesine tıklayın. Bu sekme, tarayıcınızın talep ettiği tüm kaynakların bir listesini gösterir. Her birine tıklayarak isteğin ve yanıtın detaylı bir dökümünü alabilirsiniz. Tarayıcınız bir çerez göndermişse, bunu isteğin “Çerezler” (Cookies) sekmesinde görebilirsiniz.

1. Çerezleri bilgisayarınıza kaydetmek için hangi başlık kullanılır?

CEVAP: Set-Cookie


Bu, demo HTTP istekleri yapmak için bir emülatördür, yukarıdaki görevlerden öğrendiklerinizi kullanarak aşağıdaki soruları tamamlamak için kullanabilirsiniz.

2. /blog adresine bir GET isteği yapın ve gear simgesini kullanarak URL alanında id parametresini 1 olarak ayarlayın

/user/1 için bir DELETE isteği yapın

Kullanıcı adı parametresi admin olarak ayarlanmış şekilde /user/2 adresine bir PUT isteği yapın

thm kullanıcı adını ve letmein parolasını /login adresine POST edin

Stay informed with the latest cybersecurity insights and best practices. Subscribe now for exclusive tips and updates

. (socials ).

. (location) .

We would love to here from you

They’ve never learned the most important rule of cyberspace – Computers dont lie but liars can compute.