Lab. 3. - Jaworski Jarosław #58
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.
Lab 3 TBO
Zadanie 1
Ćwiczenie rozpoczęto od opracowania serii testów jednostkowych dla wybranej klasy. W tym wypadku była to klasa Book (technologia wybrana - Python). W tym celu wykorzystano bibliotekę pytest oraz dodano odpowiednie informacje do pliku Dockerfile i requirements.txt. Następnie testy wyegzekwowano z efektem widocznym na Zdj. 1.
Zadanie 2
w kolejnym etapie próbowano przeprowadzić atak JWT, aby dostać przyznanie praw administratora dla zwykłego użytkownika. W tym celu pobrano token "Boba" przykładowego użytkownika. Zdekodowana wartość tokena Boba wyglądała następująco (odebrana po wysłaniu zapytania):
Aby móc uzyskać prawa administatora należy podmienic odpowiednie elementy tokena aby pominąć szyfrowanie i ustawić rolę na admina. Zmiany wprowadzono w headerze tak jak widoczne jest to poniżej:
a następnie zakodować go w formacie base64 aby móc podać go w zapytaniu przez token JWT. Ostateczny token wyglądał następująco:
W wyniku wysłania zapytania z powyższym tokenem otrzymano prawa administratora - przeprowadzono atak, co pokazano na Zdj. 2.

Zdj. 2. Przeprowadzony atak JWT
Zadanie 3
W ostatnim ćwiczeniu przystąpiono do wprowadzenia poprawki w app.json aby uniknąć ataków JWT typu none. Zmiana polegała na usunięciu opcji "none" przy przyjmowanych formach szyfrowania komunikacji. Następnie ponownie zbudowano kontener i sprawdzono możliwość przesyłu szkodliwego JWT. Tym razem atak nie powiódł się jak widać na Zdj. 3.