Reflected XSS (Cross Site Scripting) Web Zafiyeti #1

Bunjo

Uzman üye
14 Ara 2020
1,594
1,897
Faraday
ro3fzuc.png


lbn20fm.png
2q250vr.png


Merhaba ben saldırı timlerinden BUNJO, bu konuda XSS (Cross Site Scripting) web zafiyetini anlatacağım.

XSS Nedir?

XSS, "Cross-Site Scripting" teriminin kısaltmasıdır ve web uygulamalarındaki güvenlik açıklarından biridir.
XSS saldırıları, saldırganın kötü niyetli bir şekilde oluşturduğu veya değiştirdiği bir web sayfasına gömülen,
genellikle JavaScript kodları içeren kötü niyetli kodları içerir.

XSS saldırıları, kullanıcının tarayıcısında çalıştırılan bu kötü niyetli kodlar aracılığıyla saldırganın istediği eylemleri gerçekleştirmesine olanak tanır.
Bu eylemler arasında kullanıcının oturum açma bilgilerini çalma, tarayıcıda kötü niyetli içerik gösterme,
sayfayı değiştirme veya kullanıcının tarayıcısındaki çerezlere müdahale etme gibi potansiyel tehlikeli faaliyetler bulunabilir.


XSS Çeşitleri

XSS için üç ana saldırı stratejisi vardır. Bunlar DOM XSS, reflected XSS ve stored XSS'dir.

Reflected XSS:

XSS saldırılarına karşı alınan önlemlerden filtrelemenin kullanılmamasından dolayı ortaya çıkar.
Dışarıdan alınan parametrenin girilmesi beklenen parametre yerine Javascript kodu girerek ekrana yansıtması
genellikle e-postalarda veya gizli bağlantılılarla hedef kullanıcıya tıklatılır ve kullanıcının oturum bilgileri saldırganın eline geçebilir.

Stored/Persistent:

En tehlikeli ve kalıcı olan XSS türüdür. Girilen payloadlar(kötü amaçlı eylemi gerçekleştiren solucanlar veya virüsler gibi kötü amaçlı yazılımın bir parçasıdır.
Veri silme, spam gönderme ve şifreleme amacıyla kullanılır.) anlık olarak yansımaz bir veri tabanında veya sunucularda saklanan komut dosyasıdır.

Reflected XSS ile arasındaki fark buradaki payloadlar kullanıcının görebileceği şekilde bulunur fark edilme oranı yüksektir fakat
stored XSS’te arka planda direkt olarak çalışacak ve kullanıcın fark etmesine izin verilmeyecektir.
Kullanıcı bu siteyi kullanırken bilgiler kolaylıkla çekilir.

Dom XSS:

DOM (Document Object Model) dolayısıyla kaynaklanan bir XSS türüdür. DOM tarayıcıların çalıştırıldığı zaman yorumladığı her şey DOM kapsar.
DOM XSS de payload enjekte edildiğinde sayfa kaynağında görülmez.

Amacın tanımdan çok pratik olması dolayısıyla tanımlar internetten alınmıştır, Kaynak: XSS (Cross Site Scripting) nedir ? XSS saldırı çeşitleri - Siber Eğitmen

Pratik

Senaryo 1

Bu senaryoda, herhangi bir filtreleme olmaması durumunu göreceğiz.

Siteye giriş yapıyoruz.



Açığın Kaynaklanma Sebebi:

PHP:

PHP:
<?php require_once '../header.php'; ?>
<html>
Hello
<?php
    echo $_GET["name"];
?>

<?php require_once '../footer.php'; ?>

URL'e baktığımız zaman "name" ile kullanıcıdan bir GET alınıyor ve php üzerinde çalıştırılıyor.
Herhangi bir filtreleme olmadığından dolayı kullanıcı istediği kodu sitede çalıştırabiliyor.




Şeklinde bir kod çalıştırması yapabiliriz.
Burada anlattıklarım XSS açığını sömürmekten ziyade, bulmak olduğu için anlatımımda alert() fonksiyonunu kullanacağım.



Senaryo 2

Bu senaryoda yetersiz bir filtrelemeyi bypass edeceğiz.

Her şey aynı şekilde kodumu çalıştırmayı deniyorum.



Açığın Kaynaklanma Nedeni:

PHP:
<?php require_once '../header.php'; ?>
Hello
<?php
    
    $name =  $_GET["name"];
    $name = preg_replace("/<script>/","", $name);
    $name = preg_replace("/<\/script>/","", $name);
echo $name;
?>
<?php require_once '../footer.php'; ?>

Burada kodu incelediğimiz zaman sadece "script" içeren kısımlar kaldırılıp işleme devam ediliyor. Kısacası büyük veya küçük harf kontrolü yok.



gördüğünüz gibi "script" kısımı kaldırıldı.

Fakat <SCRIPT>alert("bunjo")</SCRIPT> olarak bir bir kod denersek, "SCRIPT" ile "script" aynı olmadığından dolayı çalışacaktır.



Görüldüğü gibi işe yaradı.

Senaryo 3

Bu senaryoda da yine yetersiz bir filtrelemeyi bypass edeceğiz.

Kodumu çalıştırmaya çalışıyorum fakat işe yaramıyor.



Açığın Kaynaklanma Nedeni:

PHP:

PHP:
<?php require_once '../header.php'; ?>
Hello
<?php
    
    $name =  $_GET["name"];
    $name = preg_replace("/<script>/i","", $name);
    $name = preg_replace("/<\/script>/i","", $name);
echo $name;
?>

<?php require_once '../footer.php'; ?>

Burada "script" içeren her kısım kaldırılıyor.

Bu durumda izleyeceğimiz yol:



<sc<script>ript>alert("BUNJO")</sc</script>ript>

Kod karışık gelebilir fakat dikkatlice bakınca, php scriptinin filtreleme yaparken script gördüğü kısımları kaldırdığında

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

geriye bizim istediğimiz kodun kaldığını göreceğiz.



Ve başarılı.


İnternetten "XSS Reflected Payloads" adlı arama yaparak diğer payloadlara ulaşabilirsiniz.

Anlatacaklarım bu kadardı, diğer filtreleme seçenekleri içeren senaryoları daha sonra göstereceğim.

Okuyan herkese teşekkür ederim.
 

Butcherb3y

Uzman üye
1 Eyl 2022
1,617
1,199
Anıtkabir
ro3fzuc.png


lbn20fm.png
2q250vr.png


Merhaba ben saldırı timlerinden BUNJO, bu konuda XSS (Cross Site Scripting) web zafiyetini anlatacağım.

XSS Nedir?

XSS, "Cross-Site Scripting" teriminin kısaltmasıdır ve web uygulamalarındaki güvenlik açıklarından biridir.
XSS saldırıları, saldırganın kötü niyetli bir şekilde oluşturduğu veya değiştirdiği bir web sayfasına gömülen,
genellikle JavaScript kodları içeren kötü niyetli kodları içerir.

XSS saldırıları, kullanıcının tarayıcısında çalıştırılan bu kötü niyetli kodlar aracılığıyla saldırganın istediği eylemleri gerçekleştirmesine olanak tanır.
Bu eylemler arasında kullanıcının oturum açma bilgilerini çalma, tarayıcıda kötü niyetli içerik gösterme,
sayfayı değiştirme veya kullanıcının tarayıcısındaki çerezlere müdahale etme gibi potansiyel tehlikeli faaliyetler bulunabilir.


XSS Çeşitleri

XSS için üç ana saldırı stratejisi vardır. Bunlar DOM XSS, reflected XSS ve stored XSS'dir.

Reflected XSS:

XSS saldırılarına karşı alınan önlemlerden filtrelemenin kullanılmamasından dolayı ortaya çıkar.
Dışarıdan alınan parametrenin girilmesi beklenen parametre yerine Javascript kodu girerek ekrana yansıtması
genellikle e-postalarda veya gizli bağlantılılarla hedef kullanıcıya tıklatılır ve kullanıcının oturum bilgileri saldırganın eline geçebilir.

Stored/Persistent:

En tehlikeli ve kalıcı olan XSS türüdür. Girilen payloadlar(kötü amaçlı eylemi gerçekleştiren solucanlar veya virüsler gibi kötü amaçlı yazılımın bir parçasıdır.
Veri silme, spam gönderme ve şifreleme amacıyla kullanılır.) anlık olarak yansımaz bir veri tabanında veya sunucularda saklanan komut dosyasıdır.

Reflected XSS ile arasındaki fark buradaki payloadlar kullanıcının görebileceği şekilde bulunur fark edilme oranı yüksektir fakat
stored XSS’te arka planda direkt olarak çalışacak ve kullanıcın fark etmesine izin verilmeyecektir.
Kullanıcı bu siteyi kullanırken bilgiler kolaylıkla çekilir.

Dom XSS:

DOM (Document Object Model) dolayısıyla kaynaklanan bir XSS türüdür. DOM tarayıcıların çalıştırıldığı zaman yorumladığı her şey DOM kapsar.
DOM XSS de payload enjekte edildiğinde sayfa kaynağında görülmez.

Amacın tanımdan çok pratik olması dolayısıyla tanımlar internetten alınmıştır, Kaynak: XSS (Cross Site Scripting) nedir ? XSS saldırı çeşitleri - Siber Eğitmen

Pratik

Senaryo 1

Bu senaryoda, herhangi bir filtreleme olmaması durumunu göreceğiz.

Siteye giriş yapıyoruz.



Açığın Kaynaklanma Sebebi:

PHP:

PHP:
<?php require_once '../header.php'; ?>
<html>
Hello
<?php
    echo $_GET["name"];
?>

<?php require_once '../footer.php'; ?>

URL'e baktığımız zaman "name" ile kullanıcıdan bir GET alınıyor ve php üzerinde çalıştırılıyor.
Herhangi bir filtreleme olmadığından dolayı kullanıcı istediği kodu sitede çalıştırabiliyor.




Şeklinde bir kod çalıştırması yapabiliriz.
Burada anlattıklarım XSS açığını sömürmekten ziyade, bulmak olduğu için anlatımımda alert() fonksiyonunu kullanacağım.



Senaryo 2

Bu senaryoda yetersiz bir filtrelemeyi bypass edeceğiz.

Her şey aynı şekilde kodumu çalıştırmayı deniyorum.



Açığın Kaynaklanma Nedeni:

PHP:
<?php require_once '../header.php'; ?>
Hello
<?php
   
    $name =  $_GET["name"];
    $name = preg_replace("/<script>/","", $name);
    $name = preg_replace("/<\/script>/","", $name);
echo $name;
?>
<?php require_once '../footer.php'; ?>

Burada kodu incelediğimiz zaman sadece "script" içeren kısımlar kaldırılıp işleme devam ediliyor. Kısacası büyük veya küçük harf kontrolü yok.



gördüğünüz gibi "script" kısımı kaldırıldı.

Fakat <SCRIPT>alert("bunjo")</SCRIPT> olarak bir bir kod denersek, "SCRIPT" ile "script" aynı olmadığından dolayı çalışacaktır.



Görüldüğü gibi işe yaradı.

Senaryo 3

Bu senaryoda da yine yetersiz bir filtrelemeyi bypass edeceğiz.

Kodumu çalıştırmaya çalışıyorum fakat işe yaramıyor.



Açığın Kaynaklanma Nedeni:

PHP:

PHP:
<?php require_once '../header.php'; ?>
Hello
<?php
   
    $name =  $_GET["name"];
    $name = preg_replace("/<script>/i","", $name);
    $name = preg_replace("/<\/script>/i","", $name);
echo $name;
?>

<?php require_once '../footer.php'; ?>

Burada "script" içeren her kısım kaldırılıyor.

Bu durumda izleyeceğimiz yol:



<sc<script>ript>alert("BUNJO")</sc</script>ript>

Kod karışık gelebilir fakat dikkatlice bakınca, php scriptinin filtreleme yaparken script gördüğü kısımları kaldırdığında

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

geriye bizim istediğimiz kodun kaldığını göreceğiz.



Ve başarılı.


İnternetten "XSS Reflected Payloads" adlı arama yaparak diğer payloadlara ulaşabilirsiniz.

Anlatacaklarım bu kadardı, diğer filtreleme seçenekleri içeren senaryoları daha sonra göstereceğim.

Okuyan herkese teşekkür ederim.
Elinize sağlık hocam güzel olmuş açıklayıcı örneklerle
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.