Testy penetracyjne Pythona - XSS Web Attack
Ataki typu cross-site scripting to rodzaj iniekcji, który odnosi się również do ataku polegającego na wstrzykiwaniu kodu po stronie klienta. W tym przypadku złośliwe kody są wstrzykiwane do legalnej witryny internetowej. Koncepcja Same Origin Policy (SOP) jest bardzo przydatna w zrozumieniu koncepcji Cross-site scripting. SOP to najważniejsza zasada bezpieczeństwa w każdej przeglądarce internetowej. Zabrania witrynom pobierania treści ze stron o innym pochodzeniu. Na przykład strona internetowa www.tutorialspoint.com/index.html może uzyskać dostęp do zawartości zwww.tutorialspoint.com/contact.htmlale www.virus.com/index.html nie może uzyskać dostępu do treści zwww.tutorialspoint.com/contact.html. W ten sposób możemy powiedzieć, że cross-site scripting jest sposobem na ominięcie polityki bezpieczeństwa SOP.
Rodzaje ataku XSS
W tej sekcji zapoznajmy się z różnymi typami ataków XSS. Atak można podzielić na następujące główne kategorie -
- Trwałe lub przechowywane XSS
- Nietrwały lub odbity XSS
Trwałe lub przechowywane XSS
W tego rodzaju ataku XSS osoba atakująca wstrzykuje skrypt, zwany payloadem, który jest trwale przechowywany w docelowej aplikacji internetowej, na przykład w bazie danych. Z tego powodu nazywa się to trwałym atakiem XSS. W rzeczywistości jest to najbardziej szkodliwy rodzaj ataku XSS. Na przykład złośliwy kod jest wstawiany przez atakującego w polu komentarza na blogu lub w poście na forum.
Nietrwały lub odbity XSS
Jest to najczęstszy rodzaj ataku XSS, w którym ładunek atakującego musi być częścią żądania, który jest wysyłany do serwera WWW i odbijany w taki sposób, że odpowiedź HTTP zawiera ładunek z żądania HTTP. Jest to nietrwały atak, ponieważ atakujący musi dostarczyć ładunek każdej ofierze. Najczęstszym przykładem tego typu ataków XSS są wiadomości phishingowe, za pomocą których atakujący nakłania ofiarę do wysłania żądania do serwera zawierającego ładunki XSS i kończy się wykonaniem skryptu, który zostaje odzwierciedlony i wykonany w przeglądarce .
Przykład
Podobnie jak SQLi, ataki internetowe XSS mogą być realizowane poprzez manipulowanie danymi wejściowymi do aplikacji. W poniższych przykładach modyfikujemy wektory ataku SQLi, wykonane w poprzedniej sekcji, w celu przetestowania ataku internetowego XSS. Podany poniżej skrypt Pythona pomaga analizować atak XSS za pomocąmechanize -
Na początek zaimportujmy plik mechanize moduł.
import mechanize
Teraz podaj nazwę adresu URL do uzyskania odpowiedzi po przesłaniu formularza.
url = input("Enter the full url")
attack_no = 1
Musimy odczytać wektory ataku z pliku.
With open (‘vectors_XSS.txt’) as x:
Teraz wyślemy zapytanie z każdym wektorem araku -
For line in x:
browser.open(url)
browser.select_form(nr = 0)
browser[“id”] = line
res = browser.submit()
content = res.read()
Poniższy wiersz kodu sprawdzi wydrukowany wektor ataku.
if content.find(line) > 0:
print(“Possible XSS”)
Poniższy wiersz kodu zapisze odpowiedź do pliku wyjściowego.
output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1
XSS występuje, gdy dane wejściowe użytkownika są drukowane w odpowiedzi bez żadnej weryfikacji. Dlatego, aby sprawdzić możliwość ataku XSS, możemy sprawdzić tekst odpowiedzi dla dostarczonego przez nas wektora ataku. Jeśli wektor ataku jest obecny w odpowiedzi bez jakiejkolwiek ucieczki lub walidacji, istnieje duże prawdopodobieństwo ataku XSS.