Lekcja 17: Wyjaśnienie, część druga
Podstawowe elementy zadania
Głównym zadaniem w tym przypadku było:
- podglądnięcie danych innego użytkownika (formatka Dane użytkownika),
- eskalacja uprawnień,
Kluczem do rozwiązania tego zadania jest rozkodowanie i odpowiednia modyfikacja danych przechowywanych w sesji. Po uwierzytelnieniu użytkownika dane przechowywane w sesji zawierają:
- login użytkownika,
- jego uprawnienia (poprzez określenie ról, do których należy użytkownik),
- identyfikator użytkownika,
Sposób odkodowania danych sesji przedstawiony jest w pierwszej części wyjaśnienia tego zadania.
Podglądnięcie danych użytkownika
Podglądnięcie danych innego użytkownika jest możliwe poprzez modyfikację identyfikatora użytkownika w sesji. Wartość ta jest wykorzystywana następnie przy pobieraniu informacji o użytkowniku, które są wyświetlane w akcji user.
Eskalacja uprawnień
Eskalacja uprawnień jest możliwa poprzez modyfikację informacji o uprawnieniach przechowywanej w danych sesji. Użytkownik standardowy ma ograniczone uprawnienia, nie może przeglądać danych i nie ma dostępu do funkcji administracyjnych. Modyfikacja parametru określającego uprawnienia użytkownika pozwala na dostęp do funkcji, do których normalnie nie ma dostępu.
Elementy dodatkowe - wskazówki
Dodatkowymi elementami wyzwania było:
- XSS,
- brak kontroli dostępu do funkcji (tu - formatek),
W przypadku XSS należy sprawdzić jakie dane pochodzące od użytkownika (w tym zakodowane w danych sesji) są/mogą być wypisywane przez aplikację. Czy wszystkie dane są prawidłowo kodowane na wyjściu?
W przypadku braku kontroli dostępu do funkcji należy sprawdzić jak wygląda wywołanie poszczególnych akcji (akcja jest określana przez wartość parametru action). Następnie należy zweryfikować co stanie się w przypadku, gdy użytkownik wyśle wartość parametru action określającą akcję (funkcję), do której normalnie nie ma dostępu.
Dane uwierzytelniające użytkowników należących do każdej z wykorzystywanych w aplikacji grup/ról:
guest CicKiCinMirkakew user JugopAwIcvubUtyo admin Jiesiphoghhocvoc