17 Ekim 2012 Çarşamba

IIS 7,7.5'de Maximum Query String değeri ve önemi - Nass oluyor da oluyor?

IIS 7 (Windows 2008) ve 7.5 (Windows 2008 R2) ile birlikte gelen "Request Filtering" isimli güzel bir ek özellik daha doğrusu Role Service var daha önceki yazıları takip edenler hatırlayacaktır. Windows 2008 ve 2008 R2 işletim sistemlerine IIS rolü kurmaya çalıştığınızda bu rol hizmeti de varsayılan olarak yüklenecekler listesine eklenir tabi siz özellikle kutucuktaki "tick" işaretini kaldırmazsanız.Bu rol hizmeti temel olarak daha önceki IIS versiyonlarına uygulanabilen URLScan aracındaki fonksiyonları ve daha fazlasını kullanılabilir hale getirir. Bu fonksiyonlardan biri de dinamik web sayfalarınıza gönderilen query stringleri sınırlama özelliğidir.
Request Filtering rol hizmetini yükleseniz de yüklemeseniz de IIS sunucunun loglarında "cs-uri-query" sütununda dinamik sayfalar için görebileceğiniz "Query String" uzunluğu 4096 karakterdir.Dinamik sayfalarınıza gelen query string uzunluğu 4096 karakterden uzunsa IIS "cs-uri-query" sütununa karşılık gelen alana Resim 1'de gösterildiği gibi  3 nokta ( "..." ) karakteri ekler.

Resim 1


IIS sunucular için koruma önlemi olarak düşünülen bu özellik bir başka tehlikeyi beraberinde getiriyor. "Query String" lerle yapılan SQL injection ve benzeri saldırıların kayıt altına alınamaması (loglanamaması),tespit edilememesi - bir nevi radara yakalanmama.
Aşağıdaki örnekteki gibi SQL Injection zaafiyeti olan sayfaya gönderdiğiniz Query string IIS loglarında kayıt altına alınacaktır ( Resim 2 )

http://www.kurban.com/urunler/urunler.asp?urunid=123 or 1=1--
veya
http://www.kurban.com/urunler/urunler.asp?urunid=123;DROP TABLE Products

Resim 2

Ama eğer hedef sunucu IIS versiyonu 7'den düşükse ve URLScan kurulu + konfigüre edilmemişse, veya hedef sunucu IIS versiyon 7 veya 7.5 ise ve Request Filtering yüklü değilse yukardaki sayfalar aşağıdaki gibi çağrıldığında SQLi zaafiyetini kullanmaya yönelik istek  IIS sunucu loglarında Resim 1'de gösterildiği gibi listelenecektir. Bu da saldırının başarılı olmasına ve zaafiyeti kullananın kimliği, zaafiyetin ne zaman kullanıldığı gibi bilgileri gizlemeye yeter.

http://www.kurban.com/urunler/urunler.asp?urunid=123 or 1=1;&yardir=<4096 adet="adet" herhangibir="herhangibir" karakter="karakter">

ya da daha açık gösterimiyle


http://10.10.10.4/urunler.asp?urunid=123 or 1=1;&yardir=xxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Neyse ki yazının başında belirttiğim gibi Microsoft IIS 7 ve 7.5 kurulumuyla birlikte "Request Filtering" i de varsayılan olarak kurulacak rol hizmetler listesine ekliyor. Bu hizmet kurulduğunda varsayılan olarak dinamik sayfalarınızdan gelecek "Query String" uzunluğunu 2048 karakterle sınırlıyor ( Maximum Query String - Resim 3 ), yani query string uzunluğu 2048'den fazla ise HTTP isteğine 404 koduyla cevap veriliyor.Dolayısıyla belirlediğiniz karakterden uzun saldırgan isteğin loglanmaması gibi korku da kalmıyor.

Resim 3

Bu değer çoğu web sitesi ve uygulaması için bile fazla, ihtiyaçlarınız doğrultusunda değiştirebilirsiniz ama yukarda anlattığım sebeplerden dolayı 4096'den fazla değer vermemeye dikkat edin. 7'den düşük IIS versiyonu kullanıyorsanız güncel URLScan eklentisini kurun ve konfigüre edin.
Yazıyı hazırlarken kullandığım Internet Explorer 8 versiyonu, kabul ettiği URL uzunluğunu 2083 karakterle sınırladığı için ( adres satırına 2083 karakterden daha uzun bir adres yazamıyorsunuz ) testleri aşağıdaki VB Script ile yapmak zorunda kaldım.

http_get.vbs
----------------------------------------------------------------------------------

Const CREDENTIALS_FOR_SERVER = 0
Const CREDENTIALS_FOR_PROXY = 1
Const HTTPREQUEST_PROXYSETTING_PROXY = 2

str=""
for i=1 to 4096
str=str&"x"
Next

testUrl = "http://10.10.10.4/urunler.asp?urunid="&str
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 
'Proxy kullaniyorsaniz asagidaki 2 satirin basindaki tirnaklari silin
'strProxy = "proxysunucusu.firmam.com:8080"
'objHttp.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, strProxy
objHTTP.open "GET", testUrl,false
objHTTP.send
WScript.Echo objHTTP.status&"-"&objHTTP.statusText
WScript.Echo objHTTP.responseText
--------------------------------------------------------------------------------------------------------



İlgili Yazılarım
IIS Sıkılaştırma Klavuzu - Nam-ı diğer Security Hardening Guide
IIS 7 - 7.5 Request Filtering - Nass oluyor da oluyor ? File Name Extension & HTTP Verb filtreleme
IIS 7 - 7.5 Request Filtering - Nass oluyor da oluyor ? Rules & Headers
IIS 7 ve 7.5'i Slow Loris DOS Saldırısına Karşı Koruma - Nass oluyor da oluyor?

Hiç yorum yok:

Yorum Gönder