# UUID Güvenlik Açıkları {{#include ../banners/hacktricks-training.md}} ## Temel Bilgiler Evrensel Benzersiz Tanımlayıcılar (UUID'ler), bilgisayar sistemlerinde bilgileri benzersiz bir şekilde tanımlamak için kullanılan **128 bitlik sayılardır**. UUID'ler, merkezi bir koordinasyona ihtiyaç duymadan benzersiz tanımlayıcıların gerekli olduğu uygulamalarda önemlidir. Genellikle veritabanı anahtarları olarak kullanılır ve belgeler ile oturumlar gibi çeşitli öğeleri referans alabilirler. UUID'ler, benzersiz olacak şekilde ve **tahmin edilmesi zor** olacak şekilde tasarlanmıştır. Belirli bir formatta yapılandırılmıştır ve 32 onaltılık basamaktan oluşan beş gruba ayrılmıştır. Farklı amaçlar için hizmet eden farklı UUID sürümleri vardır: - **UUID v1**, zaman damgası, saat sırası ve düğüm kimliği (MAC adresi) içeren zaman tabanlıdır, ancak sistem bilgilerini potansiyel olarak açığa çıkarabilir. - **UUID v2**, v1'e benzer ancak yerel alanlar için değişiklikler içerir (yaygın olarak kullanılmaz). - **UUID v3 ve v5**, ad alanı ve isimden hash değerleri kullanarak UUID'ler oluşturur; v3 MD5 kullanırken v5 SHA-1 kullanır. - **UUID v4**, neredeyse tamamen rastgele üretilir, yüksek bir anonimlik seviyesi sağlar ancak kopya riski taşır. > [!TIP] > UUID'nin sürümü ve alt sürümü genellikle UUID içinde aynı konumda görünür. Örneğin:\ > 12345678 - abcd - 1a56 - a539 - 103755193864\ > xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx > > - **M'nin konumu**, UUID'nin **sürümünü** gösterir. Yukarıdaki örnekte, UUID v**1**'dir. > - **N'nin konumu**, UUID varyantını gösterir. ## Sandviç saldırısı "Sandviç Saldırısı", **web uygulamalarında UUID v1 üretiminin tahmin edilebilirliğini istismar eden** belirli bir saldırı türüdür, özellikle şifre sıfırlama gibi özelliklerde. UUID v1, zaman, saat sırası ve düğümün MAC adresine dayalı olarak üretilir; bu, bir saldırganın zaman açısından yakın üretilen bazı UUID'leri elde edebilmesi durumunda tahmin edilebilir hale getirebilir. ### Örnek UUID v1'i şifre sıfırlama bağlantıları oluşturmak için kullanan bir web uygulamasını hayal edin. İşte bir saldırganın bunu yetkisiz erişim elde etmek için nasıl istismar edebileceği: 1. **Başlangıç Ayarı**: - Saldırganın iki e-posta hesabı üzerinde kontrolü vardır: \`attacker1@acme.com\` ve \`attacker2@acme.com\`. - Hedefin e-posta hesabı \`victim@acme.com\`dur. 2. **Uygulama**: - Saldırgan, ilk hesabı için bir şifre sıfırlama işlemi başlatır (\`attacker1@acme.com\`) ve bir UUID ile ş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 bir şifre sıfırlama işlemi başlatır (\`victim@acme.com\`) ve ardından hızlıca ikinci saldırgan kontrolündeki hesap için (\`attacker2@acme.com\`) başlatır. - Saldırgan, ikinci hesap için bir UUID ile sıfırlama bağlantısı alır, diyelim ki \`998796b4-7592-11e9-8201-bb2f15014a14\`. 3. **Analiz**: - Saldırgan artık zaman açısından yakın üretilen iki UUID'ye sahiptir (\`99874128\` ve \`998796b4\`). Zaman tabanlı UUID'lerin ardışık doğası göz önüne alındığında, kurbanın hesabı için UUID'nin muhtemelen bu iki değerin arasında olacağı tahmin edilebilir. 4. **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 üretilen UUID'yi şifre sıfırlama bağlantısına erişmeye çalışarak test eder (örneğin, \`https://www.acme.com/reset/\\`). - Web uygulaması bu tür denemeleri yeterince sınırlamaz veya engellemezse, saldırgan aralıktaki tüm olası UUID'leri hızlıca test edebilir. 5. **Erişim Sağlandı:** - Kurbanın şifre sıfırlama bağlantısı için doğru UUID keşfedildiğinde, saldırgan kurbanın şifresini sıfırlayabilir ve hesabına yetkisiz erişim elde edebilir. ### Araçlar - Sandviç saldırısını otomatik olarak gerçekleştirmek için aracı kullanabilirsiniz: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich) - Bu tür UUID'leri Burp Suite'te [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248) uzantısıyla tespit edebilirsiniz. ## Referanslar - [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/) {{#include ../banners/hacktricks-training.md}}