Hoşgeldin Misafir

Web For Pentester #1 XSS çözümleri

Quadro

22 Mar 2020
117 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:

XSS Nedir?​

XSS (Cross Site Scripting) script kodları üzerinden (genelde javascript) bir web sayfasına saldırı yapılmasıdır.

XSS çoğunlukla tarayıcıda saklanan bilgiler olan cookielere saldırı amacı ile kullanılmaktadır.

Hızlıca konuya geçelim iyi seyirler iyi okumalar

EXAMPLE 1

O5Qqk6Y8RV.png

Klasik olarak bir kod yazalım

Payload

<script>alert("TurkHacks")</script>

NmkyT.png


görmüş oldugunuz gibi çalıştı

ama bukadar degil Urlde soru işaretinden sonra bir name yani GET parametresi var

Bakalım example1.php dosyasının içine

4YrvmgGRC.png


$_GET[“name”] . parametresi aldığı değeri ekrana çıktı olarak veriyor

Yani hiçbir filtreleme yok girilen değer direk ekrana çıktı olarak yazılıyo

EXAMPLE 2

Burda aynı şekilde denedigimizde

RHYSuKo.png


bir filtreleme var ama ney sayfanın koduna gidelim

oDFt4.png


Evet bir filtlerele var ama script küçük olarak yazılmış şimdi farklı şekilde payloadımızı oluşturalım

Payload

<SCRİPT>alert(0)</SCRİPT>

<ScrİPT>alert(0);</SCript>

PCm2uYAG0Mi.png


EXAMPLE 3

Diğer örneklerde olduğu gibi buda önceki payloadlarımızı kabul etmicek oyuzden bi kaynak koduna bakalım
uovyLAO9k-.png


PHP kodu <script> ve </script> etiketlerini temizleyerek koruma sağlamaya çalışıyor ama yetersiz ama bunu ikinci defa yapmıyo.

örnek vericek olursam otobüse bindiniz siz kart bastınız ama arkanızdaki kişi basmadan geçti.

Payload

<scr<script>ipt>alert("0");</scr</script>ipt>

lGiZnBV42oPH.png


EXAMPLE 4

Kaynak koduna bakalım.

ZvDNMxA.png


İçerisinde “script” geçen herhangi bir kod görüldüğü zaman error verecek

Diğer javascript kodlarını çalıştırmayı deniyelim.

Payload

<svg onload=alert("TurkHacks")>

epmYEB.png


EXAMPLE 5

Kaynak koduna bakalım hemen.

qtMI2.png

Bu seferde script kodlarının çalışıp alert kodlarını filtrelediğini görüyoruz.

Alert gibi prompt kodumuz var bide onu deneyelim

Alert():Kullanıcıya bilgi verir.

Prompt():Kullanıcıdan bilgi alır.

Payload

<svg onload= prompt("TurkHacks")

[IMG width="668px"]https://r.resimlink.com/C-fcO0k.png[/IMG]

EXAMPLE 6

Şimdi ise hiçbir hata ve buton oluşmuyor sayfanın kaynak koduna bakalım.
kcQR56Fpx.png

yazdığımız kodları bir değer olarak kaydediyor.

şimdi ise yapıcağımız şey çok basit script taglarını kapatıcaz

Payload

</script><script>alert("TurkHacks")</script>
9VduICL6b8Nl.png


C5jsYopP_J.png


EXAMPLE 7

Önceki payloadlarımızı kullandıgımız'da bir hata almıyoruz
Sayfanın kaynak koduna bakalım

C_BHu.png

Değişkeni atarken tek tırnak kullanmış

Diğer örnekte olduğu gibi tırnağı kapatmamız lazım

Payload

';alert(1);';

2G8XTd5DC_a0.png


EXAMPLE 8

Sayfanın Kaynak kodlarına bakalım

NuoTfV.png

htmlentities fonksiyonu kullanılmış yani encode ediliyor.

PtD451A9.png


form tag ini kapatarak kendi script kodumuzu url üzerinden yazabiliriz.

NJFytV5w1UO.png


Payload

/"><script>alert(1)</script>


EXAMPLE 9

XhoyK3.png

Kodu incelediğimizde location hash kullanıldığını görüyoruz yani url imizde # den sonra yazdıklarımız sadece browser tarafında çalışacaktır sunucu tarafına hiç gitmeyecektir, bu xss zafiyetinin türü DOM XSS dir.

Payload

<script>alert(1)</script>

url encode olarak basıldığından bu zafiyet çözülmüyor, eski bir tarayıcı kullandığımızda çözülecektir.