[PentesterLab] Web For Pentester – XSS

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
Okan Köse tarafından yazılmıştır.

[TR] [PentesterLab] Web For Pentester – XSS​






Cross site scripting

Cross site scripting





Web for Pentester, PentesterLab tarafından Web Pentesting uygulaması için hazırlanmış bir Sanal Makine ISO’dur.

Web uygulamasında bulunan zafiyetler;

  • XSS
  • SQL Injection
  • Directory Traversal
  • File Include
  • Code Injection
  • Command Injection
  • File Upload
  • LDAP

Bu yazıda XSS güvenlik açıklarına bakacağız. PentesterLab – Web For Pentester’ı https://pentesterlab.com/exercises/web_for_pentester/course bağlantısını kullanarak indirip kurabilirsiniz.



XSS 1. Örnek

Cross site scripting

Cross site scripting

İlk örnekte URL’de ki name parametresinin aldığı değeri ekrana bastırdığını görüyoruz, bunu PwnLabMe olarak değiştirelim.

Cross site scripting

Cross site scripting

Herhangi bir javascript kodunu çalıştıralım.

Payload: <script>alert(“PwnLabMe”)</script>

Cross site scripting

Cross site scripting

Herhangi bir filtre mekanizması olmadığından basit script çalıştı.



XSS 2.Örnek

Cross site scripting

Cross site scripting
  1. örneğimizde de name parametresi ekrana yansıdı.
Cross site scripting

Cross site scripting

Bir önceki örnekte kullandığımız payloadı burada denediğimizde <script> </script> taglarının silindiğini ve kalan değerin ekrana yansıdığını görüyoruz. Kullandığımız <script> tag’ı filtrelenmiş, bu filtrelemeyi atlatmanın en temel yollarından biri taglar ile oynamaktır.

Tagımızı <SCRIPT> </SCRIPT> , <scRIPt> </scRIPt> gibi farklı kombinasyonlar ile deneyebilir veya

<svg onload=alert(“PwnLabMe”)> gibi farklı taglar da deneyebiliriz.

Cross site scripting

Cross site scripting

Büyük harfler filtrelenmediği için payloadımız çalıştı.

Payload: <SCRIPT>alert(“PwnLabMe”)</SCRIPT>



XSS 3.Örnek

  1. örnekte de name parametresinin ekrana yansıyor fakat bir önceki örnekte kullandığımız büyük harfli tagımızın filtrelendiğini görüyoruz.
Cross site scripting

Cross site scripting

Sistem ilk gördüğü <script> , <SCRIPT> taglarını sildiği için iç içe script tagını deniyelim.

Payload: <sc<script>ript>alert(“PwnLabMe”)</sc</script>ript>

Cross site scripting

Cross site scripting



XSS 4.Örnek

  1. örnekte de name parametresinin ekrana yansıyor ama <script> tagını kullandığımızda “error” mesajı yansıyor yani <script> tagımız engellemiş , farklı bir tag kullanmamız gerekiyor.
Cross site scripting

Cross site scripting
  1. örnekte farklı kombinasyon olarak kullandığımız payloadımızı deniyelim.

Payload: <svg onload=alert(“PwnLabMe”)>

Cross site scripting

Cross site scripting



XSS 5.Örnek


Name parametresi yine ekrana yansıyor ve tekrar error ile karşılaştık.

Cross site scripting

Cross site scripting

Payloadımız da tagları,ifadeleri ve işaretleri sırası ile sildiğimizde alert fonksiyonunun engellendiğini görüyoruz. Alert fonksiyonu için kullanılabilecek bir diğer fonksiyon ise prompt dur.

Payload: <script>prompt(“PwnLabMe”)</script>

Cross site scripting

Cross site scripting



XSS 6.Örnek

  1. örneğimize baktığımızda name parametresi ekrana yansımıyor. Kaynağı incelediğimizde değerin mevcut script taglarının içinde bir değişkene atandığını görüyoruz.
Cross site scripting

Cross site scripting

Mevcuz script tagını kapatıp payloadımızı yazıyoruz.

Payload: </script><script>alert(“PwnLabMe”)</script>

Cross site scripting

Cross site scripting

Bir diğer yöntem ise var $a= “PwnLabMe”; javascript etiketi içindeki $ a değişkeninden çift tırnak(“) ile kurtulmaktır.

Payload: “;alert(“PwnLabMe”);”

Cross site scripting

Cross site scripting



XSS 7.Örnek

Cross site scripting

Cross site scripting
  1. Örnekte yapmış olduğumuz payloadı bu sefer tek tırnak(‘) ile yapıyoruz.

Payload: ‘;alert(‘PwnLabMe’);’

Cross site scripting

Cross site scripting



XSS 8.Örnek


Burada işler biraz değişiyor, artık URL üzerinde bir parametreye değer girmiyoruz.

Cross site scripting

Cross site scripting

Basit bir payload denediğimizde encode edildiğini ve çalışmadığını görüyoruz.

Cross site scripting

Cross site scripting

Kaynağı incelediğimizde girdiğimiz değerin /xss/example8.php bağlantısına post edildiğini görüyoruz.

Bu durumda <form> tagının içinde script çalıştırmayı deniyelim. Bunun için girdiğimiz değerde bu dizini sonlandırıp parametresini kapatmamız ve son olarak da tagı kapatıp payloadımızı yazmamız gerekiyor.

Payload: /”><script>alert(“PwnLabMe”)</script>

Cross site scripting

Cross site scripting



XSS 9.Örnek


Bu bölümde dom xss bulunmaktadır. # ifadesinden sonra alınan kısım ekrana bastırılmıştır.

Cross site scripting

Cross site scripting

Payloadımızı # işaretinden sonra ekliyoruz ve sayfayı yeniliyoruz.

Payload: <scipt>alert(“PwnLabMe”)</script>

NOT:
Modern tarayıcılarda çalışmayabilir bu yüzden eski sürümlerde test edebiliriniz. Windows xp’deki internet explorers da çalışır.
 
Moderatör tarafında düzenlendi:
Geri
Üst