Site Hackleme Rehberi #2

The Gölge

Saldırı Timleri Emektar
Nedir Bu XSS ?

cxsfms7.jpg


Siteler Arası Betik Çalıştırma(Cross-Site Scripting - XSS) saldıları, kötü niyetli kullanıcıların web sitelerinin çeşitli input(veri giriş) yerlerinden site içerisine enjekte edilen betik dili kodlarının sisteme verdiği açıktır.

XSS Saldırılarının Türleri Nelerdir?

1 - Reflected XSS:
Reflected XSS, XSS türlerinin en basitidir. Veri giriş ya da URL alanlarına Javascript kodlarını girerek yanıtları ekrana yansıtarak verdirilir.

Bir Reflected XSS senaryosu:

http://forum-golge.net/chat?message=Merhaba+Gencler

<p> Siz: Merhaba Gençler </p>

Web uygulaması, veriler üzerinde herhangi bir filtreleme vb. işlem yapmaz,bu sebeple bir saldırgan çok kolay bir şekilde aşağıdaki gibi bir saldırı oluşturabilir:

http://forum-golge.net/chat?message=<script>/*Zararlı+Kod*/</script>

<p> Siz: <script>/*Zararlı Kod*/</script> </p>

Web uygulamasını kullanan herhangi bir kullanıcıya atılacak olan bu URL saldırganın yazdığı zararlı kod parçacığını aktifleştirecektir.Bu noktada saldırgan tarafından yazılan zararlı kod saldırganın belirlediği kodlar çerçevesinde eylem gösterebilir.
Bunlar:

Kullanıcı oturum bilgilerini çalma, Bilgisayarınız da çeşitli eylemler gerçekleştirme, Kullanıcının kamerasını açma, Kullanıcın erişimi olan herhangi bir veriyi alma gibi

2 - Stored XSS:
Stored XSS, İnput(veri giriş) yerlerinden alınan verilerin hiç bir filtreleme gibi işlemlerin yapılmadan database(veritabanı) kaydedilmesiyle oluşur ve Reflected XSS'e göre çok daha tehlikelidir.Çünkü, Reflected XSS sadece URL bağlantısını attığınız kişiye yansıyarak sadece onu etkilemekte ama Stored XSS database(veritabanı) kaydedildiği için database(veritabanı) kullanan tüm web uygulama ve kullanıcılara zarar vermekte.


Stored XSS için bir senaryo görelim:

<p> Merhaba arkadaşlar,nasılsınız </p>

Uygulama dijital bir platform ve bu platform da bir adet gönderi yayınlanıyor.Veriyi hiç bir filtreleme yapmadan database(veritabanı) kaydediliyor ve bunu diğer kullanıcılar normal olarak görüyor.

<p><script>/*Zararlı Bir Kod*/</script></p>

Şimdi ise veritabanına filtrelemeden geçmemiş bir zararlı kod kaydediliyor.Bu koda denk gelen kullanıcılar kodun işlemine maruz kalıyor.


rgux5g4.png


3 - DOM Based XSS:
DOM(Document Object Model)’da meydana gelen saldırıdır. Reflected ve Stored XSS saldılarında saldırıyı görmek mümkünken aynı şey DOM Based XSS saldırısında mümkün değildir.Reflected ve Stored XSS saldılarına nazaran DOM Based saldırılarda # karakterini en başa kullanarak zararlı koda başlıyoruz. Çünkü # karakterinden sonra yazılan hiçbir şey HTTP trafiğinde gözükmemekte dolayısıyla server’a gönderilmemektedir. Bu durumda özellikle Stored’a nazaran işlevsel açıdan daha tehlikeli bir saldırı yapmakta.

Aşağıdaki kodları içeren şu sayfayı düşünelim
http://www.ornekgolge.net/deneme.html

<script>
document.write("<b>Geçerli URL</b> : " +
document.baseURI);
</script>

http://www.ornekgolge.net/deneme.html#<script>alert("Merhaba Gölge");</script>

şeklin de HTTP isteği yolladığımızda Javascript kodumuzun çalışması için yeterli olur.Çünkü document.write fonksiyonuyla URL'ye ne yazarsanız sayfa da onu ekrana yazar. Sayfanın kaynağını incelediğimiz de

<script>alert("Merhaba Gölge");</script>

kodunu göremeyiz.Sebebi olan olayın DOM tarafında gerçekleşmesi.

Neden XSS Saldırıları Yapılmakta ?

XSS güvenlik açığını farkedip sömürmek isteyen saldırgalar genelde şunları yapabilir:

1. Kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirmek.

2. Kullanıcının erişebildiği tüm verileri okumak.

3. Kullanıcının oturum açma bilgilerini ele geçirmek.

4. Web sitesin de kalıcı zarar vermek

5. Virüsleri web sitesine enjekte etmek

rgux5g4.png


XSS Saldırıları Nasıl Engellenebilir ?


1 - HTTPOnly ve Secure Flaglerinin Belirtilmesi
HTTPOlny ve Secure Flagleri web uygulamaları oluşturulurken ilk aşamalarında php cofigure php sürümüne uygun şekilde belirtilmelidir.

Bu flagler oturum çalma saldırılarını engelleyecektir
Bu sebeple web uygulama geliştiricileri henüz ilk aşamada bu flagleri belirtmelidir aksi taktirde manuel şekilde filtrelenmiş olan payloadlar saldırganlar tarafından bypass edilebilir

2 - Allowlist Değerleri

Kullanıcı girişini belirli bir izin listesiyle sınırlayın. Bu uygulama, sunucuya yalnızca bilinen ve güvenli değerlerin gönderilmesini sağlar.

3 - Girişlerde HTML'i Önleyin ve Kısıtlayın
Zengin içerik için HTML gerekli olsa da, güvenilir kullanıcılarla sınırlandırılmalıdır.

4 - Sanitize Değerleri
Bir sayfada kullanıcı tarafından oluşturulan içeriği kullanırken, güvenli olmayan karakterleri ilgili entity’ler ile değiştirerek bunun HTML içeriğiyle sonuçlanmamasını sağlayın. Entity’ler normal bir karakterle aynı görünüme sahiptir, ancak HTML oluşturmak için kullanılamaz.

5 - WAF Kullanın
Web sitenize yönelik saldırıları engellemek için bir güvenlik duvarı kullanabilirsiniz. Bu yöntem, kötü niyetli istekler web sitenize ulaşmadan önce XSS, RCE veya SQLi gibi saldırıları engeller. Ayrıca DDOS gibi büyük ölçekli saldırılara karşı koruma avantajına da sahiptir.


---------------------------------------------------

#-İçindekiler-#

1- Cross Site Scripting Nedir
1.1- Nasıl Tespit Edilir
1.2- Nerede Görülür
2- Cross Site Scripting Türleri
3- Waf(Güvenlik Duvarı) Atlatma Methodları
4- Zafiyetin Sömürümü
5- Zafiyetin Kapatılması ve Alınabilecek Önemlemler

Merhaba saygıdeğer TürkHackTeam okurları, bu makalemde tüm hatlarıyla Cross Site Scripting(XSS) konusu ele aldım. İlgisi olanlar için faydalı olması dileğiyle.



6phtekg.png

Cross Site Scripting Nedir

Cross Site Scripting diğer bir adıyla XSS zafiyeti, PHP tabanlı kullanıcıdan alınan verilerin gerekli filtrelemeler uygulanmadığı için ortaya çıkan bir zafiyet olup ilk keşfedilip raporlanması Symantec tarafından 2007 tarihinde gerçekleşmiştir.
Sitede betik çalıştırmaya imkan kılan bu zafiyet OWASP TOP 10 zafiyet sıralamasında Injection kategorisinde yedinci sırada yer almaktadır.

jdyyeqs.gif

Nasıl Tespit Edilir

Cross Site Scripting zafiyetini tespit etmenin iki yolu bulunmakta:

1. Araç Kullanarak

Cross Site Scripting zafiyeti tespiti için birden fazla araç bulunmakta ama içlerden en çok kullandığım araç XSStrike aracı
XSStrike aracı içinde hali hazırda bulunan payloadları ile site üzerinde otomatik XSS araması yapmakta.

Github Linki

Araç Python3 yazılmış bir araç olduğu için python3 ile çalıştırmanız gerekmekte !

Örnek Kullanım:

python3 xsstrike.py -u www.site.com/search.php?search=

t30gi6n.PNG

2. Araç Kullanmadan

Araç kullanmadan bu zafiyeti nasıl tespit edilir o konuya gelelim, bizim javascript bilmemiz kritik önem html bilmemiz ise de bizi XSS zafiyetinin tespitinde önem taşır.
Belirli başlı payload üzerinden mantığını inceleyelim.
# <script>alert(1)</script> #
En temel xss payloadıdır. Mantığı javascriptte bulunan alert() fonksiyonunu kullanarak sayfada bir adet uyarı pop upı çıkarmaktır.

Örnek Görsel:

e4a3cvj.PNG

jdyyeqs.gif

Nerede Görülür

İlk bakış açımız önemli, web tarafınca en çok kullanıcıdan veri alım şekli arama çubuklarıdır. Genellikle get methodu kullanılarak kullanıcıdan alınan verileri site içerisinde arama yapmak amaçlı kullanılır lakin gerekli güvenlik önlemleri alınmadığı için kolaylıkla xss zafiyeti bulunabilir.
İkinci önemli bakılması gereken yer ise siteye kullanıcı tarafınca siteye yüklenen dosyaların filtresiz bir şekilde yüklenmesi ise kullanıcıdan sitenin içine doğrudan javascript dosyası yükleyerek siteye kalıcı zararlar verebilir.

jdyyeqs.gif

Cross Site Scripting Türleri

1- Reflected XSS:

XSS türleri arasında en yaygınıdır. Bu Xss türünde kullanılan payloadlar tarayıcı üzerinden kullanıcıya yansır. En çok görülen yeri ise urllerdir. Temel saldırı senaryosu kurban kullanıcıya atılan zararlı url ile kullanıcının tarayıcısında seri bir xss betiği çalıştırıp ona zarar vermektir.

2- Stored XSS:

En tehlikeli XSS türleriden biridir. İki tip karşılaşılan türü vardır:
1) Dosya Biçiminde: Filtresiz kullanıcıdan alınan dosyalardan veyahut File Upload zafiyetinden yararlanılarak sistemin içine yüklenen zararlı xss kodu içeren dosya ile gerçekleşir.
Örnek Senaryo: Sisteme File Upload zafiyetinden yararlanılarak yüklenen shell aracılığıyla hata anında yönlendirilen 404.php adında bulunan hata indexinin içeriğine zararlı bir payload yükleyerek ve index sayfasında 404.php dosyasına yönlendirecek bir hata çıkartırsak sisteme giriş yapan kullanıcılar bizim zararlı payload yüklediğimiz 404.php sayfasına yönlendirilecek ve zararlı xss kodumuza maruz kalıcaklar.

2) Filtresiz Kullanıcılardan Alınan Girdiler Aracılığıyla: Çoğu sistemde bulunan kullanıcılardan yorum amaçlı girdi alınan yerler mevcuttur ve bu girdileri sistemi ziyaret eden bir çok kullanıcı görmekte. Burada kullanıcılardan girilen yorumların filtrelenmesi hayati önem arz etmekte, eğer ki filtrelenme işlemi yapılmazsa ya da gerekli önlemler alınmazsa ciddi tehlikeler doğurabilir.
Örnek Senaryo: Herkes tarafından okunan bir haber site varsayalım. Bu site için açılan bir yorum sayfasında gerekli önlemler alınmadığını düşünürsek karşılaşabileceğimiz tehlikeler.
1) Siteyi başka bir siteye yönlendiren xss payload'ı yazılabilir.
2) Siteye giriş yapmış bir kullanıcının Cookie bilgisini alan bir xss payload'ı yazılabilir.

3- DOM Tabanlı XSS:

Reflected XSS ile benzerlik taşır. Saldırının temel amacı DOM(Document Object Model)'u değiştirmektir. Tamamen tarayıcı tarafında gerçekleşir. Payloadların başında diğer xss payloadlarına nazaran farklı # görülür. Bunun sebebi ise # karakterinden sonra yazılan herhangi bir yazı HTTP trafiğinde görülmemekte bu durumda server'a iletilmemektedir.

jdyyeqs.gif

Waf(Güvenlik Duvarı) Atlatma Methodları

Waflar yazılımcılar tarafından en çok kullanılan güvenlik yöntemleridir. Çoğu zaman kullanılan methodlar ile wafları kolaylıkla atlatabilmekteyiz.
Wafları atlatmanın temel iki yöntemi bulunmakta, birincisi araç kullanarak ikincisi ise araç kullanmadan yapmak.

1- Araç Kullanarak:

Benim sıklıkla tercih ettiğim ve test ettiğim çoğu waf bypass araçları arasında en yararlı olan araçtan bahsedeceğim.
Aracın ismi WafPass.
Aracın içerisinde xss haricinde bir çok zafiyet için waf bypass seçeneği bulunmakta.

Aracın help fonksiyonunu kullandığımız da bize örnek kullanımı ve içinde bulunan fonksiyonlarını basitçe anlatmakta.


8pezfve.PNG

Örnek Kullanım:


python3 wafpass.py -u URL -t xss

Örnek Görsel:

stut8iq.PNG

2- Araç Kullanmadan:

Araç kullanmadan yaptığımız waf bypass methodu kullandığımız payload da değişiklik yapmak. Genellikle yazılımcının belirlediği bir kaç noktalar filtrelenir biz de bunu bulabilmek için ise birden fazla test etmemiz gerekebilir.
Örnek bir uygulama yazdım dilerseniz inceleyelim.


5bvzn35.PNG

am3u8ur.PNG

Bu uygulamamız da bizden alınan veriyi ekrana yazıyor ama içinde <script> var ise bunu boşluk ile değiştiriyor.

25v898w.PNG

Gördüğümüz gibi script yazıları boşluk ile değiştiriliyor. Bunu atlatmak için payloadımız da Büyük küçük karakter değişikliliği yapıyoruz.
<ScRipT>alert(1)</ScRipT>


f881xio.PNG

Evet, gördüğümüz üzere bu güvenlik fonksiyonunu başarı ile atlattık. Peki ya daha güçlü bir güvenlik sisteminde ne yapacağız ?
Bu sorunun cevabı çeşitli şifrelemeler ile payloadımızı şifrelemek bu wafın filtreleme esnasında şifrelemelerine dikkat etmemesinden kaynaklanmakta.

jdyyeqs.gif

Zafiyetin Sömürümü

Zafiyetin sömürümü tarafında kullanılan pek çok araç olsa da en yararlısı BeEF(Browser Exploitation Framework), bu araç sistem için özel payloadlar geliştirip bununla ek olarak backdoor açabilecek gibi ek fonksiyona sahiptir.

jdyyeqs.gif

Zafiyetin Kapatılması ve Alınabilecek Önemlemler

1- Htmlspecialchars Kullanımı:

Htmlspecialchars fonksiyonunun mantığı kullanıcıdan alınan verileri filtrelemektir. & karakteri, ' ve <> gibi işaretleri html tarafınca uygun hale çevirir.

2- Tarayıcı Güvenlik Duvarı Kullanımı:

Tarayıcı güvenlik duvarının kullanımının önemi siteye giriş esnasında önceden siteyi taraması ve tehdit halinde siteye girişi engellemesi ve sizi uyarmasıdır.

3- Bilmediğiniz ve Güvenmediğiniz Linklere Tıklamamak:

En önemli hususlardan birisidir. Güvenmediğiniz linklere tıklamamanız xss'e maruz kalma riskinizi ciddi oranda etkiler.

Makalemi okuduğunuz için teşekkür ederim. Umarım yararlı olmuştur.
 

The Gölge

Saldırı Timleri Emektar
Şimdi ise DVWA Zafiyetli Makinesinde XSS Bölümünü İnceleyelim

Reflected XSS

gcldvqt.PNG


Görmüş olduğumuz üzere bir adet input(veri giriş) yeri bulunmakta
Buraya yazdığımız yazı hem ekrana hem de URL'de ?name= yerine gelmekte
Bir de kaynak kodunda nereye geldiğini görelim.

gr7auoj.PNG


Bir de </pre> yazarak ne olacağını görelim. Bakalım Javascript kodunu yazmamızı engelleyecek herhangi bir filtreleme var mı

9ix5lbr.PNG


7jau1la.PNG


Evet görmüş olduğunuz üzere dostlar yazmış olduğumuz </pre> html kodu sistem de olan </pre> kodunu devre dışı bırakmakta
Bu da burada herhangi bir filtreleme olmadığını ve Javascript kodu çalıştırabileceğimiz anlamına gelmekte
Bir deneyelim bakalım

b1h771o.PNG


1hvca00.PNG


Evet sitede alert kodunu çalıştırmayı başardık

Stored XSS

ekx8uzn.PNG

Evet site bizden bir isim bir de mesaj istiyor

Biz de isim ve mesaj alanını dolduruyoruz

Şimdi de bir kaynak kodlarına bakalım yazdığımız veriler nereye işleniyor

8t5lz3j.PNG


Evet şimdi ise basit bir html kod girelim bakalım burada da bir filtreleme ile karşılacakmıyız



st987sm.PNG

pe06aqh.PNG


Evet yazmış olduğumuz html kodu sayfa kaynağında çalışır vaziyette olduğu gözükmekte
Şimde de sayfaya alert verdirtmeye çalışalım

je641uk.PNG

j62vwpp.PNG


Evet dostlar siteye alert verdirtmeyi başardık
Sayfayı yenilersek tekrar gelicek mi ?

sfpuid6.PNG


Yazdığımız alert kodu database(veritabanı) kaydedildiği için yenilesek bile alert kodumuz gelicektir.
 

Rolls

Katılımcı Üye
8 Ocak 2017
419
7
Şimdi ise DVWA Zafiyetli Makinesinde XSS Bölümünü İnceleyelim

Reflected XSS

gcldvqt.PNG


Görmüş olduğumuz üzere bir adet input(veri giriş) yeri bulunmakta
Buraya yazdığımız yazı hem ekrana hem de URL'de ?name= yerine gelmekte
Bir de kaynak kodunda nereye geldiğini görelim.

gr7auoj.PNG


Bir de </pre> yazarak ne olacağını görelim. Bakalım Javascript kodunu yazmamızı engelleyecek herhangi bir filtreleme var mı

9ix5lbr.PNG


7jau1la.PNG


Evet görmüş olduğunuz üzere dostlar yazmış olduğumuz </pre> html kodu sistem de olan </pre> kodunu devre dışı bırakmakta
Bu da burada herhangi bir filtreleme olmadığını ve Javascript kodu çalıştırabileceğimiz anlamına gelmekte
Bir deneyelim bakalım

b1h771o.PNG


1hvca00.PNG


Evet sitede alert kodunu çalıştırmayı başardık

Stored XSS

ekx8uzn.PNG


Evet site bizden bir isim bir de mesaj istiyor

Biz de isim ve mesaj alanını dolduruyoruz

Şimdi de bir kaynak kodlarına bakalım yazdığımız veriler nereye işleniyor

8t5lz3j.PNG


Evet şimdi ise basit bir html kod girelim bakalım burada da bir filtreleme ile karşılacakmıyız



st987sm.PNG

pe06aqh.PNG


Evet yazmış olduğumuz html kodu sayfa kaynağında çalışır vaziyette olduğu gözükmekte
Şimde de sayfaya alert verdirtmeye çalışalım

je641uk.PNG

j62vwpp.PNG


Evet dostlar siteye alert verdirtmeyi başardık
Sayfayı yenilersek tekrar gelicek mi ?

sfpuid6.PNG


Yazdığımız alert kodu database(veritabanı) kaydedildiği için yenilesek bile alert kodumuz gelicektir.
Adamım eline sağlık tek kelimeyle harika olmuş 👌
 

JohnWick51

Uzman üye
20 Mar 2022
1,866
770
28
Nedir Bu XSS ?

cxsfms7.jpg


Siteler Arası Betik Çalıştırma(Cross-Site Scripting - XSS) saldıları, kötü niyetli kullanıcıların web sitelerinin çeşitli input(veri giriş) yerlerinden site içerisine enjekte edilen betik dili kodlarının sisteme verdiği açıktır.

XSS Saldırılarının Türleri Nelerdir?

1 - Reflected XSS:
Reflected XSS, XSS türlerinin en basitidir. Veri giriş ya da URL alanlarına Javascript kodlarını girerek yanıtları ekrana yansıtarak verdirilir.

Bir Reflected XSS senaryosu:

http://forum-golge.net/chat?message=Merhaba+Gencler

<p> Siz: Merhaba Gençler </p>

Web uygulaması, veriler üzerinde herhangi bir filtreleme vb. işlem yapmaz,bu sebeple bir saldırgan çok kolay bir şekilde aşağıdaki gibi bir saldırı oluşturabilir:

http://forum-golge.net/chat?message=<script>/*Zararlı+Kod*/</script>

<p> Siz: <script>/*Zararlı Kod*/</script> </p>

Web uygulamasını kullanan herhangi bir kullanıcıya atılacak olan bu URL saldırganın yazdığı zararlı kod parçacığını aktifleştirecektir.Bu noktada saldırgan tarafından yazılan zararlı kod saldırganın belirlediği kodlar çerçevesinde eylem gösterebilir.
Bunlar:

Kullanıcı oturum bilgilerini çalma, Bilgisayarınız da çeşitli eylemler gerçekleştirme, Kullanıcının kamerasını açma, Kullanıcın erişimi olan herhangi bir veriyi alma gibi

2 - Stored XSS:
Stored XSS, İnput(veri giriş) yerlerinden alınan verilerin hiç bir filtreleme gibi işlemlerin yapılmadan database(veritabanı) kaydedilmesiyle oluşur ve Reflected XSS'e göre çok daha tehlikelidir.Çünkü, Reflected XSS sadece URL bağlantısını attığınız kişiye yansıyarak sadece onu etkilemekte ama Stored XSS database(veritabanı) kaydedildiği için database(veritabanı) kullanan tüm web uygulama ve kullanıcılara zarar vermekte.


Stored XSS için bir senaryo görelim:

<p> Merhaba arkadaşlar,nasılsınız </p>

Uygulama dijital bir platform ve bu platform da bir adet gönderi yayınlanıyor.Veriyi hiç bir filtreleme yapmadan database(veritabanı) kaydediliyor ve bunu diğer kullanıcılar normal olarak görüyor.

<p><script>/*Zararlı Bir Kod*/</script></p>

Şimdi ise veritabanına filtrelemeden geçmemiş bir zararlı kod kaydediliyor.Bu koda denk gelen kullanıcılar kodun işlemine maruz kalıyor.


rgux5g4.png


3 - DOM Based XSS:
DOM(Document Object Model)’da meydana gelen saldırıdır. Reflected ve Stored XSS saldılarında saldırıyı görmek mümkünken aynı şey DOM Based XSS saldırısında mümkün değildir.Reflected ve Stored XSS saldılarına nazaran DOM Based saldırılarda # karakterini en başa kullanarak zararlı koda başlıyoruz. Çünkü # karakterinden sonra yazılan hiçbir şey HTTP trafiğinde gözükmemekte dolayısıyla server’a gönderilmemektedir. Bu durumda özellikle Stored’a nazaran işlevsel açıdan daha tehlikeli bir saldırı yapmakta.

Aşağıdaki kodları içeren şu sayfayı düşünelim
http://www.ornekgolge.net/deneme.html

<script>
document.write("<b>Geçerli URL</b> : " +
document.baseURI);
</script>

http://www.ornekgolge.net/deneme.html#<script>alert("Merhaba Gölge");</script>

şeklin de HTTP isteği yolladığımızda Javascript kodumuzun çalışması için yeterli olur.Çünkü document.write fonksiyonuyla URL'ye ne yazarsanız sayfa da onu ekrana yazar. Sayfanın kaynağını incelediğimiz de

<script>alert("Merhaba Gölge");</script>

kodunu göremeyiz.Sebebi olan olayın DOM tarafında gerçekleşmesi.

Neden XSS Saldırıları Yapılmakta ?

XSS güvenlik açığını farkedip sömürmek isteyen saldırgalar genelde şunları yapabilir:

1. Kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirmek.

2. Kullanıcının erişebildiği tüm verileri okumak.

3. Kullanıcının oturum açma bilgilerini ele geçirmek.

4. Web sitesin de kalıcı zarar vermek

5. Virüsleri web sitesine enjekte etmek

rgux5g4.png


XSS Saldırıları Nasıl Engellenebilir ?


1 - HTTPOnly ve Secure Flaglerinin Belirtilmesi
HTTPOlny ve Secure Flagleri web uygulamaları oluşturulurken ilk aşamalarında php cofigure php sürümüne uygun şekilde belirtilmelidir.

Bu flagler oturum çalma saldırılarını engelleyecektir
Bu sebeple web uygulama geliştiricileri henüz ilk aşamada bu flagleri belirtmelidir aksi taktirde manuel şekilde filtrelenmiş olan payloadlar saldırganlar tarafından bypass edilebilir

2 - Allowlist Değerleri

Kullanıcı girişini belirli bir izin listesiyle sınırlayın. Bu uygulama, sunucuya yalnızca bilinen ve güvenli değerlerin gönderilmesini sağlar.

3 - Girişlerde HTML'i Önleyin ve Kısıtlayın
Zengin içerik için HTML gerekli olsa da, güvenilir kullanıcılarla sınırlandırılmalıdır.

4 - Sanitize Değerleri
Bir sayfada kullanıcı tarafından oluşturulan içeriği kullanırken, güvenli olmayan karakterleri ilgili entity’ler ile değiştirerek bunun HTML içeriğiyle sonuçlanmamasını sağlayın. Entity’ler normal bir karakterle aynı görünüme sahiptir, ancak HTML oluşturmak için kullanılamaz.

5 - WAF Kullanın
Web sitenize yönelik saldırıları engellemek için bir güvenlik duvarı kullanabilirsiniz. Bu yöntem, kötü niyetli istekler web sitenize ulaşmadan önce XSS, RCE veya SQLi gibi saldırıları engeller. Ayrıca DDOS gibi büyük ölçekli saldırılara karşı koruma avantajına da sahiptir.
Ellerine saglik
 

"KARAHANLI"

Kıdemli Üye
17 Mar 2022
2,614
3,346
Россия
bu konuya gelmedim ama (18-konu hackledikdenn sonrası yeni geldim bölüme) kursta işleyip tekrar saglamca okuycam hocam şimdi anlamıyorum konuyu hortlatıyım istedim elinize saglık
 

drjacob

Uzman üye
21 Ocak 2012
1,759
395
localhost
Nedir Bu XSS ?

cxsfms7.jpg


Siteler Arası Betik Çalıştırma(Cross-Site Scripting - XSS) saldıları, kötü niyetli kullanıcıların web sitelerinin çeşitli input(veri giriş) yerlerinden site içerisine enjekte edilen betik dili kodlarının sisteme verdiği açıktır.

XSS Saldırılarının Türleri Nelerdir?

1 - Reflected XSS:
Reflected XSS, XSS türlerinin en basitidir. Veri giriş ya da URL alanlarına Javascript kodlarını girerek yanıtları ekrana yansıtarak verdirilir.

Bir Reflected XSS senaryosu:

http://forum-golge.net/chat?message=Merhaba+Gencler

<p> Siz: Merhaba Gençler </p>

Web uygulaması, veriler üzerinde herhangi bir filtreleme vb. işlem yapmaz,bu sebeple bir saldırgan çok kolay bir şekilde aşağıdaki gibi bir saldırı oluşturabilir:

http://forum-golge.net/chat?message=<script>/*Zararlı+Kod*/</script>

<p> Siz: <script>/*Zararlı Kod*/</script> </p>

Web uygulamasını kullanan herhangi bir kullanıcıya atılacak olan bu URL saldırganın yazdığı zararlı kod parçacığını aktifleştirecektir.Bu noktada saldırgan tarafından yazılan zararlı kod saldırganın belirlediği kodlar çerçevesinde eylem gösterebilir.
Bunlar:

Kullanıcı oturum bilgilerini çalma, Bilgisayarınız da çeşitli eylemler gerçekleştirme, Kullanıcının kamerasını açma, Kullanıcın erişimi olan herhangi bir veriyi alma gibi

2 - Stored XSS:
Stored XSS, İnput(veri giriş) yerlerinden alınan verilerin hiç bir filtreleme gibi işlemlerin yapılmadan database(veritabanı) kaydedilmesiyle oluşur ve Reflected XSS'e göre çok daha tehlikelidir.Çünkü, Reflected XSS sadece URL bağlantısını attığınız kişiye yansıyarak sadece onu etkilemekte ama Stored XSS database(veritabanı) kaydedildiği için database(veritabanı) kullanan tüm web uygulama ve kullanıcılara zarar vermekte.


Stored XSS için bir senaryo görelim:

<p> Merhaba arkadaşlar,nasılsınız </p>

Uygulama dijital bir platform ve bu platform da bir adet gönderi yayınlanıyor.Veriyi hiç bir filtreleme yapmadan database(veritabanı) kaydediliyor ve bunu diğer kullanıcılar normal olarak görüyor.

<p><script>/*Zararlı Bir Kod*/</script></p>

Şimdi ise veritabanına filtrelemeden geçmemiş bir zararlı kod kaydediliyor.Bu koda denk gelen kullanıcılar kodun işlemine maruz kalıyor.


rgux5g4.png


3 - DOM Based XSS:
DOM(Document Object Model)’da meydana gelen saldırıdır. Reflected ve Stored XSS saldılarında saldırıyı görmek mümkünken aynı şey DOM Based XSS saldırısında mümkün değildir.Reflected ve Stored XSS saldılarına nazaran DOM Based saldırılarda # karakterini en başa kullanarak zararlı koda başlıyoruz. Çünkü # karakterinden sonra yazılan hiçbir şey HTTP trafiğinde gözükmemekte dolayısıyla server’a gönderilmemektedir. Bu durumda özellikle Stored’a nazaran işlevsel açıdan daha tehlikeli bir saldırı yapmakta.

Aşağıdaki kodları içeren şu sayfayı düşünelim
http://www.ornekgolge.net/deneme.html

<script>
document.write("<b>Geçerli URL</b> : " +
document.baseURI);
</script>

http://www.ornekgolge.net/deneme.html#<script>alert("Merhaba Gölge");</script>

şeklin de HTTP isteği yolladığımızda Javascript kodumuzun çalışması için yeterli olur.Çünkü document.write fonksiyonuyla URL'ye ne yazarsanız sayfa da onu ekrana yazar. Sayfanın kaynağını incelediğimiz de

<script>alert("Merhaba Gölge");</script>

kodunu göremeyiz.Sebebi olan olayın DOM tarafında gerçekleşmesi.

Neden XSS Saldırıları Yapılmakta ?

XSS güvenlik açığını farkedip sömürmek isteyen saldırgalar genelde şunları yapabilir:

1. Kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirmek.

2. Kullanıcının erişebildiği tüm verileri okumak.

3. Kullanıcının oturum açma bilgilerini ele geçirmek.

4. Web sitesin de kalıcı zarar vermek

5. Virüsleri web sitesine enjekte etmek

rgux5g4.png


XSS Saldırıları Nasıl Engellenebilir ?


1 - HTTPOnly ve Secure Flaglerinin Belirtilmesi
HTTPOlny ve Secure Flagleri web uygulamaları oluşturulurken ilk aşamalarında php cofigure php sürümüne uygun şekilde belirtilmelidir.

Bu flagler oturum çalma saldırılarını engelleyecektir
Bu sebeple web uygulama geliştiricileri henüz ilk aşamada bu flagleri belirtmelidir aksi taktirde manuel şekilde filtrelenmiş olan payloadlar saldırganlar tarafından bypass edilebilir

2 - Allowlist Değerleri

Kullanıcı girişini belirli bir izin listesiyle sınırlayın. Bu uygulama, sunucuya yalnızca bilinen ve güvenli değerlerin gönderilmesini sağlar.

3 - Girişlerde HTML'i Önleyin ve Kısıtlayın
Zengin içerik için HTML gerekli olsa da, güvenilir kullanıcılarla sınırlandırılmalıdır.

4 - Sanitize Değerleri
Bir sayfada kullanıcı tarafından oluşturulan içeriği kullanırken, güvenli olmayan karakterleri ilgili entity’ler ile değiştirerek bunun HTML içeriğiyle sonuçlanmamasını sağlayın. Entity’ler normal bir karakterle aynı görünüme sahiptir, ancak HTML oluşturmak için kullanılamaz.

5 - WAF Kullanın
Web sitenize yönelik saldırıları engellemek için bir güvenlik duvarı kullanabilirsiniz. Bu yöntem, kötü niyetli istekler web sitenize ulaşmadan önce XSS, RCE veya SQLi gibi saldırıları engeller. Ayrıca DDOS gibi büyük ölçekli saldırılara karşı koruma avantajına da sahiptir.


---------------------------------------------------

#-İçindekiler-#

1- Cross Site Scripting Nedir
1.1- Nasıl Tespit Edilir
1.2- Nerede Görülür
2- Cross Site Scripting Türleri
3- Waf(Güvenlik Duvarı) Atlatma Methodları
4- Zafiyetin Sömürümü
5- Zafiyetin Kapatılması ve Alınabilecek Önemlemler

Merhaba saygıdeğer TürkHackTeam okurları, bu makalemde tüm hatlarıyla Cross Site Scripting(XSS) konusu ele aldım. İlgisi olanlar için faydalı olması dileğiyle.



6phtekg.png

Cross Site Scripting Nedir

Cross Site Scripting diğer bir adıyla XSS zafiyeti, PHP tabanlı kullanıcıdan alınan verilerin gerekli filtrelemeler uygulanmadığı için ortaya çıkan bir zafiyet olup ilk keşfedilip raporlanması Symantec tarafından 2007 tarihinde gerçekleşmiştir.
Sitede betik çalıştırmaya imkan kılan bu zafiyet OWASP TOP 10 zafiyet sıralamasında Injection kategorisinde yedinci sırada yer almaktadır.

jdyyeqs.gif

Nasıl Tespit Edilir

Cross Site Scripting zafiyetini tespit etmenin iki yolu bulunmakta:

1. Araç Kullanarak

Cross Site Scripting zafiyeti tespiti için birden fazla araç bulunmakta ama içlerden en çok kullandığım araç XSStrike aracı
XSStrike aracı içinde hali hazırda bulunan payloadları ile site üzerinde otomatik XSS araması yapmakta.

Github Linki

Araç Python3 yazılmış bir araç olduğu için python3 ile çalıştırmanız gerekmekte !

Örnek Kullanım:

python3 xsstrike.py -u www.site.com/search.php?search=

t30gi6n.PNG

2. Araç Kullanmadan

Araç kullanmadan bu zafiyeti nasıl tespit edilir o konuya gelelim, bizim javascript bilmemiz kritik önem html bilmemiz ise de bizi XSS zafiyetinin tespitinde önem taşır.
Belirli başlı payload üzerinden mantığını inceleyelim.
# <script>alert(1)</script> #
En temel xss payloadıdır. Mantığı javascriptte bulunan alert() fonksiyonunu kullanarak sayfada bir adet uyarı pop upı çıkarmaktır.

Örnek Görsel:

e4a3cvj.PNG

jdyyeqs.gif

Nerede Görülür

İlk bakış açımız önemli, web tarafınca en çok kullanıcıdan veri alım şekli arama çubuklarıdır. Genellikle get methodu kullanılarak kullanıcıdan alınan verileri site içerisinde arama yapmak amaçlı kullanılır lakin gerekli güvenlik önlemleri alınmadığı için kolaylıkla xss zafiyeti bulunabilir.
İkinci önemli bakılması gereken yer ise siteye kullanıcı tarafınca siteye yüklenen dosyaların filtresiz bir şekilde yüklenmesi ise kullanıcıdan sitenin içine doğrudan javascript dosyası yükleyerek siteye kalıcı zararlar verebilir.

jdyyeqs.gif

Cross Site Scripting Türleri

1- Reflected XSS:

XSS türleri arasında en yaygınıdır. Bu Xss türünde kullanılan payloadlar tarayıcı üzerinden kullanıcıya yansır. En çok görülen yeri ise urllerdir. Temel saldırı senaryosu kurban kullanıcıya atılan zararlı url ile kullanıcının tarayıcısında seri bir xss betiği çalıştırıp ona zarar vermektir.

2- Stored XSS:

En tehlikeli XSS türleriden biridir. İki tip karşılaşılan türü vardır:
1) Dosya Biçiminde: Filtresiz kullanıcıdan alınan dosyalardan veyahut File Upload zafiyetinden yararlanılarak sistemin içine yüklenen zararlı xss kodu içeren dosya ile gerçekleşir.
Örnek Senaryo: Sisteme File Upload zafiyetinden yararlanılarak yüklenen shell aracılığıyla hata anında yönlendirilen 404.php adında bulunan hata indexinin içeriğine zararlı bir payload yükleyerek ve index sayfasında 404.php dosyasına yönlendirecek bir hata çıkartırsak sisteme giriş yapan kullanıcılar bizim zararlı payload yüklediğimiz 404.php sayfasına yönlendirilecek ve zararlı xss kodumuza maruz kalıcaklar.

2) Filtresiz Kullanıcılardan Alınan Girdiler Aracılığıyla: Çoğu sistemde bulunan kullanıcılardan yorum amaçlı girdi alınan yerler mevcuttur ve bu girdileri sistemi ziyaret eden bir çok kullanıcı görmekte. Burada kullanıcılardan girilen yorumların filtrelenmesi hayati önem arz etmekte, eğer ki filtrelenme işlemi yapılmazsa ya da gerekli önlemler alınmazsa ciddi tehlikeler doğurabilir.
Örnek Senaryo: Herkes tarafından okunan bir haber site varsayalım. Bu site için açılan bir yorum sayfasında gerekli önlemler alınmadığını düşünürsek karşılaşabileceğimiz tehlikeler.
1) Siteyi başka bir siteye yönlendiren xss payload'ı yazılabilir.
2) Siteye giriş yapmış bir kullanıcının Cookie bilgisini alan bir xss payload'ı yazılabilir.

3- DOM Tabanlı XSS:

Reflected XSS ile benzerlik taşır. Saldırının temel amacı DOM(Document Object Model)'u değiştirmektir. Tamamen tarayıcı tarafında gerçekleşir. Payloadların başında diğer xss payloadlarına nazaran farklı # görülür. Bunun sebebi ise # karakterinden sonra yazılan herhangi bir yazı HTTP trafiğinde görülmemekte bu durumda server'a iletilmemektedir.

jdyyeqs.gif

Waf(Güvenlik Duvarı) Atlatma Methodları

Waflar yazılımcılar tarafından en çok kullanılan güvenlik yöntemleridir. Çoğu zaman kullanılan methodlar ile wafları kolaylıkla atlatabilmekteyiz.
Wafları atlatmanın temel iki yöntemi bulunmakta, birincisi araç kullanarak ikincisi ise araç kullanmadan yapmak.

1- Araç Kullanarak:

Benim sıklıkla tercih ettiğim ve test ettiğim çoğu waf bypass araçları arasında en yararlı olan araçtan bahsedeceğim.
Aracın ismi WafPass.
Aracın içerisinde xss haricinde bir çok zafiyet için waf bypass seçeneği bulunmakta.

Aracın help fonksiyonunu kullandığımız da bize örnek kullanımı ve içinde bulunan fonksiyonlarını basitçe anlatmakta.


8pezfve.PNG

Örnek Kullanım:


python3 wafpass.py -u URL -t xss

Örnek Görsel:

stut8iq.PNG

2- Araç Kullanmadan:

Araç kullanmadan yaptığımız waf bypass methodu kullandığımız payload da değişiklik yapmak. Genellikle yazılımcının belirlediği bir kaç noktalar filtrelenir biz de bunu bulabilmek için ise birden fazla test etmemiz gerekebilir.
Örnek bir uygulama yazdım dilerseniz inceleyelim.


5bvzn35.PNG


am3u8ur.PNG

Bu uygulamamız da bizden alınan veriyi ekrana yazıyor ama içinde <script> var ise bunu boşluk ile değiştiriyor.

25v898w.PNG

Gördüğümüz gibi script yazıları boşluk ile değiştiriliyor. Bunu atlatmak için payloadımız da Büyük küçük karakter değişikliliği yapıyoruz.
<ScRipT>alert(1)</ScRipT>


f881xio.PNG

Evet, gördüğümüz üzere bu güvenlik fonksiyonunu başarı ile atlattık. Peki ya daha güçlü bir güvenlik sisteminde ne yapacağız ?
Bu sorunun cevabı çeşitli şifrelemeler ile payloadımızı şifrelemek bu wafın filtreleme esnasında şifrelemelerine dikkat etmemesinden kaynaklanmakta.

jdyyeqs.gif

Zafiyetin Sömürümü

Zafiyetin sömürümü tarafında kullanılan pek çok araç olsa da en yararlısı BeEF(Browser Exploitation Framework), bu araç sistem için özel payloadlar geliştirip bununla ek olarak backdoor açabilecek gibi ek fonksiyona sahiptir.

jdyyeqs.gif

Zafiyetin Kapatılması ve Alınabilecek Önemlemler

1- Htmlspecialchars Kullanımı:

Htmlspecialchars fonksiyonunun mantığı kullanıcıdan alınan verileri filtrelemektir. & karakteri, ' ve <> gibi işaretleri html tarafınca uygun hale çevirir.

2- Tarayıcı Güvenlik Duvarı Kullanımı:

Tarayıcı güvenlik duvarının kullanımının önemi siteye giriş esnasında önceden siteyi taraması ve tehdit halinde siteye girişi engellemesi ve sizi uyarmasıdır.

3- Bilmediğiniz ve Güvenmediğiniz Linklere Tıklamamak:

En önemli hususlardan birisidir. Güvenmediğiniz linklere tıklamamanız xss'e maruz kalma riskinizi ciddi oranda etkiler.

Makalemi okuduğunuz için teşekkür ederim. Umarım yararlı olmuştur.
eline sağlık hocam.
 
Ü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.