18 Şubat 2016 Perşembe

HTTP Status Code ve Anlamları

Web sitelerine girdiğimizde hatalarla karşılaşabiliyoruz. 
En yaygın karşılaştığımız ise 404 Not Found. 
Peki nedir bu hata dediğimiz aslında HTTP Durum Kodları olan sayılar ve ne anlama gelmektedir ?




Client bir servera HTTP kullanarak ulaşmaya çalıştığında server yanıtın durumunu belirten bir sayısal kod gönderir. Bazı durumlarda  HTTP durum kodu (HTTP Status Code) istemcinin tarayıcısında da gösterilerbilir Örn: 200, 301, 302, 404 ve 500 kodları en yaygın olanlardır.
Durum kodları 1'den 5'e kadar sınıflandırılmıştır;

1xx      Bilgi
2xx     Başarı
3xx     Yönlendirme
4xx     Tarayıcı Hatası
5xx     Sunucu Hatası

200 Kodu

200 kodu sitenin çalışır durumda olduğunu Google Botlarına bildirir, Google Botu da bu şekilde sitenin ayakta olduğunu anlayıp indexleme işlemine devam eder.

301 Kodu

301 kodu en önemli yönlendirme kodlarından bir tanesidir. Eticaret sitenizi 5 sene önce açtınız, sonra yapı değişikliğine veya kullandığınız hazır paketi değiştirme yoluna gittiniz. İşte bu durumda 301 kodu sitenizin hayatını kurtaran bir kod olarak karşınıza çıkar. Çünkü yıllardır emek verdiğiniz sayfaların sayfa adresleri (Url’leri) de bu değişiklik ile değişecektir. Google indexleme mekanizmasını sayfa adresleri üzerine kurduğundan yaptığınız değişikliği Google botlarına 301 ile bildirmediğiniz sürece eski sayfa adresleriniz ve yeni sayfa adresleriniz olmak üzere Google’da indexli sayfalarınız oluşur.
Bu durum kopya içerik (duplicate content) sorununa neden olacak ve kısa zaman içerisinde
Google’dan gelen trafiğiniz dörtte biri veya daha fazla oranda düşecek, eski sıralamalarınız gidecek, satışlarınız düşecek. Yazının bu kısmı biraz olumsuz oldu ama maalesef en sonunda bunlarla karşılaşacaksınız.
Fakat 301 kodunu doğru kullanırsanız eski sıralamalarınızın yeni sayfa adreslerine geçmesini sağlayabilir, trafik kaybını engelleyebilirsiniz. Burada da en önemli nokta 301 yaparken eski sayfa adreslerinizi birebir yeni adreslerinize yönlendirmeniz gerektiğidir. Yani example.com/id-55544 sayfasının yeni adı example.com/cep-telefonu ise ilk sayfa adresini ikinci adrese 301 ile yönlendirmeniz gerekmektedir. Bütün site için bu yapıyı kurmanız gerekmektedir.
301 server üzerinde yapılması gerekir, bu açıdan yazılımcınız ve server’a bakan ekibiniz size yardımcı olabilecektir. 301’in kısa tanımı kalıcı yönlendirmedir, bunu da eklemeden geçmeyeyim.

302 Kodu

302 kodu ise geçici yönlendirme çeşidi olarak bilinir. Eğer bir sayfa adresini arama motorunda göstermek isteyip kullanıcının eriştiği yerde başka adres kullanmak istiyorsanız bu yöntemi kullanabilirsiniz.
Örn: example.com/sayfa/id4444/reklam diye url’iniz mevcut ama TV reklamlarınızda example.com/reklam url’ini kullanıyorsanız ve ikinci url’e giren kişilere 1. url’e geçici yönlendirmek istiyorsanız 302 kullanabilirsiniz.
302 yönlendirme şekli verimsiz bir yönlendirme şeklidir aslında, arama sonuçlarında hiçbir şeyi değiştirmez. Genelde yapılan hata 301 yerine 302 yapılmasıdır. 302 geçici yönlendirme olduğundan yönlendirilen url arama sonuçlarında çıkmaya devam eder.
Sonunda da siz “iyi de biz bu url’i değiştirdik, yönlendirme de oluyor. Neden Google’da sonucum değişmiyor?” diyorsanız yönlendirme kodunuzu mutlaka kontrol edin.

404 Kodu
404 kodu Google Botlarına sayfanın artık var olmadığını bildirir. Böylece Google Botları o sayfayı indexlerinden siler bir daha arama sonuçlarında getirmemeye çalışırlar.
Fakat yine yapılan hatalar şöyledir;
1- Sayfayı kapatırsınız çok güzel bir 404 sayfası yaparsınız ama sayfada 404 yazıyor olması demek 404 verdiği anlamına gelmez. Mutlaka durum kodunun doğru olup olmadığını kontrol etmeniz gerekmektedir. Yine yukarıdaki gibi sayfamı kapattım ama Google’dan neden silinmiyor diyebilirsiniz. İşte asıl nedeni sayfanın Google botuna 404 kodunu göndermiyor olmasındandır.
2- Bir sayfayı kapatırsınız direkt 404 vermek yerine 302 ile başka sayfaya yönlendirir ve o sayfa 404 verir. Bu kullanım yanlıştır, mutlaka hatalı olan sayfa direkt 404 kodu vermelidir.

503 Kodu

503 kodu çok ihtiyaç olan ama kullanılmayan bir kod çeşididir. Sitenizde çalışma yaptığınız varsayalım ve komple sitenizi kapattığınızı, hiç kimsenin ulaşamadığını düşünelim. İşte bu durumda Google botlarının sitenize gelip hayal kırıklığı yaşamasını istemezsiniz sanırım.
Bu noktada sayfanızın durum kodu 503 olursa Google botu sitenizde çalışma olduğunu anlayıp geri gider, siteniz açıldığında yine sitenizi indexlemeye devam eder. Bu süreçte hiç kayıp yaşamazsınız.
Peki bu durum kodlarını nasıl sorgulayabilirsiniz ?
3- http://home.snafu.de/tilman/xenulink.html Bu araçla da sitenizin bütün url’lerini tarayıp hatalarını çıkartabilirsiniz.

CodeMesajAnlamı
1xx

Bilgi

100Continueİstek başarılı alındığı ve devam edilebileceği belirtilir
101Switching ProtocolsSunucu, istemciden aldığı protokol değiştirme isteğine uyacağını belirtmektedir
102Processingİşlem
2xx

Başarı

200OKİstek başarılı alınmış ve cevap başarılı verilmiştir
201Createdİstek başarılı olmuş ve sunucuda yeni bir kaynak yaratılmıştır
202AcceptedSunucu isteği kabul etti ancak henüz işlemedi
203Non-Authoritative Information Sunucu isteği başarılı işledi, ancak başka kaynakta olabilecek bilgi döndürmektedir
204No Contentİçerik Yok (İstek başarılı alınmış ancak geri içerik döndürülmemektedir)
205Reset Contentİstek başarılı alınmış ancak geri içerik döndürülmemektedir. Ancak içerik temizlenecektir (örneğin bir web formunda doldurulan bilgiler)
206Partial ContentGET için kısmi içerik (içeriğin bir belirli bir parçası) başarılıyla döndürülmüştür
207Multi-StatusÇok-Statü
210Content DifferentFarklı İçerik
3xx

Yönlendirme

300Multiple ChoicesSunucuda isteğe göre birden fazla seçenek olduğunu bildirir. Sunucu seçeneği kendisi seçebilir veya seçenek listesini görüntüleyebilir
301Moved PermanentlyBir kaynağın (veya sayfanın) kalıcı olarak başka bir yere taşındığını bildirir ve o yere yönlendirme sağlar
302Moved TemporarilyBir kaynağın (veya sayfanın) kalıcı değil geçici olarak başka bir kaynağa yönlendirir. Kaynağın ana adresi değişmemiştir
303See OtherFarklı bir kayanağa GET yapılması gerektiğini belirtir
304Not Modifiedİstenilen kaynakta daha önce yapılan istekten beri herhangi bir değişikliğin olmadı belirtilir ve içerik gönderilmez
305Use ProxySunucu tarafından döndürülen proxy'in kullanılması gerektiği belirtilir
307Temporary RedirectBir kaynağın (veya sayfanın) kalıcı değil geçici olarak başka bir kaynağa yönlendirir.
4xx

İstemci hatası

400Bad Requestİstek hatalı (isteğin yapısı hatalı) olduğu belirtilir
401Unauthorizedİstek için kimlik doğrulaması gerekiyor
402Payment RequiredÖdeme gerekiyor. (gelecekte kullanılması için ayrılmıştır)
403Forbidden Kaynağın yasaklandığını belirtir
404Not Foundİstek yapılan kaynağın (veya sayfanın) bulunamadığını belirtir
405İzin verilmeyen MetodSunucu , HTTP Method'u kabul etmiyor
406Not Acceptableİstemcinin Accept header'ında verilen özellik karşılanamıyor
407Proxy Sunucuda login olmak gerekliProxy üzerinden yetkilendirme gerekir
408İstek zaman aşamına uğradıİstek zaman aşımına uğradı (belirli bir sürede istek tamamlanamadı)
409Conflictİstek içinde çelişki var
410GoneKaynak artık yok
411Length Requiredİstekte "Content-Length" (içeriğin boyutu) belirtilmemiş
412Precondition FailedSunucu istekte belirtilen bazı önkoşulları karşılamıyor
413Request Entity Too Largeİsteğin boyutu çok büyük olduğu için işlenemedi
414Request-URI Too LongURI (URL) fazla büyük
415Unsupported Media Typeİstenilen kaynak istenilen medya tipinin desteklemiyor
416Requested range unsatifiableİstek yapılan parça (bir dosyanın bir parçası vb..) sunucu tarafından verilebiliyor veya uygun değil
417Expectation failedSunucu "Expect" ile istenileni desteklemiyor veya yerine getiremiyor
422Unprocessable entity
423Locked
424Method failure
5xx

Sunucu hatası

500Internal Server ErrorSunucuda bir hata oluştu ve istek karşılanamadı
501Uygulanmamış Sunucu istenilen isteği yerine getirecek şekilde yapılandırılmamıştır
502Geçersiz Ağ GeçidiGateway veya Proxy sunucusu, kaynağın bulunduğu sunucudan (upstream sunucusu) cevap alamıyor
503Hizmet YokSunucu şu anda hizmet vermiyor (kapalı veya erişilemiyor)
504Gateway TimeoutGateway veya Proxy sunucusu, kaynağın bulunduğu sunucudan (upstream sunucusu) belirli bir zaman içinde cevap alamadı
505HTTP Version not supportedHTTP Protokol versiyonu desteklenmiyor
507Insufficient storage 

[1] http://www.mesutmurt.com/12727-HTTP-durum-kodlari-HTTP-Status-Code-ve-anlamlari.html
[2] http://eticaretmag.com/http-durum-kodlari/
[3] https://tr.wikipedia.org/wiki/HTTP_durum_kodları
[4] http://www.fibiler.com/Bilim-ve-Teknoloji_Uygulamali-Bilimler-ve-Teknoloji_Bilgisayar-ve-Iletisim_Ag-Internet_HTTP-Protokolu_HTTP-Durum-Kodlari-Status-Codes_HTTP-Durum-Kodlari-HTTP-Status-Codes_Veri_12827

10 Şubat 2016 Çarşamba

Non-Interactive Shell den Interactive Shell e Geçiş

Sızma Testlerinde hedef üzerindeki zafiyetleri tespit ettikten sonra zafiyete yapılan exploit sonrasında elde ettiğimiz shell bazen non-interactive shell olabilmektedir.

Örneğin; Üzerinde bir çok zafiyet barındıran Metasploitable ın DistCC Daemon Command Execution zafiyetine yönelik exploit işlemlerini gerçekleştiriyoruz.














Resimde de görüldüğü üzere Metasploitable üzerinde shell imize ulaşmış olup non-interactive shell olduğunu görüyoruz.
















Non-interactive Shell den interactive shell e geçebilmemiz için küçük bir python kodu yazmamış yeterli olacaktır.

python -c 'import pty; pty.spawn("/bin/sh")'















Python kodunu yazınca interactive shell e geçmiş olduk. Interactive olmayan shell’ler kısıtlıdır. su – root komutu ile root kullanıcısına geçiş yapılmak istenildiğinde, linux bir Password prompt’u vererek root kullanıcısının şifresini isteyecektir. Bu tür promptların interactive olmayan shell’er üzerinden algılanması mümkün değildir.