🧪 3.2.2 – Metody testowania podatności: Cryptographic Failures
🎯 Cel sekcji
Poznać skuteczne techniki testowania podatności związanych z błędami kryptograficznymi – zarówno ręczne, jak i zautomatyzowane.
🧪 Test 1: Brak HTTPS / nieprawidłowe certyfikaty
Narzędzia:
- przeglądarka z DevTools
- Burp Suite / ZAP Proxy
curl
,openssl s_client
Kroki:
- Odwiedź aplikację i sprawdź, czy działa przez
HTTP
. - Użyj
curl
:
curl -v http://example.com/login
- Dla HTTPS:
openssl s_client -connect example.com:443
➡️ Brak certyfikatu lub self-signed cert = potencjalna luka MITM.
🧪 Test 2: JWT – analiza algorytmu i podpisu
Narzędzia:
- jwt.io
- Burp Suite Decoder
- własne skrypty
Kroki:
- Przechwyć JWT (np. z ciasteczka lub nagłówka
Authorization
). - Rozkoduj i sprawdź
alg
. - Jeśli
alg
tonone
lubHS256
, spróbuj wygenerować fałszywy token.
{
"alg": "none",
"typ": "JWT"
}
➡️ Jeśli backend akceptuje taki token – luka krytyczna.
🧪 Test 3: Przechowywanie haseł – analiza bazy
Narzędzia:
- dostęp do bazy (dump / SQLi / audit)
- edytor tekstu
Kroki:
- Sprawdź zawartość kolumny
password
. - Jeśli zawartość wygląda jak
admin123
– hasła są w plaintext.
➡️ Luka wysokiego ryzyka – brak hashowania haseł.
🧪 Test 4: Szyfrowanie lokalne (klient) – inspekcja kodu JS
Narzędzia:
- DevTools / lokalne pliki JS
- obsługa CryptoJS / WebCrypto
Kroki:
- Sprawdź, czy klucz szyfrujący nie jest zakodowany w JS:
const key = "1234567890abcdef"; // 🔥 krytyczny błąd
- Sprawdź, czy IV jest stały:
const iv = "0000000000000000"; // 🔥
➡️ Brak losowości w kryptografii = podatność na ataki deszyfrujące.
🛠️ Testy automatyczne
Narzędzia:
Przykład:
./testssl.sh https://example.com
➡️ Wykrycie niebezpiecznych protokołów (np. TLS 1.0) lub słabych algorytmów.
🧠 Wskazówki
- Weryfikuj, czy hasła są haszowane silnym algorytmem (BCrypt, Argon2).
- Sprawdzaj długość kluczy szyfrowania – minimum 128 bitów (symetryczne), 2048 bitów (RSA).
- Upewnij się, że komunikacja odbywa się tylko przez HTTPS z ważnym certyfikatem.
W kolejnym kroku przeanalizujemy konfigurację aplikacji i serwera (3.2.3).