hacktricks/pentesting-web/uuid-insecurities.md

5.6 KiB
Raw Blame History

UUID Güvenlik Açıkları

AWS hackleme konusunda sıfırdan kahramana kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Evrensel Benzersiz Tanımlayıcılar (UUID'ler), bilgisayar sistemlerinde bilgileri benzersiz bir şekilde tanımlamak için kullanılan 128 bitlik numaralardır. UUID'ler, merkezi koordinasyon olmadan benzersiz tanımlayıcıların gerektiği uygulamalarda önemlidir. Veritabanı anahtarları olarak yaygın olarak kullanılır ve belgeler ve oturumlar gibi çeşitli unsurlara atıfta bulunabilirler.

UUID'lerin benzersiz ve tahmin edilmesi zor olacak şekilde tasarlanmıştır. Belirli bir formatta yapılandırılmış olup, 32 onaltılık hane olarak temsil edilen beş gruba ayrılmıştır. UUID'lerin farklı sürümleri vardır, her biri farklı amaçlara hizmet eder:

  • UUID v1, zaman temelli olup, zaman damgası, saat sırası ve düğüm kimliği (MAC adresi) içerir, ancak potansiyel olarak sistem bilgilerini açığa çıkarabilir.
  • UUID v2, v1'e benzer ancak yerel alanlar için değişiklikler içerir (pek yaygın olarak kullanılmaz).
  • UUID v3 ve v5, ad alanı ve isimden gelen hash değerlerini kullanarak UUID'ler oluşturur, v3 MD5'i kullanırken v5 SHA-1'i kullanır.
  • UUID v4, neredeyse tamamen rastgele oluşturulur, yüksek düzeyde anonimlik sağlar ancak hafif bir yinelenme riski taşır.

{% hint style="success" %} UUID'nin sürümü ve alt sürümünün genellikle UUID içinde aynı konumda göründüğüne dikkat edin. Örneğin:
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx

  • M'nin konumu, UUID sürümünü belirtir. Yukarıdaki örnekte, bu UUID v1'dir.
  • N'nin konumu, UUID varyantını belirtir. {% endhint %}

Sandviç Saldırısı

"Sandviç Saldırısı", UUID v1 oluşturmanın web uygulamalarında tahmin edilebilirliğini sömüren belirli bir saldırı türüdür, özellikle şifre sıfırlamalar gibi özelliklerde. UUID v1, zaman, saat sırası ve düğümün MAC adresine dayalı olarak oluşturulur, bu da bir saldırganın bu UUID'lerden bazılarını zaman açısından yakın bir şekilde elde edebilirse nispeten tahmin edilebilir olmasını sağlayabilir.

Örnek

UUID v1'in şifre sıfırlama bağlantıları oluşturmak için kullandığı bir web uygulamasını hayal edin. Bir saldırganın bu durumu kötüye kullanarak yetkisiz erişim elde etmek için aşağıdaki adımları izleyebileceği şöyle:

  1. Başlangıç Ayarları:
  • Saldırganın kontrolü altında iki e-posta hesabı vardır: `saldırgan1@acme.com` ve `saldırgan2@acme.com`.
  • Hedef e-posta hesabı `kurban@acme.com`'dur.
  1. Yürütme:
  • Saldırgan ilk hesabı için (`saldırgan1@acme.com`) bir şifre sıfırlama tetikler ve bir UUID ile bir şifre sıfırlama bağlantısı alır, diyelim ki `99874128-7592-11e9-8201-bb2f15014a14`.
  • Hemen ardından, saldırgan kurbanın hesabı için (`kurban@acme.com`) ve ardından hızlıca ikinci saldırgan tarafından kontrol edilen hesap için (`saldırgan2@acme.com`) bir şifre sıfırlama tetikler.
  • Saldırgan, ikinci hesap için bir UUID ile bir sıfırlama bağlantısı alır, diyelim ki `998796b4-7592-11e9-8201-bb2f15014a14`.
  1. Analiz:
  • Saldırgan şimdi zaman açısından yakın oluşturulan iki UUID'ye sahiptir (`99874128` ve `998796b4`). Zaman temelli UUID'lerin ardışık doğası göz önüne alındığında, kurbanın hesabı için UUID'nin muhtemelen bu iki değer arasında olacağı tahmin edilebilir.
  1. Kaba Kuvvet Saldırısı:
  • Saldırgan, bu iki değer arasında UUID'ler oluşturmak için bir araç kullanır ve her oluşturulan UUID'yi deneyerek şifre sıfırlama bağlantısına erişmeye çalışır (örneğin, `https://www.acme.com/reset/<oluşturulan-UUID>`).
  • Web uygulaması bu tür denemeleri yeterince sınırlamaz veya engellemezse, saldırgan tüm olası UUID'leri hızlıca test edebilir.
  1. Erişim Elde Edildi:
  • Kurbanın şifre sıfırlama bağlantısı için doğru UUID bulunduğunda, saldırgan kurbanın şifresini sıfırlayabilir ve hesabına yetkisiz erişim sağlayabilir.

Araçlar

Referanslar