BOOK THIS SPACE FOR AD
ARTICLE ADMerhabalar, bu yazımda yaklaşık 8–9 saat gibi bir sürede recon ve pentest aşamaları dahil Harvard’ın sitesindeki küçük hikayemi ve XSS hakkındaki bildiklerimi paylaşacağım.
Öncelikle biraz XSS hakkında konuşalım.
XSS, sistemin kullanıcıdan bir input(giriş) alıp browser’a gönderilerek client-side’da çalıştırılan bir güvenlik açığıdır.
Bu açığın çıkma sebebi alınan inputun hiç bir şekilde html ve javascript filtrelerinden geçirilmeden doğrudan browser’ın yorumlayarak çalıştırmasından kaynaklanır.
Input’u girdiğinizde bir HTTP isteği yollarsınız. Daha sonra girdiğiniz şey ekrana bastırılacak şekilde ayarlandı ise HTTP response’un body kısmında spesifik olarak bazı yerlerinde girdiğiniz inputu göreceksiniz. Eğer herhangi bir önlem alınmamışsa siz buraya bir tag ile javascript kodu yerleştirerek, browser’da istediğinizi çalıştırabilirsiniz.
Browser’lar sadece sizin verdiğiniz kodları çalıştırırlar. Kodun iyi veya kötü amaçla yazıldığını anlayacak bir mekanizmaları yoktur. Bu yüzden geliştiriciler kendileri bazı filtrelemeler ve şifrelemeler yaparak bu sorunun önüne geçerler.
Kurbanın tarayıcısında bir javascript dosyası çalıştırarak kurbanın o andaki cookie bilgilerini kendine çekebilir. Yani account takeover bile mümkün olabilir.
XSS Güvenlik açığını önlemenin bazı yöntemleri;
Encoding
XSS, HTML ve JavaScript filtrelerinden geçirilmediği takdirde oluşan bir güvenlik açığıdır.En yaygın ve etkili mitigation tekniği, html ile veya bazı durumlarda url ile encode etmektir.Bu sayede girilen kodlar “<>’ gibi karakterleri < " şeklinde kodladığı ve browser’ın bunları tag olarak değilde karakter olarak algıladığı için bir html tagı veya javascript kodu çalıştırmak mümkün değildir.
Spesifik olarak bazı özel durumlarda bunun zorda olsa bypass teknikleri olabiliyor.
Ama yine de genel olarak en etkili yöntemin bu olduğunu düşünüyorum.
Güvenlik Duvarı
2. Olarak WAF ile koruyabilirsiniz ama bunu tavsiye etmiyorum çünkü hem para veriyorsunuz hemde bypass edilmesi bazen mümkün olabiliyor. Her yerde kullanıldığı için bir tanesi patlarsa bütün waflar patlıyor tabii ki çok iyi WAF larda var. Ancak yinede bunun en iyi yöntem olduğunu düşünmüyorum.
Öncelikle her güvenlik araştırmacısının yaptığı gibi öncelikle site hakkında bilgi toplamam gerekiyordu bunun için Sudomy aracını kullandım.
Sudomy aracını kullanarak aşağıdaki parametrelerle bir tarama başlattım:
./sudomy -d harvard.edu -dP -eP -rS -cF -pS -tO -gW — httpx — dnsprobe -aI webanalyze -sS
Yaklaşık 10–11 saatin sonunda tarama bitti. Ancak güvenlik açığına ben bu arama devam ederken rastladım.
Bu arama devam ederken tek tek domain adreslerine girip attack surface’ın izin verdiği kadarıyla testler gerçekleştiriyordum.
Gördüğüm her şeye bu sistemi amacının dışında nasıl kullanarak zarar verebilirim diye düşünüyordum.
Bir güvenlik açığı ararken bakış açınız saldırganın hatta bazı durumlarda ise geliştiricininki gibi olmalıdır.
Websitelerine tek tek bakarken bir tanesininde kayıt olma seçeneği olduğunu fark ettim. Çok umutlu değildim. Ancak açtığım hesapta <> işaretlerinin encode edilmediğini gördüm.O anki mutluluk anlatılamaz bir duygudur :D
<script> tagları genelde bloklanır o yüzden onu kullanmak yerine <img> tagını tercih ettim.
Ve 2. hesabımı oluştururken <img src=x onerror=prompt()> tag lerini kullandım. Burada kullandığım payload’da img tagının src (source)’a alakasız bir değer veriliyor. Bunun sonucunda hata oluştuğu için onerror event’i gerçekleşiyor ve browser bir popup çıkarıyor.
Çıkan popup ‘ı görmek çok heyecan vericiydi. Bir javascript kodu enjekte etmeyi başarmıştım.
Farklı kodlar enjekte ederek denemeler yaptım ve bunun bir stored XSS güvenlik açığı olduğunu doğruladım ve yetkililere yani Harvard University Information Technology ekibine yolladım.
Herhangi bir ödül almadım çünkü Harvard üniversitesi bulunan güvenlik açıkları başına bir ödül vermiyor. Bu güvenlik açığını aramaya ödül için değil kendimi geliştirmek için başladım. Para kazanacağınız günler elbet olacak ancak önemli olan kendinizi ne kadar geliştirdiğiniz neler öğrendiğinizdir. Siz kendinizi geliştirmeye devam edin her şeyi merak edin koparmaya çalıştığınız meyvenin tadını elbet alacaksınız.
Okuduğunuz İçin Teşekkürler
Mitigation: Hafifletme/azaltma anlamına gelir.WAF: Web Application Firewall (Web uygulaması güvenlik duvarı) Anlamı: Bir web uygulama güvenlik duvarı, bir web uygulamasına giden ve uygulamadan gelen tüm HTTP trafiğini filtreler, inceler ve bloklar.Browser: Tarayıcı. Anlamı: İnternet sayfalarına ulaşmamızı sağlayan yazılım ve programlara browser adı verilmektedir. Bunun bir diğer adı da tarayıcıdır. Biraz daha kolay bir dille ifade edersek internete bağlanırken her gün kullandığımız Google Chrome, Mozilla, Internet Explorer gibi platformlar birer browser yani tarayıcıdır. Ve eğer bunlar olmasaydı bugün internete bağlanmak söz konusu olmayacaktı.Client-side: İstemci tarafı. Anlamı: İstemci tarafı, bir bilgisayar ağındaki istemci-sunucu ilişkisinde istemci tarafından gerçekleştirilen işlemleri ifade eder.Recon: Penetration testing ‘in ilk aşamasıdır yani “keşif” kısmıdır.Bug Bounty: Burada bug zafiyet , bounty ise ödül anlamına gelir. Özetle, bir sistemde zafiyet bulup bunu bildirerek karşılığında ödül almaktır.Sudomy: Bash, python ve bir çok dil ile birleştirilip geliştirilen bir web application keşif/recon aracıdır.Emir ‘Soldawn’ Güner
Abstract Bug Bounty Team
Discord: https://discord.gg/WMQJceN
Twitter: https://twitter.com/abstract_bounty
Youtube: https://www.youtube.com/channel/UCsF0p9m0Fl9UJljtaSryNaA