XSS Tespiti İçin Kullanılan Gelişmiş Payload Örnekleri

BGA Security Wiki sitesinden
Şuraya atla: kullan, ara

Amaç:

İleri seviye XSS payloadları kullanarak, sıradışı XSS zafiyetlerini tespit/istismar etmek.

Lab Senaryosu:

Hedef uygulamada kısıtlı bir alanda bulunan XSS zafiyeti, sistemdeki IPS/WAF nedeniyle, sıradan payloadlarla istismar edilemez. OWASP’ın sayfasında bulunan “XSS Filter Evasion Cheatsheet” listesindeki birden fazla payload ve encoding yöntemi birleştirilerek, zafiyetin istismarı gerçekleştirilir.

Araç:

  • Iceweasel 22
  • yehg.net/encoding

Adımlar:

  • Hedef uygulamada inputların sayfada basıldığı noktalar tespit edilir. Inputlara bulundukları noktalara göre “, ‘, />, ; gibi karakterler girilerek, bulundukları durumdan kaçırılmaya çalışılırlar. Örneğin sayfanın URL’i,

<meta name=”domain” content=’url’ /> şeklinde HTML dokümanına meta tagı olarak ekleniyor olsun. Input olarak ‘/>payload girilerek sayfa <meta name=”domain” content=’url’/>payload’/> haline getirilebilir.

  • Örnek sistemde denenen <img src=”#” onerror=”javascript:alert(1)” />, <script>alert(1)</script> gibi birçok payload IPS’e takılıp başarısız olmaktadır. Böyle bir durumda, OWASP’ın “XSS Filter Evasion” adlı cheatsheet’inden veya benzer cheatsheet’lerden yararlanılarak IPS atlatılmaya çalışılır. Örnek sistemde, OWASP’ın cheatsheet’indeki hiçbir payloadın başarılı olmadığını varsayalım. Bu durumda, bazı payloadları kombine etme yöntemi uygulanır. Örneğin yapılan denemelerde

<input type=’image’ src=’test payloadının (orjinaldeki çift tırnaklar tek tırnakla değiştirilmiştir) IPS’e takılmadığı görülür. Ancak onerror= kelimesi eklendiğinde veya javascript: gibi inline javascript yazılmaya çalışıldığında, IPS payloadı engellemektedir.

  • <input type=’image’ src=’#’ onerror=’javascript:alert(1) olarak hazırlanan payload, yehg.net/encoding online aracı ile uygulanabilecek farklı encoding yöntemleri denenerek encode edilip URL’e eklenir. Payloadın tamamının( yani ‘/> sonra gelen kısım) encode edildiği durumların hepsinde, ya sunucu hata döndürürmekte ya da IPS engellemektedir. Bu durumda payloadın IPS tarafından engellenmeyen

<input type=’image’ src=’#’ kısmı alınır ve onerror=’javascript:alert(1) kısmına encoding uygulanarak, ilk paraçaya eklenip denenir. Bu yöntemle unicode encoding kullanarak IPS başarıyla atlatılır. İstismar kodunun son hali:

hedefsite.com/hedefsayfa.php?’/><input type='image' src='#' %u006f%u006e%u0065%u0072%u0072%u006f%u0072%u003d%u0027%u006a%u0061%u0076%u0061%u0073%u0063%u0072%u0069%u0070%u0074%u003a%u0061%u006c%u0065%u0072%u0074%u0028%u0031%u002 şeklindedir.