tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

ECB

(ECB) Elektronik Kod Kitabı - her açık metin bloğunu şifreli metin bloğu ile değiştiren simetrik şifreleme şemasıdır. En basit şifreleme şemasını temsil eder. Ana fikir, açık metni N bitlik bloklara (girdi verisinin blok boyutuna, şifreleme algoritmasına bağlıdır) bölmek ve ardından her açık metin bloğunu yalnızca bir anahtar kullanarak şifrelemektir (şifre çözmektir).

ECB kullanmanın birçok güvenlik etkisi vardır:

  • Şifreli mesajdan bloklar çıkarılabilir
  • Şifreli mesajdan bloklar yer değiştirebilir

Açığın Tespiti

Bir uygulamaya birkaç kez giriş yaptığınızı ve her zaman aynı çerezi aldığınızı hayal edin. Bu, uygulamanın çerezinin <kullanıcı_adı>|<şifre> olmasındandır.
Sonra, her ikisi de aynı uzun şifreye ve neredeyse aynı kullanıcı adına sahip iki yeni kullanıcı oluşturursunuz.
Her iki kullanıcının bilgilerinin aynı olduğu 8B'lik blokların eşit olduğunu keşfedersiniz. Sonra, bunun ECB'nin kullanılıyor olabileceği nedeniyle olabileceğini hayal edersiniz.

Aşağıdaki örnekte olduğu gibi. Bu 2 çözülmüş çerezin nasıl birkaç kez \x23U\xE45K\xCB\x21\xC8 bloğunu içerdiğine dikkat edin.

\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9

\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9

Bu, bu çerezlerin kullanıcı adı ve şifresinin birkaç kez "a" harfini içermesinden kaynaklanmaktadır (örneğin). Farklı olan bloklar, en az 1 farklı karakter içeren bloklardır (belki ayırıcı "|" veya kullanıcı adındaki bazı gerekli farklılık).

Şimdi, saldırganın formatın <username><delimiter><password> mi yoksa <password><delimiter><username> mi olduğunu keşfetmesi gerekiyor. Bunu yapmak için, sadece benzer ve uzun kullanıcı adları ve şifreler ile birkaç kullanıcı adı oluşturabilir ve formatı ve ayırıcının uzunluğunu bulana kadar devam edebilir:

Kullanıcı adı uzunluğu:Şifre uzunluğu:Kullanıcı adı+Şifre uzunluğu:Çerezin uzunluğu (çözüldükten sonra):
2248
3368
3478
44816
771416

Açığın Sömürülmesi

Tüm blokların kaldırılması

Çerezin formatını bilerek (<username>|<password>), admin kullanıcı adını taklit etmek için aaaaaaaaadmin adında yeni bir kullanıcı oluşturun ve çerezi alın ve çözün:

\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4

Önceden yalnızca a içeren kullanıcı adıyla oluşturulan \x23U\xE45K\xCB\x21\xC8 desenini görebiliriz.
Ardından, 8B'lik ilk bloğu kaldırabilir ve admin kullanıcı adı için geçerli bir çerez elde edersiniz:

\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4

Blokları Taşıma

Birçok veritabanında WHERE username='admin'; veya WHERE username='admin '; aramak aynı şeydir (Ekstra boşluklara dikkat edin)

Bu nedenle, admin kullanıcısını taklit etmenin başka bir yolu:

  • len(<username>) + len(<delimiter) % len(block) olan bir kullanıcı adı oluşturmak. 8B blok boyutuyla, username adında bir kullanıcı adı oluşturabilirsiniz; ayırıcı olarak | kullanıldığında <username><delimiter> parçası 2 adet 8B blok oluşturacaktır.
  • Ardından, taklit etmek istediğimiz kullanıcı adını ve boşlukları içeren tam sayıda blok dolduracak bir şifre oluşturmak, örneğin: admin

Bu kullanıcının çerezi 3 bloktan oluşacak: ilk 2 blok kullanıcı adı + ayırıcı blokları ve üçüncü blok şifre (kullanıcı adını taklit eden): username |admin

Sonra, sadece ilk bloğu son blokla değiştirin ve admin kullanıcısını taklit etmiş olacaksınız: admin |username

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin