Broken Access Control

Xena Vision
9 min readOct 13, 2021

--

Songül Kızılay

Erişim Kontrolü nedir ?

Erişim kontrolü, bir kişinin belirli bir konuma veya dosyaya uygun erişime sahip olarak erişebileceği bir yetkilendirme anlamına gelir. Herhangi bir kişi bu konuma veya dosyaya uygun yetkilendirme olmadan erişirse, bu yetkisiz erişimdir. Bu politikanın başarısızlığı, bilgilerin yetkisiz ifşasına, verilerin manipülasyonuna yol açacaktır. Saldırgan, kullanıcı veya yönetici olarak hareket eder ve kayıt oluşturma, güncelleme, erişim veya silme gibi ayrıcalıklı işlevleri kullanmaya başlar.

Broken Access Control

Kimliği doğrulanmış kullanıcıların yapmasına izin verilen kısıtlamalar düzgün bir şekilde uygulanmaz . Saldırganlar diğer kullanıcıların hesaplarına erişmek, hassas dosyaları görüntülemek , diğer kullanıcıların verilerini değiştirmek gibi yetkisiz işlemleri verilere erişmek için kusurlarından yararlanabilir

Güvenlik Açığı Tespiti

Oturum açık durumdayken web sitesine göz atalım ve ziyaret edilen sayfaları kaydedelim , daha sonra çıkış yapıp aynı sayfalara tekrar tıkladığınızda yanlızca oturum açmış kullanıcılar için açık olması gereken sayfalar yeniden açılıyorsa ,içerik gösteriliyorsa web sitesi savunmasızdır

Güvenlik Açığı Önleme

  • Erişim kontrolü için yalnızca sunucu tarafı kodunu (veya sunucusuz API) kullanın
  • Web sunucusu dizin listesini devre dışı bırakın ve dosya meta verilerinin ve yedekleme dosyalarının web dizinlerinde bulunmadığından emin olun.
  • Uygulama genelinde erişim kontrollerini yeniden kullanın
  • CORS kullanımını en aza indirin.
  • Otomatik saldırılardan kaynaklanan zararı en aza indirmek için hız sınırlayıcı API ler ve denetleyiciler
  • İşlevsel erişim kontrolü için birim ve entegrasyon testleri

Örnek Saldırı Senaryoları

1 Saldırgan istenen sonucu elde etmek için URL deki id parametresini değiştirir . Doğru şekilde yazılmadıysa saldırgan herhangi bir kullancının hesabına erişebilir

http://example.com/app/userInfo?id=14

2. Bazı bağlantıları açmaya zorlamak Bunlar açılırsa saldırgan yönetici sayfasına erişebilir

http://example.com/user_page

http://example.com/admin_page

3. sadece get isteğiyle kullanıcı tarafından resim yüklenen bir sayfa düşünün

http://example.com/show.php?name?=”image.jpg”

eğer yol kısıtlanmamışsa bunada izin verir

http://example.com/show.php?=”../../etc/passwd ”

4. uygulama hesap bilgilerine erişen sql isteğine doğrulanmamış veriler kullanıyorsa

pstmt.setString(1, request.getParameter(“acct”));
ResultSet results = pstmt.executeQuery();

saldırgan acct isteğine istedği hesap numarasını göndermek için tarayıcıdaki parametreyi değiştirir

http://example.com/app/accountInfo?acct=avb123124

cve listesi burada

PortSwigger Access Control Writeup

LAB 1 Unprotected admin functionality

Laba erişelim

robots.txt ye bakalım

admin panelin yeri gösterilmiş admin panele gidelim

kullanıcılar gösterilmiş carlos kullanıcısını silelim ve 1. labı bitirelim

LAB 2 Unprotected admin functionality with unpredictable URL

Lab erişelim

açıkcası aklıma ilk gelen robots.txt dosyasına bakmaktı ama buı kez işe yaramadı . Sayfanın kaynak kodlarına bakalım

pek javascript bilmesemde parametreleri teker teker araştırarak ne yaptğını anlayabiliriz

getAttribute( )bağlantının hrefözniteliğinin değerini toplamak ve onu istenen bir değişkene yerleştirmek için kullanabilir

setAttribute( )yöntemi kullanarak yeni nitelik değerleri ekleyebilir veya mevcut olanları değiştirebilirsiniz .

yani burda adminPanelTag a /admin-2e4wif bağlantısı atanmış

verdiği adrese giderek carlosu silelim ve bu labı bitirelim

Lab 3 User role controlled by request parameter

Labaratuara erişelim

bize verilen bilgiler ile giriş yapalım

giriş yaparken burp suite ile isteği yakalayalım

kullanıcı bilgileri ile giriş yaptığımız zaman cookie de Admin adında bir değer tutulmakta ve bu değer false durumda . isteği repertera gönderip o değeri true yapalım ve gönderelim evet giriş yaptı tutulan isteği bırakalım ve giriş yapmasına izin verelim

carlosu silelim ve labı bitirelim

Lab 4 User role can be modified in user profile

laba erişelim

bize verilen kimlik bilgileri ile giriş yapalım ve isteği yakalayalım

wiener:peter

Update email butonuna tıklayalım ve mail adresimizi değiştirmeye çalışırken isteği yakalayalım burp suite ile

gelen isteği repertara gönderelim ve isteği inceleyelim

roiled değerini 1 den 2 ye değiştirmemiz gerek

sayfayı yeniyerek admin panele gidelim ve carlosu silerek labı bitirelim

Lab 5: URL-based access control can be circumvented

laba erişelim

admin panele gitmeye çalışınca hata döndürdü

isteği yakalayalım soruda anlatıldığı gibi X-Original-URL un karşısına /admin

get isteğini boş bırakalım

ve carlosu silerek labı bitirelim

Lab 6 : Method-based access control can be circumvented

laba erişelim admin hesabı ile giriş yapalım admin panele gidip varlosu upgrade e tıklayalım isteği yakalayalım

yeni bir pencerede wiener hesabı ile giriş yapalım

home dizinine gelen isteği yakalayalım repertera gönderelim wiever ın cookie session bilgisini admin reperterdaki isteğe yapıştıralım ve sağ tık yaparak change request metadoa tıklayalım get isteği yapmamız gerekiyor ve adımızı wiener yapalım

Lab 7 : User ID controlled by request parameter

kullanıcı bilgilerimizle giriş yapalım ve isteği yakalayalım

url adresindeki wiener kısmını admin olarak değiştirelim ve yeniden isteği yakalayalım buna izin vermedi ilk başta yakaladığımız reperter isteğine gidelim

wieveri carlos olarak değiştirelim ve isteği gönderelim sonunda bizim api keyimizle carlosun api keyi aynı oldu

Lab 8: User ID controlled by request parameter, with unpredictable user IDs

verilen oturum bilgileri ile giriş yapalım ve url deki id bilgisini kaydedelim

9da07203–9f52–408a-a339-ef409f58dafe

carlos un yazdığı bir posttan id sini kaydedelim

5f6645d3-f785–4ab0-b349–50180d90d2c6

my accounta tıklayalım ve gelen isteği yakalayalım my_accountun id yi carlosunki ile değiştirelim

isteği gönderelim ve gelen apı bilgisini submit solution kısmına girelim

Lab 9: User ID controlled by request parameter with data leakage in redirect

bize verilen bilgilerle giriş yapalım ve isteği burp suite ile yakalayalım id kısmını carlos olarak değiştirelim ve isdteğimizi gönderelim

request 302 döndü 302 nedir ?

302 yeniden yönlendirme kodudur geçici olarak taşındığını gösterir

apı keyi submit kısmına girelim 🎃

Lab 10 :User ID controlled by request parameter with password disclosure

laba bağlanalım ve bize verilen bilgiler ile giriş yapalım

hesabım kısmında isteği yakalayalım

wiener kısmını administrator olarak değiştirelim ve repertera gönderelim isteği gönderelim ve dönen çıktıyı inceleyelim

yönetici parolasını bulduk ir5jl261ki5royep7qn9

admin panele giriş yaparak carlosu silelim

Lab 11 : Insecure direct object references

laba bağlanalım

siteyi biraz inceleyelim en ilginç canlı sohbet seçeneği

bir mesaj göndermeye çalışalım

transkripti görüntüleye tıklayalım bir txt belgesi indirdi

mesajların bir çıktısını veriyor transkripti görüntülemeye çalışırken isteği yakalayalım 2.txt yi 1.txt yapalım isteği gönderelim

gerçek konuşma burda yer alıyor ve bize carlosun şifresi verilmiş

63o1rapyzf0ip1vh0vmv 👑

hesabım kısmına şifremizle giriş yapalım

Lab 12: Multi-step process with no access control on one step

laba bağlanalım ve verilen bilgilerle giriş yapalım. admin panel kısmına tıklayalım ve carlosu upgrade butonuna tıklayalım ve gelen isteği yakalayalım repertera gönderelim

yeni bir sayfa açarak wiener ile giriş yapalım my accountu yenileyerek isteği yakalayalım admin paneldeki cookie session bilgisini buraya ekleyelim ve adını değiştirerek isteği gönderelim

Lab 13 : Referer-based access control

laba bağlanalım verilen admin bilgileri ile giriş yapalım admin panele girerek carlosa adminlik vermeye çalışalım ve isteği yakalayalım ve repertera gönderelim

başka bir sayfada wiener kullanıcısına girerek ana sayfada isteği yakalayalım

cookie bilgisini alarak admin repertera ekleyelim ve adını wiener yapalım

ve admin olduk ✨

--

--

Xena Vision
Xena Vision

Written by Xena Vision

High Tech Startup on Computer Vision

No responses yet