web application security testing guide
testy obciążeniowe vs testy wydajnościowe vs testy warunków skrajnych
Ze względu na ogromną ilość danych przechowywanych w aplikacjach internetowych oraz wzrost liczby transakcji w sieci, prawidłowe testowanie bezpieczeństwa aplikacji internetowych staje się z dnia na dzień bardzo ważne.
Z tego artykułu dowiemy się szczegółowo o kluczowych terminach używanych w testowaniu bezpieczeństwa witryn internetowych oraz o podejściu do testowania.
Czego się nauczysz:
- Co to jest testowanie bezpieczeństwa?
- Niektóre kluczowe terminy używane w testowaniu bezpieczeństwa
- Zalecane narzędzia do testowania bezpieczeństwa
- Podejście do testowania bezpieczeństwa
- Metody testowania bezpieczeństwa sieci
- Wniosek
- rekomendowane lektury
Co to jest testowanie bezpieczeństwa?
Testowanie bezpieczeństwa to proces, który sprawdza, czy plik poufne dane pozostają poufne lub nie (tj. nie jest narażony na osoby / podmioty, dla których nie jest przeznaczony), a użytkownicy mogą wykonywać tylko te zadania, do których są upoważnieni
Na przykład, użytkownik nie powinien mieć możliwości odmówienia funkcjonalności strony internetowej innym użytkownikom lub nie powinien mieć możliwości zmiany funkcjonalności aplikacji internetowej w niezamierzony sposób itp.
Niektóre kluczowe terminy używane w testowaniu bezpieczeństwa
Zanim przejdziemy dalej, warto zapoznać się z kilkoma terminami, które są często używane w testowaniu bezpieczeństwa aplikacji internetowych:
Co to jest „Podatność”?
To jest słabość aplikacji internetowej. Przyczyną takiej „słabości” mogą być błędy w aplikacji, wstrzyknięcie (kod SQL / skrypt) lub obecność wirusów.
Co to jest „manipulacja adresem URL”?
Niektóre aplikacje internetowe przekazują dodatkowe informacje między klientem (przeglądarką) a serwerem w adresie URL. Zmiana niektórych informacji w adresie URL może czasami prowadzić do niezamierzonego zachowania serwera i jest to określane jako Manipulacja adresami URL .
Co to jest „wstrzyknięcie SQL”?
Jest to proces wstawiania instrukcji SQL za pośrednictwem interfejsu użytkownika aplikacji sieciowej do zapytania, które jest następnie wykonywane przez serwer.
Co to jest „XSS (Cross-Site Scripting)”?
Kiedy użytkownik wstawia HTML / skrypt po stronie klienta w interfejsie użytkownika aplikacji internetowej, to wstawienie jest widoczne dla innych użytkowników i jest określane jako XSS .
Co to jest „podszywanie się”?
Tworzenie witryn internetowych lub e-maili przypominających mistyfikację nazywa się Podszywanie się .
Zalecane narzędzia do testowania bezpieczeństwa
# 1) Acunetix
Acunetix to kompleksowy skaner bezpieczeństwa aplikacji internetowych. Zapewni 360-stopniowy wgląd w bezpieczeństwo Twojej organizacji. Jest w stanie wykryć 6500 rodzajów luk w zabezpieczeniach, takich jak iniekcje SQL, XSS i słabe hasła itp. Wykorzystuje zaawansowaną technologię nagrywania makr do skanowania złożonych wielopoziomowych formularzy.
Platforma jest intuicyjna i łatwa w użyciu. Możesz zaplanować i nadać priorytety skanom pełnym oraz skanom przyrostowym. Zawiera wbudowaną funkcję zarządzania podatnościami. Za pomocą narzędzi CI, takich jak Jenkins, nowe kompilacje mogą być skanowane automatycznie.
=> Wypróbuj Acunetix for Web App Security
# 2) Kiuwan
Znajdź i napraw luki w swoim kodzie na każdym etapie SDLC.
Kiuwan jest zgodny z najbardziej rygorystycznymi standardami bezpieczeństwa, w tym OWASP, CWE, SANS 25, HIPPA i nie tylko.Zintegruj Kiuwan ze swoim IDE, aby uzyskać natychmiastową informację zwrotną podczas programowania. Kiuwan obsługuje wszystkie główne języki programowania i integruje się z wiodącymi narzędziami DevOps.
=> Zeskanuj swój kod za darmo
Podejście do testowania bezpieczeństwa
Aby przeprowadzić użyteczny test bezpieczeństwa aplikacji internetowej, tester powinien mieć dobrą znajomość protokołu HTTP.
Ważne jest, aby zrozumieć, w jaki sposób klient (przeglądarka) i serwer komunikują się za pomocą protokołu HTTP.
Dodatkowo tester powinien znać przynajmniej podstawy wstrzykiwania SQL i XSS.
Miejmy nadzieję, że liczba defektów bezpieczeństwa obecnych w aplikacji internetowej nie będzie duża. Jednak zdolność do dokładnego opisania wszystkich defektów bezpieczeństwa ze wszystkimi wymaganymi szczegółami z pewnością pomoże.
Metody testowania bezpieczeństwa sieci
# 1) Łamanie haseł
Testy bezpieczeństwa na Aplikacja internetowa może zostać wywołane przez „Łamanie haseł”. Aby zalogować się do prywatnych obszarów aplikacji, można albo odgadnąć nazwę użytkownika / hasło, albo użyć do tego narzędzia do łamania haseł. Dostępna jest lista typowych nazw użytkowników i haseł wraz z narzędziami do łamania haseł typu open source.
Jeśli aplikacja internetowa nie wymusza złożonego hasła ( Na przykład, alfabetami, cyframi i znakami specjalnymi lub przynajmniej wymaganą liczbą znaków) złamanie nazwy użytkownika i hasła może nie zająć dużo czasu.
Jeśli nazwa użytkownika lub hasło są przechowywane w plikach cookie bez szyfrowania, osoba atakująca może użyć różnych metod kradzieży plików cookie i informacji przechowywanych w plikach cookie, takich jak nazwa użytkownika i hasło.
Więcej informacji można znaleźć w artykule na temat „ Testowanie plików cookie witryny ”.
# 2) Manipulowanie adresami URL za pomocą metod HTTP GET
Tester powinien sprawdzić, czy aplikacja przekazuje ważne informacje w ciągu zapytania, czy nie. Dzieje się tak, gdy aplikacja używa metody HTTP GET do przekazywania informacji między klientem a serwerem.
Informacje są przekazywane za pośrednictwem parametrów w ciągu zapytania. Tester może zmodyfikować wartość parametru w ciągu zapytania, aby sprawdzić, czy serwer ją akceptuje.
Za pośrednictwem żądania HTTP GET informacje o użytkowniku są przekazywane do serwera w celu uwierzytelnienia lub pobrania danych. Atakujący może manipulować każdą zmienną wejściową przekazaną z tego żądania GET do serwera w celu uzyskania wymaganych informacji lub uszkodzenia danych. W takich warunkach każde nietypowe zachowanie aplikacji lub serwera WWW jest bramą umożliwiającą atakującemu uzyskanie dostępu do aplikacji.
# 3) Wstrzyknięcie SQL
Następnym czynnikiem, który należy sprawdzić, jest wtrysk SQL. Wpisanie pojedynczego cudzysłowu („) w jakimkolwiek polu tekstowym powinno zostać odrzucone przez aplikację. Zamiast tego, jeśli tester napotka błąd bazy danych, oznacza to, że dane wejściowe użytkownika są wstawiane do jakiegoś zapytania, które jest następnie wykonywane przez aplikację. W takim przypadku aplikacja jest podatna na wstrzyknięcie SQL.
Ataki typu SQL injection są bardzo krytyczne, ponieważ osoba atakująca może uzyskać istotne informacje z bazy danych serwera. Aby sprawdzić punkty wejścia SQL do swojej aplikacji internetowej, znajdź kod z bazy kodu, w którym wykonywane są bezpośrednie zapytania MySQL w bazie danych, akceptując niektóre dane wejściowe użytkownika.
Jeśli dane wejściowe użytkownika są spreparowane w zapytaniach SQL w celu wysłania zapytania do bazy danych, osoba atakująca może wstrzyknąć instrukcje SQL lub część instrukcji SQL jako dane wejściowe użytkownika w celu wyodrębnienia istotnych informacji z bazy danych. Nawet jeśli atakującemu uda się zawiesić aplikację, na podstawie błędu zapytania SQL wyświetlanego w przeglądarce, atakujący może uzyskać informacje, których szuka.
W takich przypadkach znaki specjalne z danych wprowadzanych przez użytkownika powinny być odpowiednio obsługiwane / zastępowane.
# 4) Cross-Site Scripting (XSS)
Tester powinien dodatkowo sprawdzić aplikację internetową pod kątem XSS (Cross-site scripting). Dowolny kod HTML Na przykład, lub dowolny skrypt Na przykład, nie powinny zostać zaakceptowane przez aplikację. Jeśli tak, to aplikacja może być podatna na atak wykonywany przez skrypty między witrynami.
Atakujący może użyć tej metody do wykonania złośliwego skryptu lub adresu URL w przeglądarce ofiary. Korzystając ze skryptów między witrynami, osoba atakująca może używać skryptów, takich jak JavaScript, do kradzieży plików cookie użytkowników i informacji przechowywanych w plikach cookie.
Wiele aplikacji internetowych pobiera przydatne informacje i przekazuje je w postaci zmiennych z różnych stron.
Na przykład, http://www.examplesite.com/index.php?userid=123 &pytanie = xyz
Atakujący może z łatwością przekazać złośliwe dane wejściowe lub jako parametr „& query”, który może zbadać ważne dane użytkownika / serwera w przeglądarce.
Ważny: Podczas testowania bezpieczeństwa tester powinien bardzo uważać, aby nie modyfikować żadnego z poniższych:
jak odtworzyć plik flash Shockwave
- Konfiguracja aplikacji lub serwera
- Usługi działające na serwerze
- Istniejące dane użytkownika lub klienta hostowane przez aplikację
Ponadto w systemie produkcyjnym należy unikać testu bezpieczeństwa.
Wniosek
Celem testu bezpieczeństwa jest wykrycie luk w aplikacji internetowej, aby programiści mogli usunąć te luki z aplikacji i zabezpieczyć aplikację internetową i dane przed nieautoryzowanym działaniem.
Zalecana lektura => Różnica między SAST / DAST / IAST / RASP
Zapraszam do dzielenia się komentarzami / sugestiami dotyczącymi tego artykułu.
rekomendowane lektury
- Przewodnik dla początkujących po testach penetracyjnych aplikacji internetowych
- Testowanie bezpieczeństwa (kompletny przewodnik)
- Testy alfa i testy beta (kompletny przewodnik)
- Testowanie bezpieczeństwa sieci i najlepsze narzędzia bezpieczeństwa sieci
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Kompletny przewodnik po testach weryfikacyjnych kompilacji (testy BVT)
- Najlepsze 4 narzędzia testowania bezpieczeństwa Open Source do testowania aplikacji internetowych
- Testy funkcjonalne a testy niefunkcjonalne