Praktyczne ćwiczenie: Testowanie i mitigacja
🎯 Cel ćwiczenia
W tym ćwiczeniu:
- Sprawdzimy odporność aplikacji na ataki brute-force.
- Przeanalizujemy bezpieczeństwo tokenów JWT.
- Przetestujemy zachowanie aplikacji przy logowaniu i po wylogowaniu.
🧪 Scenariusz testowy
Aplikacja: Panel logowania użytkownika (REST API)
Endpoint:
POST /api/login
GET /api/profile
🧪 Krok 1: Próba brute-force logowania
Użyj Burp Intruder lub Hydra:
hydra -L users.txt -P passwords.txt myapp.com http-post-form "/api/login:username=^USER^&password=^PASS^:F=invalid"
➡️ Sprawdź, czy aplikacja blokuje IP, opóźnia odpowiedzi lub wyświetla różne komunikaty.
🧪 Krok 2: Analiza JWT
- Zaloguj się i przechwyć token JWT.
- Przeanalizuj go na https://jwt.io lub za pomocą
jwt_tool
.
jwt_tool eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
- Sprawdź:
- Algorytm podpisu (
alg
) - Czy
exp
,iat
,sub
mają sensowne wartości - Czy można token zmanipulować (np.
alg=none
, zmianasub
)
- Algorytm podpisu (
🧪 Krok 3: Sesja po wylogowaniu
- Wyloguj się z aplikacji (np.
POST /api/logout
). - Spróbuj ponownie użyć tokenu do żądania
GET /api/profile
.
➡️ Czy dostęp jest nadal możliwy? Jeśli tak – sesja nie jest unieważniana.
🛠️ Mitigacja – przykładowe działania
- Wprowadzenie limitu prób logowania i mechanizmu CAPTCHA.
- Przechowywanie JWT w
httpOnly
cookie. - Rotacja tokenu po zalogowaniu.
- Wymuszenie wygasania sesji po nieaktywności.
🧠 Dodatkowe scenariusze
- Test konta
admin
z domyślnym hasłem. - Próba logowania na konto z nieaktywowanym e-mailem.
- Testowanie resetu hasła z użyciem starego linku.
W kolejnym podrozdziale: Wykonane zadania i dokumentacja testu