html injection tutorial
Dogłębne spojrzenie na HTML Injection:
Aby lepiej zrozumieć HTML Injection, najpierw powinniśmy wiedzieć, czym jest HTML.
HTML to język znaczników, w którym wszystkie elementy witryny są zapisane w tagach. Jest używany głównie do tworzenia stron internetowych. Strony internetowe są wysyłane do przeglądarki w postaci dokumentów HTML. Następnie te dokumenty HTML są konwertowane na normalne strony internetowe i wyświetlane użytkownikom końcowym.
Ten samouczek zawiera pełny przegląd HTML Injection, jego typów i środków zapobiegawczych, wraz z praktycznymi przykładami w prostych słowach, ułatwiających zrozumienie koncepcji.
Czego się nauczysz:
- Co to jest wtrysk HTML?
- Typy wtrysku HTML
- Jak odbywa się wstrzykiwanie HTML?
- Jak przetestować pod kątem wtrysku HTML?
- Jak zapobiec iniekcji HTML?
- Porównanie z innymi atakami
- Wniosek
- rekomendowane lektury
Co to jest wtrysk HTML?
Istotą tego typu ataku typu injection jest wstrzyknięcie kodu HTML przez podatne na ataki części witryny. Złośliwy użytkownik wysyła kod HTML przez dowolne podatne pole w celu zmiany projektu witryny internetowej lub wszelkich informacji wyświetlanych użytkownikowi.
W rezultacie użytkownik może zobaczyć dane wysłane przez szkodliwego użytkownika. Dlatego generalnie HTML Injection to po prostu wstrzyknięcie kodu języka znaczników do dokumentu na stronie.
Dane wysyłane podczas tego typu ataku iniekcyjnego mogą być bardzo różne. Może to być kilka tagów HTML, które będą po prostu wyświetlać przesłane informacje. Może to być również cały fałszywy formularz lub strona. Kiedy dochodzi do tego ataku, przeglądarka zwykle interpretuje dane złośliwego użytkownika jako prawidłowe i wyświetla je.
Zmiana wyglądu strony internetowej to nie jedyne ryzyko, jakie niesie ze sobą tego typu atak. Jest to dość podobne do ataku XSS, w którym złośliwy użytkownik kradnie tożsamość innej osoby. Dlatego kradzież tożsamości innej osoby może również nastąpić podczas tego ataku.
Typy wtrysku HTML
Ten atak nie wydaje się być bardzo trudny do zrozumienia lub wykonania, ponieważ HTML jest uważany za dość prosty język. Istnieją jednak różne sposoby wykonania tego typu ataku. Możemy też wyróżnić różne rodzaje tego zastrzyku.
Po pierwsze, różne typy można sortować według zagrożeń, jakie ze sobą niosą.
Jak wspomniano, ten atak iniekcyjny można wykonać w dwóch różnych celach:
- Aby zmienić wygląd wyświetlanego serwisu WWW.
- Aby ukraść tożsamość innej osoby.
Ten atak polegający na wstrzyknięciu można również przeprowadzić za pośrednictwem różnych części witryny, tj. Pól wprowadzania danych i linku do witryny.
Jednak główne typy to:
- Przechowywany wtrysk HTML
- Reflected HTML Injection
# 1) Przechowywane wstrzyknięcia HTML:
Główna różnica między tymi dwoma typami iniekcji polega na tym, że atak z wykorzystaniem iniekcji przechowywanej ma miejsce, gdy złośliwy kod HTML jest zapisywany na serwerze WWW i jest wykonywany za każdym razem, gdy użytkownik wywoła odpowiednią funkcję.
Jednak w przypadku ataku metodą odbitego wstrzyknięcia złośliwy kod HTML nie jest trwale przechowywany na serwerze internetowym. Wstrzyknięcie odbite występuje, gdy witryna internetowa natychmiast reaguje na złośliwe dane wejściowe.
# 2) Odbity wtrysk HTML:
Można to ponownie podzielić na więcej typów:
- Odbity GET
- Odbity POST
- Odzwierciedlony adres URL
Atak Reflected Injection można przeprowadzić różnie w zależności od metod HTTP tj. GET i POST. Przypominam, że metodą POST przesyłane są dane, a metodą GET żądane.
Aby dowiedzieć się, jaka metoda jest używana do poszczególnych elementów serwisu, możemy sprawdzić źródło strony.
Na przykład , tester może sprawdzić kod źródłowy formularza logowania i dowiedzieć się, jaka metoda jest do tego używana. Następnie można odpowiednio dobrać odpowiednią metodę wtrysku HTML.
Odbity wtrysk GET występuje, gdy nasze dane wejściowe są wyświetlane (odzwierciedlane) na stronie internetowej. Załóżmy, że mamy prostą stronę z formularzem wyszukiwania, która jest podatna na ten atak. Następnie, jeśli wpiszemy jakikolwiek kod HTML, pojawi się on na naszej stronie i jednocześnie zostanie wstrzyknięty do dokumentu HTML.
Na przykład wpisujemy prosty tekst z tagami HTML:
Reflected POST HTML Injection jest trochę trudniejsze. Występuje, gdy zamiast poprawnych parametrów metody POST wysyłany jest złośliwy kod HTML.
jak korzystać z plików .jar
Na przykład , mamy formularz logowania, który jest podatny na atak HTML. Dane wpisane w formularzu logowania wysyłane są metodą POST. Następnie, jeśli zamiast poprawnych parametrów wpiszemy dowolny kod HTML, zostanie on przesłany metodą POST i wyświetlony na stronie.
Aby przeprowadzić atak HTML Reflected POST, zaleca się użycie specjalnej wtyczki przeglądarki, która sfałszuje przesyłane dane. Jedną z nich jest wtyczka do Mozilla Firefox „Tamper Data”. Wtyczka przejmuje przesłane dane i umożliwia użytkownikowi ich zmianę. Następnie zmienione dane są wysyłane i wyświetlane na stronie.
Na przykład, jeśli użyjemy takiej wtyczki, wyślemy ten sam kod HTML lub kod formularza wyszukiwania, jeśli chcesz przetestować coś bardziej skomplikowanego Wpisz tekst do wyszukania
Jeśli wyświetli się zapisywany gdzieś kod HTML, to tester może być pewien, że ten atak iniekcyjny jest możliwy. Wtedy można wypróbować bardziej skomplikowany kod - dla Przykład , aby wyświetlić fałszywy formularz logowania.
Innym rozwiązaniem jest skaner HTML Injection. Automatyczne skanowanie pod kątem tego ataku może zaoszczędzić sporo czasu. Informuję, że narzędzi do testowania HTML Injection nie ma zbyt wiele w porównaniu z innymi atakami.
Jednak jednym możliwym rozwiązaniem jest aplikacja WAS. WAS można nazwać dość silnym skanerem luk w zabezpieczeniach, ponieważ testuje z różnymi danymi wejściowymi, a nie tylko zatrzymuje się przy pierwszym niepowodzeniu.
Jest pomocny przy testowaniu, być może jak wspomniano w powyższym dodatku do przeglądarki „Tamper Data”, pobiera dane, pozwala testerowi je zmienić i wysyła do przeglądarki.
Możemy również znaleźć kilka narzędzi do skanowania online, w których wystarczy podać link do witryny, a skanowanie pod kątem ataku HTML. Po zakończeniu testów zostanie wyświetlone podsumowanie.
Selenium Webdriver pytania i odpowiedzi do wywiadu przez 3 lata doświadczenia
Chciałbym skomentować, że wybierając narzędzie skanujące, musimy zwrócić uwagę na to, jak analizuje wyniki i czy jest wystarczająco dokładne, czy nie.
Należy jednak pamiętać, że nie należy zapominać o testowaniu ręcznym. W ten sposób możemy być pewni, jakie dokładne dane wejściowe są wypróbowywane i jakie dokładne wyniki otrzymujemy. Również w ten sposób łatwiej jest analizować wyniki.
Z mojego doświadczenia w karierze testera oprogramowania chciałbym powiedzieć, że dla obu sposobów testowania powinniśmy mieć dobrą znajomość tego typu iniekcji. W przeciwnym razie trudno byłoby wybrać odpowiednie narzędzie do automatyzacji i przeanalizować jego wyniki. Ponadto zawsze zaleca się, aby nie zapominać o ręcznym przetestowaniu, ponieważ to tylko daje nam większą pewność co do jakości.
Jak zapobiec iniekcji HTML?
Nie ma wątpliwości, że głównym powodem tego ataku jest nieuwaga dewelopera i niewiedza. Ten typ ataku typu iniekcja występuje, gdy dane wejściowe i wyjściowe nie są prawidłowo sprawdzane. Dlatego główną zasadą zapobiegającą atakowi HTML jest odpowiednia weryfikacja danych.
Każde wejście należy sprawdzić, czy zawiera kod skryptu lub kod HTML. Zwykle jest sprawdzane, jeśli kod zawiera jakiś specjalny skrypt lub nawiasy HTML -,.
Istnieje wiele funkcji służących do sprawdzania, czy kod zawiera specjalne nawiasy. Wybór funkcji sprawdzania zależy od języka programowania, którego używasz.
Należy pamiętać, że dobrze testy bezpieczeństwa jest również częścią profilaktyki. Chciałbym zwrócić uwagę, że ponieważ atak HTML Injection jest bardzo rzadki, jest mniej literatury, aby się o nim dowiedzieć i mniej skanerów do wyboru do automatycznego testowania. Jednak tej części testów bezpieczeństwa naprawdę nie można przegapić, ponieważ nigdy nie wiadomo, kiedy to się stanie.
Ponadto zarówno programista, jak i tester powinni mieć dobrą wiedzę na temat sposobu przeprowadzania tego ataku. Dobre zrozumienie tego procesu ataku może temu zapobiec.
Porównanie z innymi atakami
W porównaniu z innymi możliwymi atakami, ten atak na pewno nie zostanie uznany za tak ryzykowny jak Wstrzyknięcie SQL lub Atak polegający na iniekcji JavaScript a może nawet XSS. Nie zniszczy całej bazy danych ani nie wykradnie wszystkich danych z bazy danych. Jednak nie należy go uważać za nieistotny.
Jak wspomniano wcześniej, głównym celem tego typu iniekcji jest zmiana wyglądu wyświetlanej witryny na złośliwy cel, wyświetlenie wysłanych informacji lub danych użytkownikowi końcowemu. Ryzyka te można uznać za mniej ważne.
Jednak zmiana wyglądu witryny może kosztować reputację Twojej firmy. Jeśli złośliwy użytkownik zniszczyłby wygląd Twojej witryny, może to zmienić opinie odwiedzających o Twojej firmie.
Należy pamiętać, że kolejnym ryzykiem, jakie niesie ze sobą ten atak na witrynę internetową, jest kradzież tożsamości innego użytkownika.
Jak wspomniano, za pomocą HTML Injection szkodliwy użytkownik może wstrzyknąć całą stronę, która zostanie wyświetlona użytkownikowi końcowemu. Następnie, jeśli użytkownik końcowy wskaże swoje dane logowania na fałszywej stronie logowania, zostaną one przesłane szkodliwemu użytkownikowi. Ten przypadek jest oczywiście bardziej ryzykowną częścią tego ataku.
Należy wspomnieć, że do kradzieży danych innych użytkowników ten typ ataku jest wybierany rzadziej, ponieważ innych możliwych ataków jest dużo.
Jest jednak bardzo podobny do ataku XSS, który kradnie pliki cookie użytkownika i inne tożsamości użytkowników. Istnieją również ataki XSS, które są oparte na HTML. Dlatego testowanie pod kątem ataku XSS i HTML może być bardzo podobne i wykonywane razem.
Wniosek
Ponieważ HTML Injection nie jest tak popularny jak inne ataki, można go uznać za mniej ryzykowny niż inne ataki. W związku z tym testowanie tego typu wtrysku jest czasami pomijane.
Można też zauważyć, że literatury i informacji na temat HTML Injection jest zdecydowanie mniej. Dlatego testerzy mogą zdecydować, że nie będą przeprowadzać tego typu testów. Jednak w tym przypadku ryzyko ataku HTML może nie zostać wystarczająco ocenione.
Jak przeanalizowaliśmy w tym samouczku, przy tego typu iniekcji cały projekt Twojej witryny może zostać zniszczony, a nawet dane logowania użytkownika mogą zostać skradzione. Dlatego zdecydowanie zaleca się włączenie HTML Injection do testów bezpieczeństwa i zainwestowanie dobrej wiedzy.
Czy spotkałeś się z typowym wtryskiem HTML? Zapraszam do podzielenia się swoimi doświadczeniami w sekcji komentarzy poniżej.
rekomendowane lektury
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Kurs testowania SQL Injection (przykład i zapobieganie atakowi SQL Injection Attack)
- Python DateTime Tutorial z przykładami
- Samouczek dotyczący ataków typu Cross Site Scripting (XSS) z przykładami, typami i zapobieganiem
- Samouczek dotyczący wstrzykiwania kodu JavaScript: testowanie i zapobieganie atakom polegającym na wstrzykiwaniu kodu JS w witrynie internetowej
- Samouczek dotyczący skryptów powłoki Unix z przykładami
- Selenium Find Element By Text Samouczek z przykładami
- Samouczek dotyczący głównych funkcji języka Python z praktycznymi przykładami