24 Haziran 2014 Salı

XSS zafiyetini loglardan kaçırmak



Reflected XSS zafiyetlerini kullanırken ?param=<script>alert(1);</script> gibi basit bir saldırı vektörüyle JavaScript çalıştırabilmekteyiz. Fakat bu tarz bir XSS saldırı vektörü, Apache HTTP sunucusunun access.log kayıtlarına geçtiği için kısa bir zamanda fark edilecektir.

Konuyu detaylandırmak adına ufak bir uygulama yapalım.


1- test.php?param=<script>alert("HEYYYYYYYYYYYYYY")</script> şeklinde bir saldırı vektörü oluşturalım. (Sunucu tarafındaki kod parçası : <?php echo $_GET["param"]; ?> )

2- "tail -f access.log" komutu ile access.log dosyasını gerçek zamanlı takip ediyoruz.



Görüldüğü üzere param değişkeninden aldığımız veri loglarda kayıtlı bir şekilde durmakta. Şimdi saldırı vektörümüzü görünmez yapmaya çalışalım. Bunun için Dom XSS yöntemiyle ile Reflected XSS yöntemini birleştiriyoruz.

Saldırı vektörümüz aşağıdaki gibi olmalıdır.

?param=<svg/onload=innerHTML=location.hash//#<img src=1 onerror=confirm("Fire!")>

Saldırı vektörümüzü görünmez yapmak için, SVG etiketinin onload olayını kullanarak, Source ve Sink dinamiklerini oluşturduk. Daha sonra "#" ifadesinden sonraki alanı JavaScript engine'in içine gönderdik.

"tail -f" komutu ile takip ettiğimiz access.log dosyasına tekrar bakalım.



Görüldüğü üzere localtion.hash ifadesinden sonraki kısım tarayıcı da çalıştığı için sunucu tarafında görünmez olmuştur.

Test için:
Firefox
Linux Mint


EOF

0 yorum:

Yorum Gönder