AMPScript değerlendirmesi yoluyla Uber’in kullanıcı verilerine erişim elde etme


Modern geliştirme ve altyapı yönetimi uygulamaları hızlı ilerlemekte ve sürekli gelişmektedir. Yenilik yapma ve genişleme yarışında, yeni varlıklar hızla dağıtılıyor ve kamuya açık İnternet’e sunuluyor ve mevcut varlıklar sürekli olarak gelişiyor.

Bu gelişen saldırı yüzeyine ayak uydurmak bir yana, bu uygulamaları ve sistemleri güvence altına almak bile yeterince zordur. Geleneksel belirli bir noktaya ve statik güvenlik yaklaşımları buna ayak uyduramaz ve bu dinamik ortamda tehditleri proaktif bir şekilde yönetmek imkansız bir görev gibi görünebilir.

Bu konuyu ele almanın tek yolu, güvenlik değerlendirmesine yönelik yaklaşımı sürekli ve varlık odaklı olacak şekilde değiştirmektir. Sürekli Güvenlik Platformumuzla geniş bir saldırı yüzeyini izlerken, sıklıkla altyapıda yeni veya keşfedilmemiş güvenlik açıklarına yol açan değişiklikler keşfederiz.

Assetnote’un Sürekli Güvenlik Platformu tarafından Uber’in hata ödülü için keşfedilen belirsiz bir alt alanı araştırırken durum böyleydi: kesintarget-web-hook.uber.com.

Bir süredir alt alan adı, Express.js web sunucusu tarafından oluşturulan sade ve sıkıcı görünümlü “Bulunamadı” hatası döndürüyordu.

Ancak bir gün alt alan adı, birdenbire Uber’in mesaj kişiselleştirme sistemi için kapsamlı bir dahili test ortamı gibi görünen bir yanıt verdi:

Assetnote CS’nin https://exacttarget-web-hook.uber.com/ adresinde keşfettiği form

Uygulama ilk bakışta kullanıcı kişiselleştirmesi içeren metin mesajlarını test etmek için yapılmış bir API konsolu gibi görünüyordu.

API konsolunu sağlanan “Test İletişim Anahtarı” ile kullanmayı denedik ancak API’yi çalıştıramadık. Biraz araştırma yaptıktan sonra bunun, contactKey parametresinin API konsol sayfasında sağlanan UUID yerine kimliği doğrulanmış hesabımızın UUID’si olması gerektiğinden kaynaklandığını belirledik. Hesabımızın UUID’sini, oturum açtıktan sonra https://riders.uber.com/profile HTML kaynağı aracılığıyla çıkardık.

ContactKey’i Uber hesabımızın UUID’siyle değiştirdikten sonra önizleme uç noktasına API istekleri gönderebildik:

Bu blog yazısında daha önce gösterilen API konsolunun ekran görüntüsü, önizleme uç noktası için örnek bir “Mesaj” içeriyordu:

Söz dizimini araştırıp, kesin hedef-web-kanca alt alan adından bağlantı kurarak yukarıdaki kodun aslında AMPScript olduğunu fark ettik.

Salesforce’un Pazarlama Bulutu, bireysel tüketicilere görüntülenen içeriği kontrol etmek için HTML e-postalarına, metin e-postalarına, açılış sayfalarına ve SMS mesajlarına yerleştirilebilecek bir komut dosyası dili olarak AMPScript’i sağlar. AMPScript, ExactTarget tarafından geliştirildi ve daha sonra 2013 yılında Salesforce tarafından satın alındı.

API konsolunda sağlanan AMPScript örneğini kullanmak başarısız oldu, bu nedenle AMPScript’i gerçekten değerlendirip değerlendiremeyeceğimizi araştırmaya başladık. Kısa süre sonra bir HTTP GET isteği gönderip yanıt içeriğini döndürecek HTTPGet işlevini bulduk:

AMPScript Sorgusunu Çalıştırma:%%=HTTPGet(‘https://ipinfo.io’)=%%

Harika! İsteğe bağlı AMPScript’i değerlendirebiliyoruz! Ancak HTTPGet işlevi aracılığıyla gönderdiğimiz istek, Uber’e ait bir sunucudan kaynaklanmadı; yukarıdaki ekran görüntüsünde görüldüğü gibi aslında AS22606 ExactTarget, Inc.’den kaynaklandı.

Bu hatanın etkisini göstermek amacıyla, sürücü_partners adlı veri uzantısından kullanıcı verilerini çıkardık. Veri uzantıları, AMPScript’in Veri Uzantısı işlevleri aracılığıyla erişilebilen veritabanı tablolarıdır.

LookupRows işleviyle ilgili AMPScript belgelerini okuyarak aşağıdakileri yapacak bir AMPScript oluşturmayı başardık:

  1. Adı Shubs’a eşit olan tüm satırları Driver_partners veri uzantısında arayın.
  2. Sorgunun sonuçlarını bir dizide saklayın.
  3. Dizi üzerinde yineleyin ve değerleri yazdırın.

Son AMPScript:

Bu AMPScript önizleme uç noktasına gönderildiğinde yanıt, Shubs adındaki her kullanıcının UUID’sini, katılma tarihini, e-posta adresini ve adını içeriyordu.

Önizleme uç noktasına HTTP isteği:

Yanıt (UUID’ler ve e-postalar gizlendi):

‘Shubs’ adlı tüm kullanıcılar için Uber’den döndürülen veriler

Yukarıda görüldüğü gibi, Shubs adındaki birçok kullanıcının ayrıntıları döndürüldü (ekran görüntüsünü yalnızca test hesaplarımı gösterecek şekilde düzenledim). Bir saldırgan, kitlelerden veri çıkarmak veya Uber’in verilerindeki belirli kişileri adlarına göre arayarak UUID’lerini ve e-posta adreslerini çıkarmak için AMPScript’i hazırlamış olabilir.

Bu hata 13 Kasım 2017’de bulundu. 15 Kasım’da düzeltildi ve 28 Aralık’ta ödemesi yapıldı.

HackerOne’ın Hack the World etkinliği kapsamında, etkinlik dönemi boyunca “en etkili rapor” olmamız nedeniyle 20.000$ bonusla ödüllendirildik. Bu, bu hatanın toplam ödemesini 23.000 $ yaptı.

Uber ve HackerOne’a teşekkürler! Bu konuyla ilgili olarak Uber’in güvenlik ekibiyle çalışmak hoş bir deneyimdi.

Kuruluşunuz için Assetnote’un Sürekli Güvenlik Platformu demosunu ilginizi çekiyorsa, lütfen buradan talepte bulunun.



Source link