Testy_Penetracyjne/README.md

106 lines
4.8 KiB
Markdown
Raw Normal View History

2020-06-18 02:57:10 +02:00
# Agata Lenz - Testy Penetracyjne
## Zadanie zaliczeniowe z przedmiotu Wprowadzenie do Testowania
### Opis
Moim zadaniem zaliczeniowym było utworzenie raportu na podstawie przeprowadzonych testów penetracyjnych strony https://google-gruyere.appspot.com/part1.
W tym celu wygenerowałam unikalne id, dlatego testy zostały przeprowadzone na stronie https://google-gruyere.appspot.com/427718249942042260769664292874039511420/.
### Spis treści
* [Lista użytych narzędzi](#lista-narzędzi)
* [Znalezione podatności](#znalezione-podatności)
* [Scenariusze testów](#scenariusze-testów)
* [Możliwe zastosowania](#możliwe-zastosowania)
## Lista użytych narzędzi
Testy zostały przeprowadzone przy użyciu przeglądarki FireFox, dostępnego w niej zestawu narzędzi deweloperskich oraz dodatkowego rozszerzenia Web Developer dla tejże przeglądarki.
## Znalezione podatności
2020-06-18 03:46:49 +02:00
### Manipulacja zapytań http
2020-06-18 02:57:10 +02:00
Wskutek obsługi formularzy przy użyciu metody GET zamiast POST, przekazywane zapytania widoczne są w adresie url, tym samym narażone zostają na ataki, a manipulacja przekazywanymi danymi jest bardzo prosta.
Np. fragment zapytania tworzącego nowe konto użytkownika: https://.../saveprofile?action=new&uid=agata&pw=agata&is_author=True można łatwo zmanipulować na: https://.../saveprofile?action=update&uid=agata&is_admin=True.
2020-06-18 03:46:49 +02:00
### Cross site scripting
2020-06-18 02:57:10 +02:00
Zarówno pola formularzy, jak i upload plików czy nawet adres url są narażone na ataki XSS - bez problemu można dokonać wstrzyknięcia kodu skryptu.
2020-06-18 03:46:49 +02:00
### Nieprawidłowe uprawnienia administratora
2020-06-18 02:57:10 +02:00
Po otwarciu linku https://google-gruyere.appspot.com/427718249942042260769664292874039511420/quitserver następuje zamknięcie serwera - taką możliwość powinien mieć wyłącznie administrator, tymczasem nie trzeba być nawet zalogowanym użytkownikiem, aby do tego doprowadzić.
2020-06-18 03:46:49 +02:00
### Brak ochrony bazy danych
2020-06-18 02:57:10 +02:00
Wyświetlenie bazy danych jest możliwe dzięki: {{_db:pprint}}
## Scenariusze testów
2020-06-18 03:46:49 +02:00
### Nadanie uprawnień administratora zwykłemu użytkownikowi
2020-06-18 02:57:10 +02:00
1. Utwórz nowe konto użytkownika
2. Zmień adres url na: https://google-gruyere.appspot.com/427718249942042260769664292874039511420/saveprofile?action=update&uid=username&is_admin=True, gdzie *username* to Twoja nazwa użytkownika
3. Aplikacja powinna zalogować Cię do Twojego konta
4. Wyloguj się
5. Zaloguj się z powrotem przy pomocy takich samych danych, jak przy tworzeniu nowego konta
2020-06-18 03:46:49 +02:00
6. W prawym górnym rogu pojawi się zakładka *Manage this serwer*, dostępna tylko dla użytkowników z uprawnieniami administratora; nowe uprawnienia są także widoczne w ciasteczku:
2020-06-18 02:57:10 +02:00
2020-06-18 02:59:32 +02:00
![Widok administratora strony](images/g1.png)
2020-06-18 02:57:10 +02:00
2020-06-18 02:56:47 +02:00
2020-06-18 03:46:49 +02:00
### Atak XSS poprzez formularz
1. Zaloguj się na wybrane konto użytkownika
2. Wybierz z górnego paska opcję *New Snippet*
3. W treści formularza wprowadź następujący tekst: *<a href="javascript:alert(document.cookie)" >My Snippet 1</a>*
4. Kliknij *Submit*
5. Wyloguj się z konta i zaloguj na konto innego użytkownika
6. Spróbuj otworzyć utworzony wcześniej snippet
7. Wstrzyknięty javascript sprawi, że zostanie wyświetlone ciasteczko z danymi logowania obecnego użytkownika:
![My Snippet 1](images/g2.png)
### Atak XSS poprzez upload pliku
1. Zaloguj się na konto użytkownika
2. Wybierz z górnego paska opcję *Upload*
3. Załaduj plik .html o zawartości:
```
<html>
<script>
alert(document.cookie);
</script>
</html>
```
(plik do pobrania z repozytorium pod nazwą xss2.html)
4. Kliknij *Upload* i przejdź do linku, który zostanie wyświetlony. Skrypt zostanie zrealizowany:
![Upload](images/g3.png)
### Atak XSS poprzez adres url
1. Zaloguj się na konto użytkownika
2. Wpisz adres url strony: https://google-gruyere.appspot.com/427718249942042260769664292874039511420/%3Cscript%3Ealert(document.cookie)%3C/script%3E
3. Ponownie skrypt zostanie zrealizowany:
![Upload](images/g4.png)
### Zamknięcie serwera
1. Wpisz adres url strony: https://google-gruyere.appspot.com/427718249942042260769664292874039511420/quitserver
2. Nastąpi zamknięcie serwera, a jego ponowne uruchomienie wymagać będzie czasu:
![Upload](images/g5.png)
### Wyświetlenie zawartości bazy danych
1. Zaloguj się na konto użytkownika
2. Wybierz zakładkę *Profile*
3. Jako treść formularza wprowadź: *{{_db:pprint}}*
4. Wybierz *Update*
5. Przejdź do *Private Snippet Show* i wyświetl swój prywatny snippet
6. Wyświetlone zostaną wrażliwe dane użytkowników:
![Upload](images/g6.png)
## Możliwe zastosowania znalezionych podatności
## Manipulacja zapytań http
Poprzez manipulację zapytać http, którą można przeprowadzić choćby przy pomocy edycji adresu url, można nadać sobie (lub dowolnemu użytkownikowi znając jedynie jego nazwę) uprawnienia administratora. Daje to możliwości resetowania oraz zamykania serwera, ale także edycji dowolnych danych