General

XSS Örnekleri ve Senaryoları

XSS açığının çalışma mantığını daha iyi kavramak adına çeşitli senaryolara da yer vererek bir kaç  örnek gerçekleştirelim.

Yapılacak olan işlemlerimizin herhangi bir güvenlik duvarı tarafından loglanmaması için ve sitelere zarar vermemek amacıyla Debian tabanlı Web For Pentester adlı yazılımı sanal makineye kurulup, localhostdan bağlanıldı.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 06.54 PM.PNG
Web pentest lab açılış ekranı

Reflected XSS Açığı Örneği

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 07.57 PM 001.PNG
Reflected XSS test sayfamız

Xss saldırıların en temel nedeni kullanıcılardan alınan inputların hiçbir filtrelemeden geçmeden işleme tabi tutulmasıdır.Bu inputlar;

  • Kullanıcıdan form elemanları ile alınan değer
  • Get metoduyla gönderilen bir değer
  • http headeleri ile gönderilen bir değer olabilir

Chrome geliştirici aracı (F12) ile bağlantının metodunu öğreniyoruz , get olduğunu görüyoruz , get olmasının bizim tarafımızdan avantajı ekrana çıktı alabileceğiz.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 08.05 PM.PNG
Header Baglantı kontrolü

Şimdi web for pentesterin bize sunduğu örnek zafiyete sahip mi değil mi keşfedelim.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 07.57 PM 001.PNG
 Reflected XSS örneği

İlk açılan sayfaya baktığımızda “hacker” kelimesi kalın değil html taglarından <b></b>  tagını urlemize girerek , filtrenin olup olmadığını varsa sunucu tabanlı mı yoksa html ile mi kısıtlamaya gidilmiş onu öğrenelim.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 08.06 PM.PNG
Filtre unit test

Sunucuya atılan istek dogrultusunda hacker yazısı kalın oldu.Bu sayede filtre olmadığını ögrendık şimdi XSS payloadımızı deneyerek , reflected xss olup olmadığına kesin gözle bakalım.

Javascript kodlarını çağırmak için <script></script> bu betikler tarayıcının dahili betik yorumlayıcısı (script engine) tarafından çalıştırılır.

<script>alert(“ZEYNEP”)</script> Payloadımız bu uygulama için uygun görünüyor.İlk önce script etiketini kullanarak javascript çalıştıracağımızı tarayıcıya söyledik , sonra alert metodunu kullanacağımızı ve argümenti ZEYNEP olacağını söyledik.Bundan sonra yapılacak tek şey entere tuşuna basıp baglantıgının get metodu ile sunucu tarafından yorumlanıp bize çıktı vermesi. 

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 08.27 PM.PNG
Parametre üzerinde Javascript kodu çalıştırma

Görüldüğü üzere javascript kodu test ortamında  çalıştırıldı. Bu yüzden Reflected XSS açığı kesin olarak vardır. Sayfa kaynağı görüntülendiğinde ise sayfaya enfekte olmuş payloadımız gözle görülmektedir. 

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 08.33 PM.PNG
C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 08.33 PM 001.PNG
Reflected XSS örneği sayfa kaynağı görüntüleme

Şimdi Reflected XSS açığı kullanılarak gerçekleştirilen farklı saldırı senaryoları aşağıda yer almaktadır.

Gizli Bilgi Toplama

Siber savaşlar artık yeni boyutlara taşınmaktadır, öyle ki 5 dolarlık bir cihazdan bile gigabytelarca ddos atmanız mümkün hale geliyor, tabi bunlara karşı savunma sistemleri de gelişiyor , fiziksel firewall,sunucu taraflı koruma(flood koruması), dns’i başka sunucuya yönlendirme gibi , bu senaryoda ise dns başka sunucuya yönlendirmeyi atlatmayı ve gerçek ip adresine ulaşmayı xss ile exploit etmeye çalışacağız.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-05-18 at 10.48 PM.PNG
Anlık siber saldırılar

Cloudflareden bahsetmek gerekirse ip yönlendirme işini bizzat bu ufak yazılım yapmaktadır , içinde paket olarak ExceptionHub ve GamaSec yazılımları gelmektedir peki nedir bunlar?ExceptionHub sitenizde ki javascript hatalarını kayıt altına alıp size iletiyor , GamaSec ise xss-sql gibi  betik çalıştırmayı denediğimizde hemen kayıt altına alıyor , ve bunun yanında muhteşem bir ddos koruması sağlıyor , bu zamana kadar tek seferde 400 gb saldırıyı bertaraf etmiş adını popüler hale getirmiştir.

hackeducation.com adlı siteyi shodan.io’da sorguladığımızda cloudflare kullandığını görüyoruz.

2D5UlJyzvGPGs6g4Axak5WXTAzEsuwGqpBeuAzKmS9K75 JOEaPCY8VExyKdO1M 9IO5m95xwUbaruYtR9rzHlzIS mH5RQgdg022XjJAEKy8H 0A3QAASdaG NXtYcHIPYjodL289LY
 shodan.io arama motoru kullanımı

İplogger sitesine girip kendimize log tutabilen url adresi oluşturuyoruz.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-06-18 at 02.18 AM.PNG
iplogger kullanımı

Bize oluşturduğu url adresinde ip adresimizi loglamak için php kodları mevcut olduğunu bildiğimden , siteden herhangi bir javascript dosyası çağırmam halinde tüm fonksiyonlarında harekete geçeceğini tahmin edebiliyorum.<script src=”kaynaksite.js”></script> Payloadımız yardımıyla bize verilen log tutan url adresini argümente yerleştirelim.Böylelikle siteye istek atıp , tüm javascript dosyalarını çağıracak bu da bizim istediğimiz bir şey , böylelikle gerçek ip adresini , sunucuda çalışan tüm herşeyi öğrenebileceğiz .Hemen test ortamımıza dönüp hazırlıkları yapıp istek atalım.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-06-18 at 02.25 AM.PNG
Uzak kaynaktan dosya çağırma 

Chrome geliştirici araçlarından bağlantıları incelediğimizde oluşturduğumuz loglu linkten 301 istegi gitmiş yani kullanıcının hiçbir aktivetede bulunmasına gerek kalmadan yönlendirme demek, bu sayede kullanıcıyı uyandırmadan hem loglu linke uğramış hemde Google sayfasını açmış, yani amacımıza ulaştık.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-06-18 at 02.28 AM.PNG
Header baglantılarının incelenmesi

Logları incelediğimizde sunucunun ip adresi ve agent bilgisi ekrana yansıtılmış, bu sayede artık gerçek ip adresine ddos saldırısında bulanabilirim veya zafiyet taraması yapabilirim.Cloudflare işlevliğini yitirmiş oldu.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-06-18 at 02.32 AM.PNG
Logların incelenmesi

Şimdi nmapın –A argvsi ile ip adresimizi taratıp, çalışan sistemleri , açık portları görelim.

C:\Users\ibrahim\Pictures\My Screen Shots\Screen Shot 05-06-18 at 12.37 PM.PNG
nmap script tespiti

Ekran görüntüsünden de görüldüğü üzere işletim sisteminin Debian olduğunu , 22-80-389 portlarının açık olduğunu , kernel numarasının 2.6.32 oldugunu , Apache ve OpenLDAP çalıştığını görebiliyorum.Hemen bu terimleri exploit-db.com’dan aratıp , bunlara ait exploit yayınlanmış mı ögrenıyorum.Linux 2.6.32 sürümünde yetki yükseltme açığı olduğunu ve expolit yayınlanmış olduğunu görüyorum.Bundan sonra yapmam gereken tek şey , c dilinde yazılmış exploiti gcc ile derleyip çalıştırmak ve sistemde normal kullanıcı bile değilken admin yetkisine ulaşmış oluyorum.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to top button