JSON Kullanılan Uygulamalarda XSS Zafiyeti ve İstismarı

JSON (“Javascript Object Notation”), insanlar tarafından okunabilen bir veri değişimi biçimidir. XML‘in Javascript ile çok da iyi kullanılamamasından ötürü tercih edilir. [1]

Normal uygulanan sızma teknikleri aynen JSON ‘da denenerek sonuca ulaşılabilir. PHP ‘de veri değişimi olmadan yapılan ataklar çok fazla göz önünde olduğundan zaafiyet tespiti daha kolaydır. JSON’da ise her istekten sonra HTML kaynak kodlarının analizi gerekebilir. İstek – cevap işlemlerinin daha hızlı yapılması ve kaynak kodların hızlı analizi adına Burp Suite, ZAP gibi proxy işlevi gören araçlar kullanılabilir.

Yukarıda anlatılanlar, daha açıklayıcı olması adına bir örnekle pekiştirilecektir. Aşağıda verilen örnekte, JSON kullanan bir uygulama (OWASP Mutillidae) üzerinde XSS zaafiyetinin istismari adım adım gösterilmiştir. SQL injection ve diğer atak türleri JSON kullanılan bir uygulamada aynı mantıkla uygulanabilir.

1. Bu örnekte kullanıcı girişi POST metodu ile tanımlanmıştır. Aşağıdaki resimde gösterilen form, Burp Suite ile rastgele doldurularak POST edilir. ToolID parametresinin değeri BGASecurity olarak değiştirilip post edilmiştir.

1.png
2. Dönen cevapta html kaynak kodlar arasında, değiştirilen değer aranır. Dönen cevapta, BGASecurity arandığında BGASecurity sözcüğü kaynak kodlar arasında aşağıdaki gibi yer almaktadır.

2.png
var gPenTestToolsJSONString = ‘{“query”: {“toolIDRequested”: “BGASecurity”, “penTestTools”: []}}’

3. İkinci adımda gelen isteğe ve kullanıcı girdisinin bulunduğu konuma göre payload yazılır.

Form:
Ön ek
BGASecurity”}}’;
Payload
alert(document.cookie);
Son Ek
//
Girdi
BGASecurity”}}’;alert(document.cookie);//

Formda belirtilen ön ek değeri ile ikinci adımda gelen satırdaki açık parantezler kapatılır ve ; ile satır sonuna gelindiği belirtilir. Buradan sonra Payload yazılır ve Payload’dan sonra gelen kodların yorum satırı olarak yorumlanması için // karakterleri eklenir.

4. Üçüncü adımdaki formda verilen Girdi değeri ToolID parametre değeri olarak POST edildiğinde XSS zaafiyeti istismar edilecek ve sonuç aşağıdaki gibi olacaktır.

3.png

Kaynaklar

[1] Web Adresi : http://tr.wikipedia.org/wiki/JSON, Erişim Tarihi: 17/07/2014