Skip to content

Klasik Saldırılar

crypto difficulty: orta

Klasik ataklar modern “AES-256 kırıldı” iddiası değil; yanlış mod, ayırt edilebilir hata ve öngörülebilir rastgeleliktir. Pentestte en sık ECB izi, CBC padding oracle ve JWT algoritma karışıklığı görülür.

- Ciphertext örnekleri (mümkünse kontrollü plaintext ile)
- Hata mesajlarını ayırt edebilen istemci (Burp Repeater)
- JWT için: /web/jwt-attacks/ ve JWT Inspector
  1. Encoding soy — base64/hex katmanını aç.

  2. Blok boyutu ve tekrar — 16 bayt hizalı tekrarlar ECB ipucu.

  3. Oracle var mı — padding / MAC / JSON parse hataları farklı mı?

  4. Token/RNG — tahmin edilebilir ID, zaman tabanlı secret.

  5. JWT — alg, jku/kid; detay için web bölümü.

Aynı anahtar + aynı plaintext bloğu → aynı ciphertext bloğu. Görüntü veya yapısal veri (benzer JSON alanları) sızdırır.

İşaretler:
- 16 (veya 8) baytlık tekrarlayan ciphertext blokları
- “ECB penguin” tarzı görsel sızıntı
- Sabit IV yokluğu + blok cipher ama desensiz
Terminal window
# hex ciphertext’te tekrarlayan 32 hex char (16 bayt) blok ara
fold -w 32 cipher.hex | sort | uniq -c | sort -nr | head
Terminal window
xxd -p -c 16 cipher.bin | sort | uniq -c | sort -nr | head

CBC + PKCS#n padding kullanıldığında sunucu “padding hatalı” ile “MAC/JSON hatalı”yı ayırt ederse (veya zamanlama farklıysa) saldırgan bayt bayt plaintext recover edebilir. Araçlar: padbuster, özel scriptler; Burp’ta hata yüzeyini önce doğrula.

1. Ciphertext’i bloklara böl (IV || C1 || C2 || …)
2. Son blokta bayt manipüle et
3. “padding ok / değil” cevabını oku
4. Ara değer → plaintext
Terminal window
# kavramsal: padbuster örneği (hedef URL ve cookie adına göre)
padbuster 'https://hedef.lab/profile' 'COOKIEHEX' 16 -cookies 'auth=COOKIEHEX'

Gerçek istek formatı uygulamaya göre değişir; önce manuel oracle kanıtı şart.

- srand(time(NULL)) / Math.random() ile session ID
- 32-bit seed brute-force
- “random” dosya adı veya reset token = timestamp
Terminal window
# örnek: kısa hex token’ları wordlist ile dene (lab)
hashcat -a 3 -m 0 hashes.txt ?h?h?h?h?h?h?h?h

Uygulamada token’ı yeniden üretmek için seed kaynağını (log zamanı, pid) ara.

JWT saldırılarının tamamı JWT Saldırıları sayfasındadır. Crypto açısından kritik fikir:

RS256 (asimetrik) → alg: HS256 + “secret” = public key
Sunucu HMAC’i public key ile doğrularsa sahte token üretilir
Ayrıca: alg=none, zayıf HS secret, jku/kid injection
Terminal window
# token parçaları (base64url)
python3 -c "import sys; print(sys.argv[1].split('.')[0])" 'eyJhbGciOiJSUzI1NiJ9.e30.sig'

Detaylı PoC ve CommandGenerator’lar için web JWT sayfasını kullan.

openssl · ECB şüpheli blob encode

embedded tool
Generated command
openssl enc -aes-128-ecb -K 00112233445566778899aabbccddeeff -nosalt -in plain.bin -out cipher.bin

Laboratuvar tekrarı için. Üretim anahtarı kullanma; ECB’yi kasıtlı göstermek içindir.

Terminal window
openssl enc -aes-128-ecb -K 00112233445566778899aabbccddeeff -nosalt -in plain.bin -out cipher.bin
Terminal window
xxd -p -c 16 cipher.bin
API cookie → CBC + farklı hata kodları
→ padding oracle → session plaintext
JWT RS256 + alg esnek
→ HS256 + pubkey → admin token
→ bkz. /web/jwt-attacks/