Skip to content
Onlayer

HTTP PUT/DEL Metodlarının test edilmesi

Önem derecesiYüksek

enRead this article in English

HTTP üzerinden iletilen verilerin istemci tarafında nasıl işleneceği, talep edilen sayfa istemciye gönderilirken o sayfaya başlık olarak iliştirilir. Bu kısıma header denmektedir. Bir header HTTP protokolü ile iltilen içeriğin nasıl işleneceğini istemciye bildirken, istemci de aynı şekilde ne tür bir bilgi istediğini başlık içerisinde sunucuya iletir. Bu komutları test etmek için Telnet kullanabilirsiniz. Aşağıda Telnet ile onlayer.com’a bağlantının nasıl yapıldığı gösterilmiştir:

GET / HTTP/1.0
Host: onlayer.com

Bu talebin üzerine sunucu da aşağıdakine benzer bir header iletebilir:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sun, 26 Jul 2020 22:29:38 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://onlayer.com/index.php

<html>
<head>
<title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

Tarayıcının onlayer.com’u sunucudan talep etmesinden sonra, sunucu yukarıda gördüğünüz cevabı istemciye iletti. 8. satırdan öncesi header bölümüdür, header ile body kısımlarını HTTP protokolünde CR/LF dediğimiz bir karakter ayırır. Header ile body’nin bu şekilde ayrılması da apayrı bir zafiyete neden olmaktadır, bu konuda bilgi almak isterseniz CR/LF Zafiyeti yazımıza bakabilirsiniz.

Sunucu header kısmını incelersek:

  1. satır, bu sayfanın kalıcı olarak taşındığını istemciye bildirir
  2. satır, servise cevap veren servisin ismi
  3. satır tarih bilgisini
  4. satır içeriğin sunulma metodunu (burada okunabilir metin şeklinde)
  5. satır içeriğin uzunluğunu (header hariç)
  6. satır bağlantı tipini ve
  7. satır da Location kısmında belirtilen adrese tarayıcının yönlenmesi gerektiğini iletir.

Tarayıcı sunucudan bir sayfayı talep ederken GET komutu kullandı ancak sunucuya iletilecek komutlar sadece GET ile sınırlı değildir. Aşağıda örnek komutlar verilmiştir, sizde Telnet ile bu komutları deneyebilirsiniz:

  • PUT: Hedef sunucuya bir dosya ya da binary veri iletmek için kullanılır.
  • DELETE: Belirtilen dosyayı sunucudan siler.
  • TRACE: İletilen mesajı geri gönderir.
  • CONNECT: Sunucu bu komutu kabul ediyorsa proxy olarak kullanılabilir.
  • OPTIONS: Sunucunun kabul ettiği komutların listesini iletir.

Bu komutların bazıları sunucudaki bilgiyi değiştirme ile ilgili oldukları için tehlikeli olabilirler. Çoğu Web sunucusu bu komutları kurulumda kapalı olarak iletmektedir. Debug sırasında açılan bu fonksiyonlar işlem sonrasında kapatılmadıysa, saldırgan bu metodları kullanarak sunucu hakkında daha fazla bilgiye sahip olabilir. Saldırganlar genelde hem web uygulamalarına hem de onun altyapısını oluşturan bileşenlere saldırmayı tercih eder. Altyapıyı oluşturan bileşenlere işletim sistemi ve web sunucusu gibi servisler de dahildir. HTTP metodlarını kullanarak web sunucusunun ya da işletim sisteminin versiyonunu öğrenen bir saldırgan, CVE dediğimiz veri tabanlarında sistemin o versiyonuna ait açıkları arayacaktır. Bu tarz açıklar saldırganlar tarafından öncelikle denenmektedir, çünkü bu açıkların nelere neden olabileceği ve zafiyetin nasıl yaratılacağına dair belgeler İnternet üzerinde fazlasıyla bulunmaktadır. Bunun yanı sıra, PUT komutunun açık olduğu sunucularda saldırganlar zararlı kod atabilirler. Örneğin PHP için tasarlanmış olan shell dediğimiz scriptlerin örneklerini https://www.r57.gen.tr/ adresinde inceleyebilirsiniz. Bu shelleri sunucuya gönderebilen bir saldırgan o sunucunun tüm bilgilerine kolayca erişebilir.

Çözüm

Sunucuda kullanılmayan tüm komutları kapatın. Pratikte sadece GET, PUT ve HEAD komutları yeterlidir. PUT komutunu korumak için sunucu ve programlama seviyesinde önlemler alabilirsiniz. Doğrudan sunucu dizinlerine yazma hakkı vermek yerine php-fpm gibi yeni nesil script motorları kullanabilirsiniz. Hem web sunucusunda, hemde script motorunda kullanılmayan tüm shell komutlarını kapatın.

Yasal Uyarı

Copyright (c) 2019 – 2026 ONLAYER Bilişim Teknolojileri A.Ş.

Bu sayfadaki içeriğin kullanımı sadece bu sayfaya link ile atıf yapılarak mümkündür. Yazılı izin olmadan değiştirilemez ve alıntı yapılamaz.

Kullanım Uyarısı: Burada belirtilen direktifler olduğu gibidir ve uygulanması sonucunda oluşabilecek servis kesintileri ve veri kaybından ONLAYER sorumlu değildir. Sistemlerin daha iyi çalışabileceği ya da daha güvenli olacağına dair hiç bir garanti verilmemektedir. Ne firma ne de yazar kullanımdan dolayı hiçbir sorumluluk kabul etmemektedir.

Web uygulaması

← Bilgi Bankası'na dön