Lab 3 TBO - Monika Gardyjas #55
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Laboratorium 3
Monika Gardyjas
Nr albumu: 319038
Zadanie 1 - Przygotowanie rozszerzonego zestawu testów jednostkowych
Zadanie zrealizowałam na aplikacji Java.
W pliku StudentTests.java umieściłam testy jednostkowe pokrywające wskazane przypadki. Obejmują one m.in. próby ataku SQL i JavaScript Injection, ale i również zwykłe błędy w danych wejściowych, jak niepoprawny format e-mail lub ekstremalnie długi tekst.
W pliku Dockerfile umieściłam kod odpowiadający za uruchomienie tych testów automatycznie przy próbie zbudowania aplikacji i przerwanie jej w razie wyników negatywnych.
Wynik działania wprowadzonych zmian przy próbie uruchomienia aplikacji:
Zadanie 2 - JWT — wykorzystanie podatności
Zgodnie z poleceniem uruchomiłam aplikację i zaimportowałam dostarczoną kolekcję do Postmana. W wyniku requesta 'none-ontain-token' otrzymałam odpowiedź:
Po przeklejeniu tego tokena do requesta 'none-send-token' otrzymałam w wyniku dane użytkownika Bob:
To dało mi dostęp do formatu tokenu i mogłam zacząć nim manipulować. Aby odnależć dane Administratora, musiałam odpowiednio go przerobić: podmieniłam typ algorytmu na "none", a nazwę konta na "Administrator", zakodowane w Base64 za pomocą enkodera online. Po usunięciu ostatniej sekcji, czyli podpisu, uzyskałam token:
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJhY2NvdW50IjoiYWRtaW5pc3RyYXRvciIsInJvbGUiOiJVc2VyIiwiaWF0IjoxNzY0NTQ5ODA3LCJhdWQiOiJodHRwczovLzEyNy4wLjAuMS9qd3Qvbm9uZSJ9.Przekazanie go w requescie skutkowało udanym atakiem:
Zadanie 2 - JWT — realizacja poprawki
Naprawienie tej podatności wymagało prostej zmiany jednej z linii w pliku app.json, czyli usunięcia "none" z listy algorytmów akceptowanych do uwierzytelniania:
JWT.verify(jwt_token, secret_key, { algorithms: ['HS256'], complete: true, audience: 'https://127.0.0.1/jwt/none' }, (err, decoded_token) => {Po ponownym uruchomieniu aplikacji, poprzedni atak nie jest już możliwy: