TR-Pygoat OWASP TOP 10 2021 WRITE-UP

TR-Pygoat OWASP TOP 10 2021 WRITE-UP

Pygoat OWASP TOP 10 2021 WRITE-UP

Merhaba bu yazımda Pygoat lab ortamı üzerinde bulunan OWASP TOP 10 2021'e uygun hazırlanmış örneklerin çözümlerini gerçekleştireceğim. Hem OWASP TOP 10 zafiyetleri hem de bu zafiyetlerin neden kaynakalndığını anlatmaya çalışacağım.

Pygoat nedir?

Pygoat, OWASP(Open Worldwide Application Security Project**)** tarafından geliştirilmiş zafiyetli bir web uygulamasıdır. Amaç, hem geliştiricilere hem de test uzmanlarına uygulamaların nasıl test edileceğini ve güvenli bir şekilde nasıl kodlanacağını öğretmek için bir platform sağlamaktır. PyGoat python dilinde yazılmıştır ve Django Frameworkünü kullanmaktadır.
PyGoat ayrıca, güvenlik açığına neden olan hatanın nerede yapıldığını belirlemek için kaynak kodunu görebileceğiniz ve güvenli hale getirmek için değişiklikler yapmanıza izin veren bir alana sahiptir.

OWASP TOP 10 2021

Bu yazımda pygoatta sol menüde bulunan 2021 yılı zafiyetlerinin çözümünü yapacağız.

Pygoat Kurulum

Uygulamanın kurulumu için birkaç farklı yol var:

  1. Kaynak Kod ile çalıştırmak: github reposundan kaynak kodunu indirip django kurulumu yapıp python ile çalıştırabilirsiniz. Bu kaynak kodunun elinizin altında olması nedeniyle daha anlaşılır bir şekilde çalışmanızı sağlayabilir. Github reposu: https://github.com/adeyosemanputra/pygoat
  2. Docker ile çalıştırmak: Pygoat'ın, içinde uygulamanın kurulumu yapılmış hazır bir docker konteynırı vardır. Bunun kurulumu için de bilgisayarınıza docker kurulumu yapıp konteynırı çalıştırabilirsiniz. Docker Konteynırı: https://hub.docker.com/r/pygoat/pygoat
  3. DockerVuln ile çalıştırmak: DockerVuln zafiyetli web uygulamalarını içinde bulunduran arayüzlü bir program. Bu programı herhangi bir linux dağıtımına kurarak içerisindeki web uygulamalarını iki tuşla çalıştırabilirsiniz. DockerVuln: https://github.com/yusufarbc/DockerVuln

A1: Broken Access Control

Bazen yetkilendirme olarak da adlandırılan erişim kontrolü, bir web uygulamasının bazı kullanıcılara içerik ve işlevlere erişim izni verirken diğerlerine vermemesidir. Bu kontroller kimlik doğrulamasından sonra gerçekleştirilir ve 'yetkili' kullanıcıların neler yapabileceğini yönetir. Bir web uygulamasının erişim kontrol modeli, sitenin sağladığı içerik ve işlevlerle yakından bağlantılıdır. Buna ek olarak, kullanıcılar farklı yeteneklere veya ayrıcalıklara sahip bir dizi gruba veya role dahil olabilir.

Erişim kontrolü, kullanıcıların amaçlanan izinlerinin dışında hareket edemeyecekleri şekilde politikayı uygular. Buradaki hatalar genellikle yetkisiz bilgi ifşasına, tüm verilerin değiştirilmesine veya imha edilmesine ya da kullanıcının yetkisi dışında bir iş eylemini gerçekleştirilmesine yol açar.

LAB 1

Laba girip jack:jacktherippercredentialları ile oturum açtımızda bu hesabın bir secret keye sahip olamadığını görüyoruz. Secret Keyin admin hesabında olduğu bilgisi bize verilmiş.

İsteği burp suite ile yakalayıp inceledeiğimizde admin isminde bir parametre olduğumu ve 0 değeri verildiğini görüyoruz. Erişim kontrolü bu parametre tarafından sağlanıyor ancak biz bu isteği manipüle edebiliyoruz.

Bu parametreyi 1 yapıp isteği gönderdiğimizde ise admin yetkisiyle giriş yapıp şifreyi elde ediyoruz.

LAB 2

Laba girip jack:jacktherippercredentialları ile oturum açtımızda yine aynı şekilde jack kullanıcısının admin olmadığını ve secret keye sahip olmadığını görüyoruz.

Sayfanın kaynak koduna baktığımızda adminin google chrome mozilla gibi bir bowser kullanamayacağı sadece pygoat_admin browserı kullanabileceği yazıyor. İlginç.

Bur suite isteğini yakalayıp baktığımızda user-agent parametresinde bizim browser bilgimizi ilettiğimizi görüyoruz.

Buradaki değeri pygoat_admin olarak değiştiriyorum. Ve evet secret keyi elde ettik.

A2: Cryptographic Failures

Kriptografik hatalar hassas bilgi sızıntılarına(Sensitive Data Exposure) neden olabilirler. Bilgi sızıntısı, bir web sitesinin kullanıcılarına hassas bilgileri istemeden ifşa etmesidir. Bağlama bağlı olarak, web siteleri potansiyel bir saldırgana aşağıdakiler de dahil olmak üzere her türlü bilgiyi sızdırabilir:

  • Kullanıcı adları veya finansal bilgiler gibi diğer kullanıcılar hakkındaki veriler
  • Hassas ticari veya iş verileri
  • Web sitesi ve altyapısı hakkında teknik detaylar

LAB

Django Frameworkünde geliştirme yapan geliştiricilere hataların gösterilmesini içeren bir DEBUG niteliği vardır. DEBUG=True'ya sahip olmanın özelliklerinden biri, bir istisna oluştuğunda tüm settings.py yapılandırmaları da dahil olmak üzere ortamınızdan çok sayıda meta veri dökmektir. Bu geliştiricinin hatayı çözümlemesi için gereklidir. Ancak, yayınlanmış bir uygulamada bu niteliğin aktif olması saldırgana web uygulaması hakkında çok fazla bilgi sağlar.

LAB'da bizden 500error sayfasını bulmamızı istiyordu.

Şekildeki gibi olmayan bir sayfaya gitmek istediğimizde bize web site dizinlerini verdi.

DEBUG=TRUE

500error

Bulduğumuz sayfaya gittiğimizde bize web uygulaması ile ilgili pek çok metadata sağlıyor.

A3: Injection

En yaygın enjeksiyonlardan bazıları SQL, NoSQL, OS komutu, Nesne İlişkisel Eşleme (ORM), LDAP ve İfade Dili (EL) veya Nesne Grafiği Gezinme Kütüphanesi (OGNL) enjeksiyonudur.

Kaynak kodu incelemesi, uygulamaların enjeksiyonlara karşı savunmasız olup olmadığını tespit etmenin en iyi yöntemidir. Tüm parametrelerin, başlıkların, URL'lerin, çerezlerin, JSON, SOAP ve XML veri girişlerinin otomatik olarak test edilmesi şiddetle tavsiye edilir. Kuruluşlar, uygulamanın dağıtımından önce ortaya çıkan enjeksiyon zafiyetlerini belirlemek için statik (SAST), dinamik (DAST) ve etkileşimli (IAST) uygulama güvenlik testi araçlarını kullanalabilir.

Bir uygulama şu durumlarda enjeksiyon saldırısına açıktır:

  1. Kullanıcı tarafından sağlanan veriler uygulama tarafından doğrulanmaz, filtrelenmez veya sterilize edilmez.
  2. Dinamik sorgular veya bağlama duyarlı kaçış olmadan parametrelendirilmemiş çağrılar doğrudan yorumlayıcıda kullanılır.
  3. Doğrulanmamış veriler, ek, hassas kayıtları ayıklamak için nesne-ilişkisel eşleme (ORM) arama parametreleri içinde kullanılır.
  4. Doğrulanmamış veriler doğrudan kullanılır veya birleştirilir. SQL veya komut, dinamik sorgular, komutlar veya saklı yordamlardaki yapıyı ve kötü amaçlı verileri(genellikle kod parçası) içerir.

SQL Injection LAB

SQL enjeksiyonu, istemciden uygulamaya gelen girdi verileri aracılığıyla bir SQL sorgusunun eklenmesi veya "enjeksiyonundan" oluşan ünlü bir Enjeksiyon saldırısıdır. Başarılı bir SQL enjeksiyonu, veritabanından hassas verileri okuyabilir, veritabanı verilerini değiştirebilir (Ekle/Güncelle/Sil), veritabanı üzerinde yönetim işlemleri yürütebilir (VTYS'yi kapatmak gibi), VTYS dosya sisteminde bulunan belirli bir dosyanın içeriğini kurtarabilir ve bazı durumlarda işletim sistemine komutlar verebilir. SQL enjeksiyon saldırıları, önceden tanımlanmış SQL komutlarının yürütülmesini etkilemek amacıyla veri düzlemi girdisine SQL komutlarının enjekte edildiği bir enjeksiyon saldırısı türüdür.

Login Form

LAB ortamında user/password credentialları ile giriş yapmaya çalıştığımızda aşağıdaki SQL sorgusunu görüyoruz.

SQL Script

admin hesabına giriş yapmak için username kısmına "admin" değerini vermemiz lazım. Ancak parolasını bilmiyoruz. Ancak bu SQL scriptini manipule edebiliriz.

password='password' kısmında tırnak içindeki password değeri forma girdiğimiz değer. Formda ilk olarak tırnağı kapatıp sonrasında işlediğimi SQL komutunu çalıştırabiliriz.

kullamıcı adı: admin
password: ' OR '1' ='1

SQL deyimindeki 1=1 ifadesi sonucun TRUE dönmesini ve SQL deyiminin çalışmasını dolayısıyla sayfaya login olmamızı sağlayacak.

Admin olarak oturum açma

Command Injection LAB

Komut enjeksiyonu, hedefin savunmasız bir uygulama aracılığıyla ana bilgisayar işletim sistemi üzerinde keyfi komutların yürütülmesi olduğu bir saldırıdır. Komut enjeksiyonu saldırıları, bir uygulama kullanıcı tarafından sağlanan güvenli olmayan verileri (formlar, çerezler, HTTP başlıkları vb.) bir sistem kabuğuna aktardığında mümkündür. Bu saldırıda, saldırgan tarafından sağlanan işletim sistemi komutları genellikle savunmasız uygulamanın ayrıcalıklarıyla yürütülür. Komut enjeksiyon saldırıları büyük ölçüde yetersiz girdi doğrulaması nedeniyle mümkündür.

LAB ortamında bir Name Server Lookup uygulaması bulunuyor. Kullanıcıdan aldığı domain name'i çalıştırdığı işletim sistemi üzerinde name lookup yapan bir komuta parametre olarak verip çıktısını bize döndürüyor.

Linux sistemler için dig Windows sistemler için nslookup aracını kullanıyor. Hem linux hem de windows sistemlerde komut deyimini bitirmemize ve farklı bir komut çalıştırmamıza yarayan ; ifadesi vardır.

Linux sistemler için, input alanına bir domain yazdıktan sonra ; ile komutu bitirip istediğimiz komutu çalıştırabiliriz. Örneğin cat komutuyla linux sistemlerde kullanıcıları içeren passwd dosyasını okumaya çalışabiliriz.

google.com; cat /etc/passwd

Bu komutu çalıştırdığımızda dig sonuçlarından sonra passwd dosyası web sayfasına yazdırılacaktır.

Windows sistemelr için, input alanına domain yazdıkdan yine ; ile komutu bitirip istediğimiz komutu çalıştırabiliriz. Örneğin dir komutuyla Windows sistemlerde dizindeki dosyaları yazdırabilriz.

google.com; dir

Bu komutu çalıştırdıktan sonra nslookup sonuçlarından sonra dizindeki dosyalar web sayfasına yazdırılacaktır.

A4: Insecure Design

Güvensiz tasarım, farklı zayıflıkları temsil eden geniş bir kategoridir. Güvensiz tasarım ile güvensiz uygulama arasında bir fark vardır. Tasarım kusurları ile uygulama kusurları arasında ayrım yapmamızın bir nedeni vardır; bunların farklı kök nedenleri ve düzeltme yolları vardır. Güvenli bir tasarım yine de istismar edilebilecek güvenlik açıklarına yol açan uygulama kusurlarına sahip olabilir. Güvensiz bir tasarım mükemmel bir uygulama ile düzeltilemez çünkü tanım gereği, gerekli güvenlik kontrolleri hiçbir zaman belirli saldırılara karşı savunmak için oluşturulmamıştır. Güvensiz tasarıma katkıda bulunan faktörlerden biri, geliştirilmekte olan yazılım veya sistemin doğasında bulunan iş riski profilinin eksikliği ve dolayısıyla hangi düzeyde güvenlik tasarımının gerekli olduğunun belirlenememesidir.

LAB

Lab ortamındaki örneğe baktığımızda, bize 5 ücretsiz bilet veren ancak tüm biletler satılana kadar filmi izlememize izin ver meyen bir uygulama ile karşı kaşıyayız.

Bu uygulama bize sadece 5 bileti ücretsiz sağlıyor. Burp isteğini yakalayıp baktığımda da herhangi bir zafiyet unsuru görmedim.

Lab ortamındaki açıklamada, bizim bütün biletleri alabileceğimizi söylüyordu. Peki ya nasıl? ipucu olarak logout and think(çıkış yap ve düşün) demiş. Acaba çıkış yapıp yeni bir hesap oluşturup ordan da ücretsiz bilet alabilir miyiz?

Evet işe yaradı başka bir hesap oluşturup ücretsiz 5 bilet daha aldık. Bu şekilde 9 hesap daha oluşturursak tüm biletleri alabiliriz ve filmimizi izleyabiliriz:) 
Görüldüğü üzere uygulamada bilinen anlamda herhangi bir zafiyet yok ancak tasarımdaki yani iş kurallarını oluşturmadaki bir hata bizi bu noktaya getirdi.

A5: Security Misconfiguration

Yanlış yapılandırmalar, ağ hizmetleri, platform, web sunucusu, uygulama sunucusu, veritabanı, çerçeveler, özel kod ve önceden yüklenmiş sanal makineler, konteynerler veya depolama dahil olmak üzere bir uygulama yığınının herhangi bir seviyesinde ortaya çıkabilir. Otomatik araçlar yanlış yapılandırmaları, varsayılan hesapların veya yapılandırmaların kullanımını, gereksiz hizmetleri, eski seçenekleri vb. tespit etmek için kullanışlıdır.

Bu tür kusurlar sayesinde saldırganlar, bazı sistem verilerine veya işlevlerine yetkisiz erişim sağlar. Bazen bu tür kusurlar sistemin tamamen tehlikeye girmesine neden olur.

LAB

Bu laboratuvarda bir yanlış yapılandırma var. Gizli anahtarı ortaya çıkaran ve ancak admin bu anahtarı görüntüleyebilir. Burada sormamız gereken şey admin olduğunu nasıl doğruluyor? Bir cookie ya da header mı var?

Labda secret key düğmesine bastığımızda sadece admin.localhost:8000'in bu secret keye erişebildiğini bie söylüyor. Nasıl olabilir? Hadi Burp ile isteği yakalayalım.

Bu burp isteğinde secret'a bir GET isteği attığını görüyoruz. Ancak hata mesajında bize belirtilen X-Host headerı burada yok. Zaten değerinin none yani olmadığını da bize iletmemiş. Burada yapmamız gerek bu X-Host adında bir header ekleyip değerini admin.localhost:8000 olarak vermek.
Bu uygulama admin hesabını istekteki X-Host değerine bakarak doğruluyor ancak client tarafında bizim bu isteği manipüle edebileceğimizi göz ardı etmiş durumda.

Burpün Proxy menüsünde isteği yakaladığımızda hemen sağ tarafta headerları görebildiğimiz ve düzenleyebildiğimiz bir menü var. Buradan X-Host headerını ekleyerek olması gereken değeri veriyoruz. Ardından isteği gönderebiliriz. Ve secret keyi elde ettik.

A6: Vulnerable and Outdated Components

Bir geliştirici halihazırda bilinen bir güvenlik açığı olan bir kod parçası veya kütüphane kullandığında, bu durum tüm uygulamanın tehlikeye girmesine neden olabilir. Bu durum, uygulama içinde kullanılan kütüphaneler ve çerçeveler gibi bileşenler çoğunlukla tam yetkiyle çalıştığında ortaya çıkar. Güvenlik açığı olan bir bileşen ciddi bir veri kaybına veya sunucunun ele geçirilmesine neden olabilir.

LAB

Bu lab ortamında, yaml dosyalarını json dosyalarına çeviren bir uygulama vardır. Json verilerini almak için bir yaml dosyasının seçilmesi ve yüklenmesi gerekir. Ayrıca, kullanıcıya uygulamanın kullandığı kütüphanenin sürümünü söyleyen bir get version özelliği de vardır.

Get Version düğmesine bastığımızda bu uygulamada pyyaml v5.1 kullanıldığını görüyoruz. Bu versiyonu internette biraz araştıralım.

Zafiyet Araştırması

Araştırmalar sonucunda, kullanılan modülün Arbitary Code Execution isminde kritik bir zafiyete sahip olduğunu gördüm. Ardından bu zafiyetin nasıl exploit edileceğine dair araştırmalar yapabilirsiniz.

Bu zafiyetti sömürebilmek için(exploit) bir yaml dosyası-payload hazırlamamız lazım. Aşağıaki scripti bir yaml dosyasına kaydettim.

!!python/object/apply:subprocess.check_output  
- ls

Ardından oluşturduğum dosyayı seçip upload butonuna tıkladım.

Hazırladığımız payload çalıştığında verdiğimiz komut olan ls komutu çalışacak ve bize sunucuda bulunduğu dizidneki dosyaları yazdıracak. Ve geelen çıktıda dizin ve dosyaları görebiliyoruz.

A7: Identification and Authentication Failures

Hatalı kimlik doğrulama(Authantication and Idenntification Failures), saldırganların çevrimiçi ortamda meşru kullanıcıları taklit etmek için kullandıkları çeşitli güvenlik açıkları için kullanılan bir terimdir.

Saldırganlar bu zayıflıklardan yararlanmak için kimlik doğrulama saldırılarından belirli bir kişinin kimlik bilgilerine erişim sağlamayı amaçlayan yüksek hedefli planlara kadar çok çeşitli stratejiler kullanır.

LAB

Laboratuvar, kullanıcılardan kullanıcı adı ve şifrelerini isteyen bir giriş sayfasından oluşur. Şifreyi bilmiyorsanız, otp(one-time-pad) ile giriş için bir özellik de vardır! Kullanıcılar otp ile giriş özelliğine tıkladığında, kullanıcı otp göndermek için e-posta kimliğini soran bir sayfaya yönlendirilir. Kullanıcı bir e-posta kimliği sağladığında, 3 haneli opt'un sayfanın kendisine geri gönderildiğini görebilirsiniz. Bu genel senaryo değildir, genellikle kod kullanıcının kayıtlı e-postasına gönderilir.
Kullanıcı 3 haneli kodu aldıktan sonra artık kodu OTP'nizi girin yazan giriş kutusuna girebilir Geçerli OTP'yi girdikten sonra kullanıcı, Login Successful as user : email yazan bir sayfa alır. Eğer OTP yanlışsa, kullanıcı Geçersiz OTP yazan bir mesaj alır.

Admin e-posta adresiadmin@pygoat.com olarak verilmiş. Uygulama arayüzünde OTP ile giriş bölümüne geldiğimizde bu e-postayı yazarak bir OTP kodu aldım. OTP kodu 3 haneli ve herhangi bir kısıtlama captcha vs. yok. Uygulama üzerinde kaba kuvvet ile OTP'i bulabiliriz.

Burp isteğini yakalayıp intrudera atıp buradan bir kaba kuvvet saldırısı yapmayı deneyebiliriz.

Intruderda otp header değerini seçerek add butonuna tıklıyoruz ve bu değeri payload olacak şekilde işaretliyoruz. Ardından sağ üstte bulunan ikinci sekme olan payload sekmesine geçiyoruz.

Payload sekmesinde 111â€"999 arası tüm değerleri deneyeceğimiz bir payload tanımlıyoruz. Ardından saldırıyı başlatabiliriz. Burp'un community versiyonunda kaba kuvvet saldırı hızları yavaşlatılmıştır. Bunun için biraz uzun sürebilir.

Sonuçta length değeri farklı olan istekde OTP'yi bulmuş olacağız.

A8: Software and Data Integrity Failures

Serilizasyon ve Deserilazsyo exploitleri nadiren bir hataya sebep olmadan çalışır. Bazı araçlar deserializasyon kusurlarını keşfedebilir, ancak sorunu doğrulamak için genellikle insan yardımına ihtiyaç duyulur. Tanımlanmasına ve ele alınmasına yardımcı olacak araçlar geliştirildikçe serileştirme kusurlarına ilişkin yaygınlık verilerinin artması beklenmektedir. Bu kusurlar, mümkün olan en ciddi saldırılardan biri olan uzaktan kod yürütme zafiyetlerine yol açabilir.

Serilizasyon, nesneler ve alanları gibi karmaşık veri yapılarını, sıralı bir bayt akışı olarak gönderilip alınabilecek "daha düz" bir biçime dönüştürme işlemidir. Deserilazsyon, bu bayt akışını orijinal nesnenin tamamen işlevsel bir kopyasına, tam olarak serileştirildiği durumdaki haline geri yükleme işlemidir.

Uygulamalar ve API'ler, bir saldırgan tarafından sağlanan zararlı veya tahrif edilmiş nesneleri deserilize edilmesiye savunmasız kalacaktır. Bu durum iki temel saldırı türüyle sonuçlanabilir:

  1. Nesne ve veri yapısıyla ilgili saldırılar: Saldırganın uygulama mantığını değiştirdiği ya da uygulamada deserializasyon sırasında veya sonrasında davranışı değiştirebilecek sınıflar varsa keyfi uzaktan kod çalıştırma elde ettiği saldırılar.
  2. Mevcut veri yapılarının kullanıldığı ancak içeriğin değiştirildiği erişim kontrolü ile ilgili saldırılar gibi tipik veri manipülasyon saldırıları.

Serileştirme şu amaçlarla uygulamalarda kullanılabilir:

  • Uzak ve süreçler arası iletişim (RPC/IPC)
  • Tel protokolleri, web hizmetleri, mesaj aracıları
  • Önbellekleme/Süreklilik
  • Veritabanları, önbellek sunucuları, dosya sistemleri
  • HTTP çerezleri, HTML form parametreleri, API kimlik doğrulama belirteçleri

Insecure Deserialization LAB

Lab ortamında yine sadece adminin girevileceği bir sayfa ile karşı karşıyayız. Admin olduğunun doğrulaması nasıl yapılıyor? Bunu araştırmamız lazım.

Sayfaya giden isteği burp ile yakalayalım. Bu istekte cookie bilgisinin base64 encode edildiğini görüyoruz.

Burp Suite'in decoder aracıyla base64 encodelu token değerini decode edebiliriz.

A9: Security Logging and Monitoring Failures

Uygunsuz günlük kaydı(log) ve izleme neredeyse her büyük siber saldırının temelini oluşturmaktadır. Saldırganlar, tespit edilmeden hedeflerine ulaşmak için izleme ve zamanında müdahale eksikliğine güvenirler.
Başarılı saldırıların çoğu güvenlik açığı araştırması ile başlar. Bu tür probların devam etmesine izin vermek, başarılı bir istismar olasılığını neredeyse %100'e çıkarabilir.

LAB

Bu laboratuvar, bazen uygunsuz günlük kaydının bilgi ifşasına nasıl yol açabileceği hakkında bir fikir edinmenize yardımcı olur. Laboratuvara erişen kullanıcıya, günlüklerin sızdırıldığını söyleyen bir giriş sayfası verilir. Kullanıcının sızıntıyı bulması ve günlüklerde sızdırılan kimlik bilgilerini elde etmeye çalışması gerekir.

Sayfaya sıradan bir kullanıcı adı şifre girdiğimde normal olarak hatalı kullanıcı adı veya şifre diye hata dönüyor. Dirb ile bir tarama yaptığımda /debug isminde bir diin keşfettim.

/debug dizini üzerinde sistemin tuttuğu loglar görüntülenebiliyor. Bu logların üzerinde a10 sayfasını aratınca ilginç bir log görüyoruz.

Login sayfası GET isteğiyle çalıştığı için oturum açmada kullanılan credentiallar urle yazılmış ve loglara düşmüş. Bu credentiallarla login olabiliriz.

A10: Server-Side Request Forgery

SSRF kusurları, bir web uygulaması kullanıcı tarafından sağlanan URL'yi doğrulamadan uzak bir kaynağı getirdiğinde ortaya çıkar. Bir saldırganın, bir güvenlik duvarı, VPN veya başka bir tür ağ erişim kontrol listesi (ACL) ile korunsa bile, uygulamayı beklenmedik bir hedefe hazırlanmış bir istek göndermeye zorlamasına olanak tanır. Modern web uygulamaları (mikroservis mimarisi) son kullanıcılara kullanışlı özellikler sağladıkça, URL almak yaygın bir senaryo haline gelmektedir. Sonuç olarak, SSRF görülme sıklığı artmaktadır. Ayrıca, bulut hizmetleri ve mimarilerin karmaşıklığı nedeniyle SSRF'nin ciddiyeti daha da artmaktadır.

LAB

Bu lab ortamı sayfaları bazı blogları gösterir, ancak blogların nasıl sunulduğunu anlayabilir misiniz?

Lab ortamında arka planda çalışan kod verilmiş ve bizden env dosyasını bulmamız isteniyor. İsteği burp ile bakıp incelediğimizde

blog parametresitle bir dizin verildiği bu dizindeli text dosyasının okunup sayfaya bastırıldığını görüyoruz. Bu değeri manipüle ederek dizindeki istediğimiz dosyayı okuyabiliriz. Bizden a.env dosyasını okumamız istenmiş. Deneme yanılma yoluyla a.env dosyasını arayarak okuyabiliriz.

Kaynaklar

OWASP TOP 10 2021: https://owasp.org/Top10/

Web Security Academy: https://portswigger.net/web-security/

Mastering Modern Web Penetration Testing