Görüntü olarak al işlevi, herhangi bir New Relic hesabından (IDOR) tüm Insights/NRQL verilerini çeker


Bu yazı, New Relic’te nasıl oldukça kötü bir Güvenli Olmayan Doğrudan Nesne Referansı (IDOR) bulduğumla ilgili tüm süreç boyunca size yol gösterir.

New Relic’te New Relic Altyapısı adı verilen bir ürün grubuna 3. taraf entegrasyonu ekleme olanağı bulunmaktadır. Yaygın entegrasyonlar arasında AWS, Azure ve en son Google Cloud Platform (GCP) yer almaktadır. Google Cloud Platform’da kontrol panelleri oluşturma olanağı da mevcuttur:

yeni kalıntı kontrol panelleri

New Relic’te kontrol panelleri oldukça yaygındır, ancak entegrasyon bölümündeki kontrol panellerinde benzersiz bir şey vardı; Her grafiğin açılır seçenekleri aşağıdaki eylemleri gerçekleştirmenize olanak tanır: Olumsuz diğer kontrol paneli alanlarından herhangi birinde mevcut:

Hemen gözüme çarpan seçenek “Resim olarak al” seçeneğiydi. Bu seçenek, kontrol panelini oluşturan NRQL sorgusunu bir görüntüye dönüştürür ve güvenlik açığının bulunduğu yer burasıdır. New Relic Sorgu Dili’nin (NRQL) çalışmaları hakkında daha fazla bilgi için şu bağlantıya göz atın:

https://docs.newrelic.com/docs/insights/nrql-new-relic-query-language/nrql-resources/nrql-syntax-components-functions

Kontrol paneli görüntüsünü oluşturmaya yönelik normal POST isteği aşağıdaki gibidir:

{"query":{"account_id":1523936,"nrql":"SELECT count(*) FROM IntegrationError FACET dataSourceName SINCE 1 DAY AGO"},"account_id":1523936,"endpoint":"/v2/nrql","title":"Authentication Errors"}

Uygulama kontrol edip göremedi. account_id parametre istekte bulunan kullanıcıya aitti. Hesap numarası 1523936 bana ait ama başka bir numarayla değiştirirsem başka bir hesaptan veri çekebilirim.

Artık bu değer üzerinde kontrol sahibi olduğum için hesap kimliğini New Relic’teki herhangi bir hesap kimliğiyle değiştirebilirdim. Hesap kimliği parametresi artımlı olduğundan, eğer kötü niyetliysem bu isteği Burp Intruder’a gönderebilir ve her istekte birer birer artacak şekilde hesap kimliği değerini vurgulayabilirdim, böylece New Relic’teki herhangi bir hesaptan veya tüm hesaplardan istediğim verileri çekmeme olanak tanıyabilirdim. NRQL sorgusu da değiştirilebilir, böylece orijinal kontrol panelini oluşturan verileri almak yerine isteği şunun gibi değiştirebilirim:

{"query":{"account_id":any_account_number_here,"nrql":"SELECT * FROM SystemSample"},"account_id":any_account_number_here,"endpoint":"/v2/nrql","title":"Uh oh!"}

Bu sorgu, aşağıdaki fotoğrafı indiren herhangi bir hesap kimliğinde SystemSample NRQL sorgusunu çalıştırır:

Yani bu ilginçama bana gerçekten ilginç bir bilgi vermiyor. Başka hesaplara ulaştığımı biliyorum ama geri aldığım bilgiler işe yaramıyor; sadece boş bir grafik gösteriyor! Bu tür bir istek gönderdiğinizde sunucudan gelen yanıtta ilginç bir başlık keşfedene kadar farklı NRQL sorguları deneyerek bir süre bununla oynadım:

X-Image-Url: http://gorgon.nr-assets.net/image/{UNIQUE_ID}

Eğer eklersen fark ettim ki ?type= URL’nin sonunda size farklı grafik türlerini göstererek normalden daha fazla veri çıkarmanıza olanak tanır. Yanlış bir “ girerseniz?type=” değeri, hata mesajındaki mevcut tüm grafik seçeneklerini size gösterecektir:

{"code":"BadRequestError","message":"uhoh is not a valid Vizco chart type. Permitted Types: apdex area bar baseline billboard bullet empty event-feed funnel heatmap histogram json line markdown pie stacked-horizontal-bar scatter table traffic-light vertical-bar"}

Artık yukarıdaki getiri grafik türlerinden herhangi birini kullanabilirim Daha NRQL sorgusunda normalde alacağımdan daha fazla bilgi:

X-Image-Url: http://gorgon.nr-assets.net/image/{UNIQUE_ID}?type=json

Artık bir yere varıyoruz! Normal grafik türü yerine, artık fotoğraf olarak indirilen kontrol panelinin JSON dökümünü döndürüyorum. Bu JSON dökümünü herhangi bir hesaba gerçekleştirebileceğim düşünülürse bu oldukça harika; ancak bir adım daha ileri gitmek istiyorum. Her istekte mümkün olduğunca fazla veriyi nasıl sızdırabilirim? Sadece bir tane ekle &height=2000 URL’nin sonunda 🙂

X-Image-Url: http://gorgon.nr-assets.net/image/{UNIQUE_ID}?type=json&height=2000

Bunu New Relic ekibine bildirdim ve kısa bir süre sonra birkaç gün içinde sorunu düzelttiler. Bu hata için bana 2.500$ ödül verildi. Onlara bu yazıya sorunu nasıl çözdükleri hakkında herhangi bir yorum eklemek isteyip istemediklerini sordum ve aşağıdakileri sağladılar:

Biraz arka plan olarak bu rapor, arka uç kimlik doğrulama proxy’mizde bulunan doğrulama kodundaki bir mantık hatasını tanımlamamıza yardımcı oldu. Bir uygulamaya yönelik konfigürasyon seçeneklerinin çok spesifik bir kombinasyonu, doğrulama kontrollerinin gerçekleşmemesine neden olur.

Bu sorunu belirledikten sonra, sorunu hızlı bir şekilde azaltmak için bu yapılandırma seçenekleri kombinasyonunu kullandığımız her yeri arayabildik. Bu daha sonra mantık sorununun kalıcı olarak çözülmesine yol açtı ve hesap doğrulamanın her zaman isteğin ilerlemesine izin verilmeden önce gerçekleşmesini sağladı.

New Relic güvenlik ekibi piyasadaki en iyilerden biri; hızlı bir şekilde ödül veriyorlar ve çözüme ulaşma süreleri muhteşem. Bu gerçekten de üzerlerinde böcek avlamaktan bu kadar keyif almamın ana nedenlerinden biri!

Beni Twitter’da takip edin üzerinde çalıştığım konular ve genel olarak güvenlik/hata ödülleri konusunda güncel kalmak için 🙂





Source link