security testing
Jak testować bezpieczeństwo aplikacji - techniki testowania bezpieczeństwa aplikacji internetowych i komputerowych
Potrzeba testów bezpieczeństwa?
Branża oprogramowania osiągnęła w tym wieku solidne uznanie. Jednak w ostatnim dziesięcioleciu cyber-świat wydaje się być jeszcze bardziej dominujący i siłą napędową, która kształtuje nowe formy niemal każdego biznesu. Obecnie używane internetowe systemy ERP są najlepszym dowodem na to, że IT zrewolucjonizowało naszą ukochaną globalną wioskę.
W dzisiejszych czasach strony internetowe są przeznaczone nie tylko do celów reklamowych lub marketingowych, ale ewoluowały w silniejsze narzędzia, które zaspokajają wszystkie potrzeby biznesowe.
Internetowe systemy płac, centra handlowe, banki, aplikacje giełdowe są nie tylko używane przez organizacje, ale są również sprzedawane jako produkty.
Oznacza to, że aplikacje internetowe zyskały zaufanie klientów i użytkowników w zakresie ich istotnej funkcji zwanej BEZPIECZEŃSTWEM.
Bez wątpienia współczynnik bezpieczeństwa ma pierwszorzędną wartość również w przypadku aplikacji komputerowych.
Jednak gdy mówimy o Internecie, znaczenie bezpieczeństwa rośnie wykładniczo. Jeśli system online nie może chronić danych transakcji, nikt nigdy nie pomyśli o jego użyciu. Bezpieczeństwo nie jest jeszcze słowem szukającym definicji, ani też subtelnym pojęciem. Chciałbym jednak wymienić kilka komplementów dotyczących bezpieczeństwa.
jak usunąć element z tablicy w java z przykładem
Przykłady luk w zabezpieczeniach aplikacji
- System zarządzania uczniami nie jest bezpieczny, jeśli oddział „Przyjęcia” może edytować dane oddziału „Egzamin”
- System ERP nie jest bezpieczny, jeśli DEO (operator wprowadzania danych) może generować „Raporty”
- Internetowe centrum handlowe nie jest zabezpieczone, jeśli dane karty kredytowej klienta nie są zaszyfrowane
- Oprogramowanie niestandardowe ma niewystarczające zabezpieczenia, jeśli zapytanie SQL pobiera rzeczywiste hasła jego użytkowników
Bezpieczeństwo
Teraz przedstawiam wam najprostszą definicję bezpieczeństwa własnymi słowami.
„Bezpieczeństwo oznacza, że autoryzowany dostęp jest udzielany do chronionych danych, a nieautoryzowany dostęp jest ograniczony” .
Tak więc ma dwa główne aspekty; pierwsza to ochrona danych, a druga to dostęp do tych danych. Co więcej, niezależnie od tego, czy aplikacja jest oparta na komputerach stacjonarnych, czy w Internecie, bezpieczeństwo obraca się wokół dwóch wyżej wymienionych aspektów.
Omówmy aspekty bezpieczeństwa aplikacji komputerowych i aplikacji internetowych.
Czego się nauczysz:
Testowanie bezpieczeństwa komputerów i sieci
Aplikacja desktopowa powinna być bezpieczna nie tylko pod względem dostępu, ale także organizacji i przechowywania jej danych.
Podobnie, aplikacja internetowa wymaga jeszcze większego bezpieczeństwa dostępu, a także ochrony danych. Deweloper WWW powinien uczynić aplikację odporną na iniekcje SQL, ataki Brute Force i XSS (cross-site scripting). Podobnie, jeśli aplikacja internetowa umożliwia zdalne punkty dostępu, to one również muszą być bezpieczne.
Ponadto należy pamiętać, że Brute Force Attack to nie tylko aplikacje internetowe, ale również oprogramowanie komputerowe.
Mam nadzieję, że ta przedmowa wystarczy i pozwólcie mi teraz przejść do sedna. Uprzejmie przyjmij moje przeprosiny, jeśli do tej pory myślałeś, że czytasz na temat tego artykułu. Chociaż pokrótce wyjaśniłem bezpieczeństwo oprogramowania i jego główne problemy, moim tematem jest „Testowanie bezpieczeństwa”.
Zalecana lektura => Testowanie bezpieczeństwa aplikacji internetowych
Wyjaśnię teraz, w jaki sposób funkcje bezpieczeństwa są wdrażane w aplikacji i jak należy je testować. Skoncentruję się na testach bezpieczeństwa, a nie na testach bezpieczeństwa.
Zalecane narzędzia do testowania bezpieczeństwa
# 1) Net parker
Netsparker to rozwiązanie do testowania bezpieczeństwa aplikacji internetowych z możliwością automatycznego przeszukiwania i skanowania wszystkich typów starszych i nowoczesnych aplikacji internetowych, takich jak HTML5, Web 2.0 i aplikacje jednostronicowe. Wykorzystuje technologię skanowania opartą na dowodach i skalowalne agenty skanowania.
Zapewnia pełną widoczność, nawet jeśli masz dużą liczbę zasobów do zarządzania. Posiada wiele innych funkcji, takich jak zarządzanie zespołem i zarządzanie podatnościami. Można go zintegrować z platformami CI / CD, takimi jak Jenkins, TeamCity czy Bamboo.
=> Wypróbuj najlepsze narzędzie do testowania zabezpieczeń Netsparker#dwa) 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# 3) Indusface WAS Free Website Malware Check
Indusface BYŁ zapewnia zarówno ręczne testy penetracyjne w pakiecie z własnym zautomatyzowanym skanerem luk w aplikacjach internetowych, który wykrywa i zgłasza luki w oparciu o OWASP top 10, a także obejmuje kontrolę reputacji witryny internetowej pod kątem linków, złośliwego oprogramowania i pod kątem uszkodzeń witryny w każdym skanowaniu
=> Uruchom szybkie skanowanie witryny za darmo
=> Skontaktuj się z nami zasugerować listę tutaj.
Lista 8 najlepszych technik testowania zabezpieczeń
# 1) Dostęp do aplikacji
Niezależnie od tego, czy jest to aplikacja komputerowa, czy strona internetowa, zabezpieczenia dostępu są wdrażane przez „Zarządzanie rolami i prawami”. Często odbywa się to niejawnie, obejmując funkcjonalność,
Na przykład, W systemie zarządzania szpitalem recepcjonistka jest najmniej zainteresowana badaniami laboratoryjnymi, ponieważ jego zadaniem jest po prostu rejestrowanie pacjentów i umawianie ich na wizyty u lekarzy.
Tak więc wszystkie menu, formularze i ekrany związane z testami laboratoryjnymi nie będą dostępne dla roli „recepcjonistki”. Stąd właściwa realizacja ról i praw zagwarantuje bezpieczeństwo dostępu.
Jak testować: Aby to sprawdzić, należy dokładnie przetestować wszystkie role i prawa.
Tester powinien utworzyć kilka kont użytkowników z różnymi, a także wieloma rolami. Następnie powinien korzystać z aplikacji przy pomocy tych kont i powinien sprawdzić, czy każda rola ma dostęp tylko do własnych modułów, ekranów, formularzy i menu. Jeśli tester stwierdzi konflikt, powinien z całkowitą pewnością zarejestrować problem dotyczący bezpieczeństwa.
Można to również rozumieć jako testowanie uwierzytelniania i autoryzacji, co jest bardzo pięknie przedstawione na poniższym obrazku:
co to jest plik mkv i jak go odtworzyć?
Zasadniczo musisz więc sprawdzić, „kim jesteś” i „co możesz zrobić” dla różnych użytkowników.
Niektóre testy uwierzytelniające obejmują test reguł jakości haseł, test domyślnych loginów, test odzyskiwania hasła, test captcha, test funkcji wylogowania, test zmiany hasła, test pytania / odpowiedzi bezpieczeństwa itp.
Podobnie, niektóre testy autoryzacyjne obejmują test przemierzania ścieżki, test braku autoryzacji, test poziomej kontroli dostępu itp.
# 2) Ochrona danych
Istnieją trzy aspekty bezpieczeństwa danych. Pierwsza to to użytkownik może przeglądać lub wykorzystywać tylko te dane, z których ma korzystać . Zapewniają to również role i prawa
Na przykład, TSR (przedstawiciel telesprzedaży) firmy może przeglądać dane o dostępnych zapasach, ale nie może zobaczyć, ile surowca zakupiono do produkcji.
Tak więc ten aspekt testowania bezpieczeństwa został już wyjaśniony powyżej. Drugi aspekt ochrony danych dotyczy jak te dane są przechowywane w bazie danych .
Dalsza lektura = >> Co to jest testowanie bezpieczeństwa bazy danych
Wszystkie wrażliwe dane muszą być zaszyfrowane, aby były bezpieczne. Szyfrowanie powinno być mocne, zwłaszcza w przypadku danych wrażliwych, takich jak hasła kont użytkowników, numery kart kredytowych lub inne informacje krytyczne dla firmy.
Trzeci i ostatni aspekt stanowi rozszerzenie tego drugiego aspektu. W przypadku przepływu danych wrażliwych lub krytycznych dla biznesu należy zastosować odpowiednie środki bezpieczeństwa. Niezależnie od tego, czy dane te przepływają między różnymi modułami tej samej aplikacji, czy są przesyłane do różnych aplikacji, muszą być szyfrowane, aby były bezpieczne.
Jak przetestować ochronę danych: Tester powinien zapytać bazę danych o „hasła” konta użytkownika, informacje rozliczeniowe klientów, inne krytyczne i wrażliwe dane biznesowe oraz powinien sprawdzić, czy wszystkie takie dane są zapisane w postaci zaszyfrowanej w bazie danych.
Podobnie musi sprawdzić, czy dane są przesyłane między różnymi formularzami lub ekranami tylko po odpowiednim zaszyfrowaniu. Ponadto tester powinien upewnić się, że zaszyfrowane dane są prawidłowo odszyfrowane w miejscu docelowym. Szczególną uwagę należy zwrócić na różne działania związane z „przedkładaniem”.
Tester musi sprawdzić, czy gdy informacje są przesyłane między klientem a serwerem, nie są wyświetlane w pasku adresu przeglądarki internetowej w zrozumiałym formacie. Jeśli któraś z tych weryfikacji zakończy się niepowodzeniem, oznacza to, że aplikacja z pewnością ma lukę w zabezpieczeniach.
Tester powinien również sprawdzić poprawność użycia solenia (dodanie dodatkowej tajnej wartości do końcowego wejścia, takiego jak hasło, dzięki czemu jest silniejsze i trudniejsze do złamania).
Należy również przetestować niezabezpieczoną losowość, ponieważ jest to rodzaj luki. Innym sposobem sprawdzenia ochrony danych jest sprawdzenie słabego wykorzystania algorytmu.
Na przykład, Ponieważ HTTP jest protokołem czystego tekstu, jeśli poufne dane, takie jak dane uwierzytelniające użytkownika, są przesyłane za pośrednictwem protokołu HTTP, stanowi to zagrożenie dla bezpieczeństwa aplikacji. Zamiast HTTP, dane wrażliwe powinny być przesyłane przez HTTPS (zabezpieczone przez SSL, tunel TLS).
Jednak HTTPS zwiększa powierzchnię ataku, dlatego należy sprawdzić, czy konfiguracje serwerów są prawidłowe, a certyfikat jest ważny.
# 3) Atak Brute-Force
Brute Force Attack jest najczęściej wykonywany przez niektóre narzędzia programowe. Koncepcja polega na tym, że używając prawidłowego identyfikatora użytkownika, s oprogramowania próbuje odgadnąć skojarzone z nim hasło, próbując się ponownie zalogować.
Prostym przykładem zabezpieczenia przed takim atakiem jest zawieszenie konta na krótki czas, tak jak robią to wszystkie aplikacje pocztowe, takie jak „Yahoo”, „Gmail” i „Hotmail”. Jeśli określona liczba kolejnych prób logowania (najczęściej 3) nie powiedzie się, to konto jest blokowane na jakiś czas (od 30 minut do 24 godzin).
Jak przetestować Atak Brute-Force: Tester musi sprawdzić, czy jakiś mechanizm zawieszania konta jest dostępny i działa poprawnie. (S) Musi spróbować zalogować się przy użyciu nieprawidłowych identyfikatorów użytkowników i haseł, aby upewnić się, że aplikacja blokuje konta, jeśli podejmowane są ciągłe próby logowania z nieprawidłowymi poświadczeniami.
Jeśli aplikacja to robi, jest zabezpieczona przed atakiem brute-force. W przeciwnym razie tester musi zgłosić tę lukę w zabezpieczeniach.
Testowanie brutalnej siły można również podzielić na dwie części - testy czarnoskrzynkowe i szaroskrzynkowe.
Podczas testowania czarnoskrzynkowego metoda uwierzytelniania stosowana przez aplikację jest wykrywana i testowana. Ponadto testy szarej skrzynki opierają się na częściowej znajomości hasła i szczegółów konta oraz ataków na wymianę pamięci.
Kliknij tutaj aby zbadać testy brutalnej siły z czarną i szarą skrzynką wraz z przykładami.
Powyższe trzy aspekty bezpieczeństwa należy wziąć pod uwagę zarówno w przypadku aplikacji internetowych, jak i stacjonarnych, podczas gdy poniższe punkty dotyczą tylko aplikacji internetowych.
# 4) Wstrzykiwanie SQL i XSS (skrypty między witrynami)
Pod względem koncepcyjnym temat obu tych prób włamań jest podobny, więc są one omawiane razem. W tym podejściu złośliwy skrypt jest używany przez hakerów do manipulowania witryną .
Istnieje kilka sposobów uodpornienia się na takie próby. Dla wszystkich pól wejściowych witryny internetowej należy zdefiniować długości pól na tyle małe, aby ograniczyć wprowadzanie dowolnego skryptu
dyrektywy preprocesora w języku C ++ z przykładem
Na przykład, Pole Nazwisko powinno mieć długość 30 zamiast 255. W niektórych polach wejściowych może być konieczne wprowadzenie dużej ilości danych, dla takich pól należy przeprowadzić odpowiednią walidację wprowadzonych danych przed zapisaniem tych danych w aplikacji.
Ponadto w takich polach należy zabronić stosowania jakichkolwiek znaczników HTML lub wprowadzania znaczników skryptu. Aby sprowokować ataki XSS, aplikacja powinna odrzucać przekierowania skryptów z nieznanych lub niezaufanych aplikacji.
Jak przetestować wtrysk SQL i XSS: Tester musi upewnić się, że maksymalne długości wszystkich pól wejściowych są zdefiniowane i zaimplementowane. (S) Powinien również upewnić się, że zdefiniowana długość pól wejściowych nie obejmuje żadnych danych wejściowych skryptu ani znaczników. Oba można łatwo przetestować
Na przykład, Jeśli 20 to maksymalna długość określona w polu „Nazwa” i ciąg wejściowy „
thequickbrownfoxjumpsoverthelazydog ”może zweryfikować oba te ograniczenia.
Tester powinien również zweryfikować, czy aplikacja nie obsługuje anonimowych metod dostępu. W przypadku wystąpienia którejkolwiek z tych luk aplikacja jest w niebezpieczeństwie.
Zasadniczo testy iniekcji SQL można przeprowadzić na pięć następujących sposobów:
- Techniki wykrywania
- Standardowe techniki iniekcji SQL
- Baza danych odcisk palca
- Eksploatacja techniczna
- Techniki inwazji sygnatur SQL
Kliknij tutaj aby zapoznać się ze szczegółami opisanymi powyżej sposobami testowania iniekcji SQL.
XSS to również rodzaj wstrzyknięcia, który wstrzykuje złośliwy skrypt do witryny internetowej. Kliknij tutaj aby dogłębnie zbadać testowanie XSS.
# 5) Punkty dostępu do usług (zamknięte i zabezpieczone otwarte)
Obecnie firmy są ze sobą zależne i współpracują, to samo dotyczy aplikacji, zwłaszcza witryn internetowych. W takim przypadku obaj współpracownicy powinni zdefiniować i opublikować dla siebie kilka punktów dostępu.
Jak dotąd scenariusz wydaje się dość prosty i prosty, ale w przypadku niektórych produktów internetowych, takich jak handel akcjami, sprawy nie są takie proste i łatwe.
W przypadku dużej liczby docelowych odbiorców punkty dostępu powinny być na tyle otwarte, aby ułatwiać pracę wszystkim użytkownikom, odpowiednio przystosowane, aby spełnić wszystkie żądania użytkowników i wystarczająco bezpieczne, aby sprostać wszelkim próbom bezpieczeństwa.
Jak testować punkty dostępu do usług: Pozwól, że wyjaśnię to za pomocą przykład aplikacji internetowej do obrotu giełdowego; inwestor (który chce kupić akcje) powinien mieć dostęp do aktualnych i historycznych danych o kursach akcji. Użytkownik powinien mieć możliwość pobrania tych danych historycznych. Wymaga to, aby aplikacja była wystarczająco otwarta.
Poprzez przystosowanie i bezpieczeństwo mam na myśli to, że aplikacja powinna ułatwiać inwestorom swobodny handel (zgodnie z regulacjami prawnymi). Mogą kupować lub sprzedawać 24 godziny na dobę, 7 dni w tygodniu, a dane transakcji muszą być odporne na atak hakerski.
Ponadto duża liczba użytkowników będzie jednocześnie korzystać z aplikacji, dlatego aplikacja powinna zapewniać wystarczającą liczbę punktów dostępu, aby zapewnić rozrywkę wszystkim użytkownikom.
W niektórych przypadkach te pliki punkty dostępu mogą być zapieczętowane dla niechcianych aplikacji lub osób . Zależy to od domeny biznesowej aplikacji i jej użytkowników,
Na przykład, Niestandardowy internetowy system zarządzania biurem może rozpoznawać swoich użytkowników na podstawie adresów IP i odmawiać ustanowienia połączenia ze wszystkimi innymi systemami (aplikacjami), które nie mieszczą się w zakresie prawidłowych adresów IP dla tej aplikacji.
Tester musi upewnić się, że wszystkie pliki dostęp międzysieciowy i wewnątrzsieciowy do aplikacji przez zaufane aplikacje, komputery (adresy IP) i użytkowników.
Aby sprawdzić, czy otwarty punkt dostępu jest wystarczająco bezpieczny, tester musi próbować uzyskać do niego dostęp z różnych maszyn posiadających zarówno zaufane, jak i niezaufane adresy IP. Aby mieć pewność co do wydajności aplikacji, należy zbiorczo wypróbować różne rodzaje transakcji w czasie rzeczywistym. W ten sposób wydajność punktów dostępu aplikacji będzie również wyraźnie widoczna.
Tester musi upewnić się, że aplikacja przyjmuje wszystkie żądania komunikacji z zaufanych adresów IP i aplikacji, podczas gdy wszystkie inne żądania są odrzucane.
Podobnie, jeśli aplikacja posiada otwarty punkt dostępu, to tester powinien upewnić się, że umożliwia on (jeśli jest to wymagane) przesyłanie danych przez użytkowników w bezpieczny sposób. W ten bezpieczny sposób mam na myśli ograniczenie rozmiaru pliku, ograniczenie typu pliku oraz skanowanie przesłanego pliku w poszukiwaniu wirusów lub innych zagrożeń bezpieczeństwa.
To wszystko w jaki sposób tester może zweryfikować bezpieczeństwo aplikacji w odniesieniu do jej punktów dostępu.
# 6) Zarządzanie sesjami
Sesja internetowa to sekwencja transakcji żądań i odpowiedzi HTTP połączonych z tym samym użytkownikiem. Testy zarządzania sesjami sprawdzają, jak obsługiwane jest zarządzanie sesjami w aplikacji internetowej.
Możesz przetestować wygasanie sesji po określonym czasie bezczynności, zakończenie sesji po maksymalnym czasie życia, zakończenie sesji po wylogowaniu, sprawdzić zakres i czas trwania sesji cookie, sprawdzić, czy jeden użytkownik może mieć wiele jednoczesnych sesji itp.
# 7) Obsługa błędów
Testowanie obsługi błędów obejmuje:
Sprawdź kody błędów : Na przykład, test przekroczenia limitu czasu żądania 408, 400 błędnych żądań, 404 nie znaleziono, itd. Aby je przetestować, musisz wysłać określone żądania do strony, tak aby zwracane były te kody błędów.
Kody błędów są zwracane wraz ze szczegółowym komunikatem. Te wiadomości nie powinny zawierać żadnych krytycznych informacji, które mogłyby zostać użyte do celów hakerskich
Sprawdź ślady stosu : Zasadniczo obejmuje to wprowadzenie wyjątkowych danych wejściowych do aplikacji, tak aby zwrócony komunikat o błędzie zawierał ślady stosu, które zawierają interesujące informacje dla hakerów.
# 8) Specyficzne ryzykowne funkcje
Głównie są to dwie ryzykowne funkcje płatności i przesyłanie plików . Te funkcjonalności należy bardzo dobrze przetestować. W przypadku przesyłania plików należy przede wszystkim przetestować, czy przesyłanie niechcianych lub złośliwych plików jest ograniczone.
W przypadku płatności musisz przede wszystkim przetestować pod kątem luk w zabezpieczeniach, niezabezpieczonej pamięci kryptograficznej, przepełnienia bufora, zgadywania haseł itp.
=> Skontaktuj się z nami zasugerować listę tutaj.Dalsze czytanie:
- Testowanie bezpieczeństwa aplikacji internetowych
- 30 najpopularniejszych pytań do rozmowy kwalifikacyjnej dotyczącej testowania bezpieczeństwa
- Różnica między SAST / DAST / IAST / RASP
- SANS - 20 największych luk w zabezpieczeniach
rekomendowane lektury
- Podręcznik testowania zabezpieczeń aplikacji internetowych
- Testy alfa i testy beta (kompletny przewodnik)
- Samouczek testowania hurtowni danych ETL (kompletny przewodnik)
- Testowanie bezpieczeństwa sieci i najlepsze narzędzia bezpieczeństwa sieci
- Przewodnik dla początkujących po testach penetracyjnych aplikacji internetowych
- Kompletny przewodnik dotyczący testów weryfikacyjnych kompilacji (testy BVT)
- Testy funkcjonalne a testy niefunkcjonalne
- Kompletny przewodnik po testach penetracyjnych z przykładowymi przypadkami testowymi