WEB Açıkları Üzerine

Ozkan Altunbas
6 min readNov 21, 2022

Merhabalar bugün WEB açıkları üzerine kısa bir bakış atacağız. İnternet siteleri her zaman tam anlamıyla güvenli olmaz gerek yazılımcı hataları gerek programsal hatalar internet sitelerinde açıklar oluşturur.

Bazı WEB Açık Türleri

1- XSS

2-Directory traversal

3-IDOR

4-Injection

bu açıkları örnek olarak verebiliriz.

Örnek verilen Web açıklarına bir göz atalım…

XSS

XSS (Cross-Site Scripting) Türkçesi Siteler Arası Betik Çalıştırma olarak çevirebileceğimiz , site içerisinde ki bir input’a (Genellikle arama çubukları oluyor ) içerisine yeterli Encoding ve filtrelemeler uygulanmadığı zaman o inputta kötü niyetli kod çalıştırabilmemizdir. Peki bu saldırının zararı nedir ?

  • Size ait kullanıcı bilgileriniz çalınabilir.
  • Sizi zararlı başka bir sayfaya yönlendirebilir.
  • Web uygulamalarının yapısını değiştirebilir.

Genel olarak XSS önemli bir açık görünmese bile size çok büyük etkileri olabilir.

3 türü vardır bunlar ;

1-Reflected XSS

2-Stored XSS

3-DOM tabanlı XSS

1-Reflected XSS

Genel olarak XSS türlerinin en zararsızı olarak bilinir, enjekte edilmiş URL i Sosyal mühendislik ile( İleride ki yazılarımda konuşacağız kısaca kurbanı kandırarak istediğimizi yaptırmak olarak düşünülebilir.) kurbana açtırarak XSS’e maruz bırakarak saldırı gerçekleştirilir.

2-Stored XSS

XSS türlerinin en tehlikeli ve en etkilisi olarak bilinir, direkt örnek üzerinden anlatacağım; Bir blog sayfası düşünelim ve bu sayfa da yorum bölümü var siz bu yorum bölümüne bir XSS payload yüklediniz bu payload o yorumu gören herkes için tarayıcısında otomatik olarak çalıştırılacak ve XSS ‘e maruz kalacak böylece saldırınız Reflected XSS de olduğu gibi bir sosyal mühendisliğe ihtiyaç olmadan siteye gömülmüş olan her kurbana etki edecek.

3-DOM XSS

Size bu açıkla ilgili çok güzel bir alıntılama yapmak istiyorum “Basitçe tanımlamak gerekirse “DOM Tabanlı XSS, bir HTML parçasında değil DOM (Document Object Model)’da meydana gelen XSS zafiyetidir” denilebilir. Stored ve Reflected XSS saldırılarında, saldırı sonrası dönen sayfada XSS atağını görmek mümkünken; DOM tabanlı XSS saldırılarında HTML kaynağı ve dönen yanıt, tamamen aynı olacaktır. Başka bir deyişle, XSS atağı dönen sayfada bulunamaz ve sadece runtime sırasında ya da sayfanın DOM’u incelenirken gözlemlenebilir.”

Yukarı da DOM şemasını görmektesiniz.

Directory traversal

Bu açık türü ise internet sitelerinde artık pek bulunmayan bir açıktır. Dizin gezmesi olarak çevirebileceğimiz bu saldırı da site içerisinde bulunan URL üzerindeki dosyaları yetkisiz okuma yazma yapabilmemizdir.

buna kısa bir örnek vererek somut halde açıklayalım.

Bize message.txt gösteren bir sayfa var ve biz bu sayfa da directory traversal denemek istiyoruz saldırının vektörü ise ../../ gibi uzantı üzerinde geri giderek yetkimiz olmayan dosyaları görebilecek miyiz ona bakmak.

../bir dizinde geri gitmek anlamına gelmektedir.

URL üzerinde 4 defa geri giderek yetkimin olmadığı bir dosyaya ulaşarak bir okuma ger

Görüldüğü üzere internet sitesinin üzerinde bulunduğu PC üzerinde etc/passwd dosyasına erişim sağladım.

IDOR

IDOR (Insecure direct object reference ) Türkçeye Güvensiz doğrudan nesne referansı olarak çevrilen bir açık türüdür. Temel mantığı ise saldırganın bir site üzerinde yetkisiz bilgileri görüntüleme ve değiştirmesine olanak sağlayan bir açık türüdür.

IDOR açığı son yıllarda OWASP top ten listesinde üst sıralara yükselerek internet sitelerinde sıklıkla bulunan bir açık türü haline gelmiştir.

IDOR açığına örnek verecek olursak eğer;

PortSwigger lablarından birinde örnek zafiyetimize bakalım.

Laboratuvar da bize;

kullanıcı adı → wiener

kullanıcı şifresi →peter

olan bir hesap veriyor ve bu hesabı kullanarak başka bir kullanıcının horizontal IDOR zafiyeti bulunduran bir sayfasında zafiyeti kullancağız

horizontal nedir peki ?

IDOR zafiyetlerinde horizontal ve vertical tipleri bulunur kısaca açıklamak gerekirse eğer

horizontal yani yatay kullanıcı yetki seviyeleri aynı olan iki kullanıcı arasında olan IDOR tipidir.

vertical ise kullanıcı yetki seviyesi farklı olan IDOR tipidir. Örneğin standart bir userın admin yetkilerine sahip bir hesapla olan IDOR zafiyeti gibi.

Şimdi gelelim labımıza;

Laba verilen bilgilerle giriş yapıldığı zaman karşımıza blog sayfası çıkıyor.

Burada ki Live chat bölümüne girdiğinizde ise müşteri hizmetleriyle konuşabileceğiniz bir alan var şimdi ben müşteri hizmeti ile bir konuşma gerçekleştirip bu konuşmayı indirmek isteyeyim.

Bana bir 2.txt adında text dosyası indirdi işte bu anda düşünmeniz gereken ilk şey burada ki 2.txt dosyasının nümerik olarak arttığı acaba 1.txt dosyası var mı ? bunu kontrol etmek için PortSwigger’ın Burp Suite adında ki Toolsunu kullanırız.

Peki bu Burp Suite nedir ?

Kısaca Burp Suite, PortSwigger tarafından çıkarılmış http isteklerini proxy aracılığıyla durduran bir programdır biz bu programı web zafiyetlerinde sürekli olarak kullandığımız bir araçtır ileride ki yazılarda sıkça kullanacağız.

Şimdi indirme isteğini tekrar gönderelim ve bakalım;

Burada ki uzantıya bakarsak eğer /2.txt dosyasına bir GET isteği gönderiyor şimdi bu isteği 1.txt olarak değiştirirsek ne olur bakalım

Görüldüğü üzere başka bir kullanıcının chat geçmişine erişim sağlayabildik , işte IDOR zafiyetinin kısaca tanımı budur.

Injection

Injection adına şiirler yazdıran hackerların en sevdiği açık türlerindendir.

Zafiyetin temel amacı hedef sayfa üzerine zararlı kod enjekte ederek sayfa da ki bilgileri ele geçirmek , bu açığın en çok bilinen türü ise SQLI olarak bilinen SQL injection zafiyetidir.

Bu zafiyetin oldukça tehlikelidir sebebi ise sitenin databaseden bilgi sızmasına ve tüm bilgilerin çalınmasına sebep olabilir.

Bırakın Injectionu SQLI için bile bir kitap yazılabilir, ama biz SQLI kısa bir örnek ile açıklayacağız ileride ki yazılar da uzun uzun zafiyetin tespiti ve sömürülmesi hakkında konuşacağız.

SQLI zafiyetinde ilk aşama zafiyetin tespitidir temel tespit yöntemleri sorgu parametresine ‘ (tek tırnak) koyarak sayfanın yanıt olarak bir hata döndürüp döndürmediğine bakılır genel olarak bu yöntem dışında ‘ OR 1=1 gibi yöntemlerle zafiyet tespiti yapılabilir ama benim önerim genellikle developerlar 1=1 gibi yazılabilecek parametreleri blackliste alabilirler bu sebepten ötürü sorgu parametresine matematik işlemi yaptırarak yanıta bakmak çok daha etkili bir yöntem olacaktır.

Zafiyet Tespiti

Yapılması gereken ilk adım da bir referans noktası belirleyip o sayfaya dönebilir miyiz ona bakmak olacaktır.

  1. sayfamız bizim referans noktamız olsun şimdi 3–2 yaparak aynı sayfaya ulaşabiliyor muyuz ona bakalım;

görüldüğü üzere aynı sayfaya ulaştık bu sebepten ötürü bu sayfa da SQLI zafiyeti tespit ettik şimdi bu zafiyetin sömürülmesinde.

Zafiyetin Sömürülmesi

Burada yapılması gereken ilk adım ise UNION sorgusu için kolon sayısını belirlemek peki UNION nedir ?

UNION kısaca database sorgularında iki farklı sorguları birleştirerek birden fazla veri çekmek için kullanılır işte biz UNION sorgusu ile kendi istediğimiz sorgularla databaseden veri sızdıracağız, ancak UNION sorgusunun çalışabilmesi için sorgulama yaptığımız iki tablonun da kolon sayıları aynı olması lazım o yüzden ;

ilk olarak kolon sayılarını bulalım

URL’e bakıldığında toplam da 12 adet UNION ile sorgu yapıldı kolon sayısını belirledik şimdi se bu kolonların içerisine version numarasını bulmak isteyelim bunun için ise hangi kolona etki ettiğini bulmamız lazım bunun kısa yöntemi ise sorgunun başına - koyarak bulabiliriz.

Görüldüğü üzere üzerinde çalışacağımız sayı 12 buraya şimdi version() yazarak versiyonunu bulabiliriz.

ve versiyonu bulmuş olduk,bu sorgular normal de databasede ki users tablosu gibi hayati önem taşıyan bilgileri sızdırmak için yapılır.

Bu yazı da kısaca internet üzerinde olabilecek bir kaç vafiyetin kısaca tanımını yaptık.

--

--