s27anonym 0x27 | Akıncı
|
|
Yüzbaşı
|
İstanbul 20 Mart 2022 27 Mesaj
Durum: Urfalıyam
|
|
|
- WEB | OWASP TOP 10 | Horizontal Privilege Escalation
Selamın aleyküm, dostlar OWASP TOP 10 serimizin 6. konusunda sizlere Horizontal Privilege Escalation Türkçe deyimi ile Yatay ayrıcalık yükseltme konusunu anlatmaya çalışacağım.
Horizontal Privilege Escalation Nedir? Yatay ayrıcalık yükseltme yani Horizontal Privilege Escalation, bir kullanıcının kendisiyle aynı erişim düzeyine sahip başka bir kullanıcının erişim haklarını kazanmasıdır. Bu biraz tuhaf gelebilir. Birinin neden o kişiyle aynı seviyedeki birinin haklarını elde etmek isteyebileceğini merak edebilirsiniz.
Hedef firma ZenBooks'dur adlı bir şirket'tir. ZenBooks, küçük ve orta ölçekli işletmeleri hedefleyen bulut tabanlı bir muhasebe ve fatura yönetimi firmasıdır. Burada ise zenbooks.com adresine penetrasyon testi uygulayacağız.
ZenBooks sitesine penetrasyon testi yapabilmemiz için bize bir hesap verir ve bu hesap bilgilerini login sayfasına doldurarak sistemimize giriş yapalım.
Başarılı bir şekilde oturumu açtık, ürün hakkında bir fikir edinmemiz ve test senaryolarını daha fazla belirlememiz ve güvenlik testi senaryoları geliştirmemiz için ZenBooks'un kullanıcı arabirimi menülerine ve işlevlerine göz atarak değerlendirmesiyle başlayalım.
Ayarlar sayfasında, kullanıcının hesabına kredi kartı bilgilerini eklemesine, düzenlemesine ve silmesine olanak tanıyan Faturalandırma ve Yenileme Ayarları ekranını görüyoruz.
ZenBooks'un kart verilerinin kaldırılmasını nasıl idare ettiğini test etmek için delete düğmesini kullanarak kredi kartı ayrıntılarını kaldıralım.
ZenBooks'un kredi kartı Silme işlevinin arka uç sunucusuyla nasıl iletişim kurduğunu daha iyi anlamamız için, bir uygulama web proxy'si kullanıp tarayıcımız tarafından oluşturulan HTTP isteğine müdahale edelim.
sil düğmesine tıklandığımızda, uygulama kaynağa bir POST isteği oluşturur deleteCard
POST İstek gövdesi ayrıca 1001'e ayarlanmış ccid bir parametre gönderir.
Uygulamayı test etmeye devam etmeden önce, bir kullanıcının kredi kartını silmek için HTTP POST isteğimizin ZenBooks uygulaması tarafından nasıl ele alındığını daha fazla analiz edelim.
deleteCreditCard Yöntem deleteCreditCard(), bir kullanıcı kredi kartını silmek istediğinde gönderilen istekleri işlemekten sorumludur.
getAttribute İlk önce oturum açmış kullanıcının hesabını aktif oturumdan alır ve onu account değişkene atar.
getParameter Daha sonra istekten kullanıcının kart kimliği ccid parametresini alır POST ve bunu cardNumber değişkene atar. Durumumuzda, ccid değer 1001 olarak ayarlanmıştır.
deleteCreditCardFor Son olarak, bir kullanıcının kredi kartı ayrıntılarını bir yöntemle aramak ve silmek için hem account ve cardNumber değerleri kullanılır deleteCreditCardFor().
POST, isteğini analiz ettikten sonra, değeri olarak değiştirerek parametreyi değiştirelim ccid 1001 1000
ccid : 1000
Parametreyi değiştirirken KOD penceresine dikkat edin. ccid
gördüğünüz gibi ccid parametresi 1001 olarak girilmiş fakat biz veriyi 1000 olarak değiştiriyoruz.
Değiştirilen isteği gönderdikten sonra, kredi kartımız silinmemiş POST olduğu görülüyor. Parametreyi manipüle etmemiz ZenBooks CTO'su Alice'in hesabını silmiş olabilir mi? ccid
Manipüle edilmiş isteğimizin Alice'in kredi kartı ayrıntılarını silip silmediğini kontrol etmek için Alice' ile iletişime geçelim. POST
Şimdi Alice olarak giriş yapalım ve hesabının silinip silinmdeiğini kontrol edelim.
Alice'in hesap bilgilerini yazıp oturumu açalım.
Vee Başardık! Kartı Silmek isteğimizde ccid parametre değerini basitçe değiştirerek, Alice'in kredi kartı ayrıntılarını başarıyla silmeyi başardık ve ZenBooks hesabının askıya alınmasına neden olduk. POST
yararlanılan güvenlik açığı, kötü niyetli bir aktörün bir kullanıcı hesabına erişim elde ettiği veya kullanıcı adına yetkisiz eylemler gerçekleştirdiği bir Yatay Ayrıcalık Yükseltme saldırısı olarak bilinir. Ayrıca, bu tür güvenlik açıkları belirli bir özellikle, örneğin kart silme ile sınırlı değildir ve güvenilir olmayan parametre değerlerinin, yeterli kimlik doğrulama ve yetkilendirme kontrolleri gerçekleştirilmeden uygulamaya geçirildiği herhangi bir işlevde kendini gösterebilir.
Horizontal Privilege Escalation güvenlik açığının temel nedenini daha iyi anlamak için deleteCreditCard() kredi kartı verilerini silmek için kullanılan yönteme bir göz atalım.
deleteCreditCard Yöntemin bir kullanıcının kredi kartını silmek için iki parça bilgi topladığını hatırlayın. getAttribute Önce aktif oturumdan oturum açmış kullanıcının hesabını alır.
ccid İkincisi, istekten kredi kartı kimliği ccid parametresini alır. POST
cardNumber Ancak, bunun kredi kartının silinmesini talep eden kullanıcıya ait olup olmadığını kontrol etmek için herhangi bir giriş doğrulaması cardNumber yapılmadığını ve böylece ccid rasgele değerler sağlayarak kullanıcı hesaplarından kredi detaylarını silmesine izin verdiğimizi unutmayın.
Peki Bu Saldırıları Nasıl Azaltacağız?
Ayrıcalık Yükseltme güvenlik açıklarını etkin bir şekilde azaltmak için geliştiriciler, kullanıcının istenen kaynağa erişmek için gerekli ayrıcalıklara sahip olduğundan emin olmak için rol tabanlı erişim kontrol kontrollerinin uygulandığından emin olmalıdır.
Ürün sahipleri, tüm kullanıcılar ve gruplar için uygun erişim denetimi izinlerini tanımlayan bir erişim denetimi ilkesini daha da geliştirmeli ve sürdürmelidir. Bu, güvenlik gereksinimlerinin mimarlara, tasarımcılara, geliştiricilere ve destek ekiplerine açık bir şekilde tanımlanmasını sağlar, böylece uygulama erişim denetimi işlevselliği tutarlı bir şekilde tasarlanır ve uygulanır.
Ayrıcalık Yükseltme saldırılarını önlemek için yukarıdaki en iyi uygulamaların savunmasız kod örneğimize nasıl uygulanabileceğini görelim.
isValidRequest Güvenli kod örneği, bir kullanıcının kredi kartını silmeden önce parametre değerinin geçerli isValidRequest() olup olmadığını kontrol eden yöntemle tanımlanan bir güvenlik denetimi ekler.
isValidRequest ccid Bir istek, istek tarafından sağlanan kredi kartı kimliği ( ) POST oturum açmış kullanıcı hesabına bağlı kredi kartı numarasıyla eşleşirse geçerli sayılır.
("You're not authorized to perform this action"); Bu kontrolü ekleyerek, manipüle ettiğimiz bir ccid değer göndermesi durumunda, bir istisna oluşturularak, Değiştirilen parametrede Kartı Sil eyleminin yürütülmemesini sağlar. ccid
___________________________________________
Cyber-Warrior TIM
|
|
|