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.
Ön koşullar
Section titled “Ön koşullar”- 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İş akışı
Section titled “İş akışı”-
Encoding soy — base64/hex katmanını aç.
-
Blok boyutu ve tekrar — 16 bayt hizalı tekrarlar ECB ipucu.
-
Oracle var mı — padding / MAC / JSON parse hataları farklı mı?
-
Token/RNG — tahmin edilebilir ID, zaman tabanlı secret.
-
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# hex ciphertext’te tekrarlayan 32 hex char (16 bayt) blok arafold -w 32 cipher.hex | sort | uniq -c | sort -nr | headxxd -p -c 16 cipher.bin | sort | uniq -c | sort -nr | headPadding oracle (kavram)
Section titled “Padding oracle (kavram)”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 et3. “padding ok / değil” cevabını oku4. Ara değer → plaintext# 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.
Zayıf RNG
Section titled “Zayıf RNG”- srand(time(NULL)) / Math.random() ile session ID- 32-bit seed brute-force- “random” dosya adı veya reset token = timestamp# örnek: kısa hex token’ları wordlist ile dene (lab)hashcat -a 3 -m 0 hashes.txt ?h?h?h?h?h?h?h?hUygulamada token’ı yeniden üretmek için seed kaynağını (log zamanı, pid) ara.
JWT / alg confusion — köprü
Section titled “JWT / alg confusion — köprü”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 keySunucu HMAC’i public key ile doğrularsa sahte token üretilirAyrıca: alg=none, zayıf HS secret, jku/kid injection# 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 toolopenssl enc -aes-128-ecb -K 00112233445566778899aabbccddeeff -nosalt -in plain.bin -out cipher.binLaboratuvar tekrarı için. Üretim anahtarı kullanma; ECB’yi kasıtlı göstermek içindir.
openssl · ECB laboratuvar
Section titled “openssl · ECB laboratuvar”openssl enc -aes-128-ecb -K 00112233445566778899aabbccddeeff -nosalt -in plain.bin -out cipher.binxxd -p -c 16 cipher.binZincir
Section titled “Zincir”API cookie → CBC + farklı hata kodları → padding oracle → session plaintextJWT RS256 + alg esnek → HS256 + pubkey → admin token → bkz. /web/jwt-attacks/