Web Application Security Testing
authentication bypass vulnerability

Badanie bezpieczeństwa aplikacji CakePHP – Zapomniany punkt końcowy: Ominięcie uwierzytelniania z prefiksem /open

Aplikacje internetowe są często pierwszym celem atakujących z powodu dużej ilości wrażliwych informacji, które przechowują. Zapewnienie bezpieczeństwa tych aplikacji jest kluczowe, aby chronić zarówno użytkowników, jak i firmy przed potencjalnymi zagrożeniami cybernetycznymi. Jednym z najskuteczniejszych sposobów identyfikowania luk w aplikacjach internetowych jest przeprowadzanie testów penetracyjnych aplikacji webowych. W tym kompleksowym przewodniku przyjrzymy się znaczeniu testów penetracyjnych aplikacji internetowych, skupiając się głównie na wykrywaniu luk związanych z ominięciem uwierzytelniania, na przykładzie luki, którą Dawid odkrył w Cerebrate, używając prefiksu /open.

Wprowadzenie do testów penetracyjnych aplikacji webowych

Testy penetracyjne aplikacji webowych to systematyczny proces oceny bezpieczeństwa aplikacji internetowych poprzez symulację rzeczywistych ataków. Celem jest identyfikacja luk i słabości, które mogą zostać wykorzystane przez atakujących do uzyskania nieautoryzowanego dostępu, kradzieży wrażliwych danych lub zakłócenia działania aplikacji. Dzięki przeprowadzaniu testów penetracyjnych aplikacji webowych firmy mogą proaktywnie rozwiązywać problemy z bezpieczeństwem i zmniejszać ryzyko udanego ataku cybernetycznego.

what is web application penetration testing

Uwierzytelnienie w aplikacjach webowych

Uwierzytelnienie jest kluczowym elementem bezpieczeństwa aplikacji webowych, ponieważ weryfikuje tożsamość użytkowników próbujących uzyskać dostęp do aplikacji. Poprzez podanie danych logowania (takich jak nazwa użytkownika i hasło), użytkownicy potwierdzają swoją tożsamość i otrzymują dostęp do określonych zasobów i funkcji aplikacji.

Jednakże atakujący mogą wykorzystać luki w procesie uwierzytelnienia, aby uzyskać nieautoryzowany dostęp do wrażliwych danych i funkcji. Jedną z takich luk jest obejście uwierzytelnienia, w którym atakujący może przejść przez mechanizm uwierzytelnienia i bez podania prawidłowych danych logowania uzyskać dostęp do chronionych zasobów. Z drugiej strony, w rzadkich przypadkach mogą występować podatne punkty końcowe, takie jak nasz przykład prefiksu /open, które umożliwiają bezpośredni dostęp do funkcji i informacji bez jakiejkolwiek kontroli autoryzacji.

Luki w obejściu uwierzytelnienia

Luka w obejściu uwierzytelnienia może wystąpić, gdy aplikacja udostępnia alternatywną ścieżkę do chronionych zasobów, która nie wymaga uwierzytelnienia. Pozwala to użytkownikom, którzy nie zostali uwierzytelnieni, na dostęp do zasobów i funkcji, które powinny być dostępne wyłącznie dla użytkowników uwierzytelnionych. Takie luki mogą naruszyć poufność i integralność danych oraz funkcji aplikacji.

Istnieje kilka powodów, dla których luki w obejściu uwierzytelnienia mogą występować w aplikacjach webowych:

  • Niezabezpieczone domyślne ustawienia lub konfiguracje
  • Błędy w logice lub implementacji uwierzytelnienia
  • Słabe lub łatwe do odgadnięcia dane logowania
  • Niewystarczające mechanizmy kontroli dostępu
authentication bypass

Zrozumienie luki związanej z prefiksem /open /open w Cerebrate

Podczas testów penetracyjnych aplikacji webowej Dawid wykrył podatny punkt końcowy, który umożliwia nieuwierzytelnionym użytkownikom dostęp do kontrolerów „Organisations” i „Individuals”. Luka związana z prefiksem /open jest przykładem podatności na obejście uwierzytelnienia.

Atakujący może wykorzystać tę podatność, wysyłając żądanie do aplikacji z prefiksem /open, omijając w ten sposób wymóg uwierzytelnienia. W odpowiedzi aplikacja zwróci listę organizacji lub osób, co potencjalnie może prowadzić do ujawnienia wrażliwych informacji nieautoryzowanemu użytkownikowi.

Jak widać na poniższych zrzutach ekranu, udało nam się wydobyć listę organizacji i osób.

Poniżej przykład dotyczący osób:

open endpoints vulnerability example

Oraz przykład dotyczący organizacji:

Ponadto, jeśli chcesz upewnić się, że podczas wysyłania żądania przeglądarka nie przesyła żadnych plików cookie ani tokenów, możesz użyć następującego polecenia curl, aby uzyskać dostęp do chronionych stron bez podawania jakichkolwiek danych uwierzytelniających podczas testowania podobnych podatności:

curl -X GET 'http://example.com/open/organisations'
curl -X GET 'http://example.com/open/individuals'

Poniżej znajduje się kolejny zrzut ekranu przedstawiający użycie polecenia curl do uzyskania dostępu do organizacji bez podawania tokena, plików cookie ani danych uwierzytelniających:

Wykrywanie luk w obejściu uwierzytelnienia

Wykrywanie luk w obejściu uwierzytelnienia wymaga dogłębnego zrozumienia mechanizmu uwierzytelnienia aplikacji webowej, polityk kontroli dostępu oraz potencjalnych alternatywnych ścieżek prowadzących do chronionych zasobów.

Testerzy penetracyjni aplikacji webowych mogą wykorzystywać różne narzędzia i techniki do identyfikacji tych luk, jednak w takich nieoczekiwanych przypadkach najlepszym podejściem jest ręczne testowanie oraz analiza kodu źródłowego aplikacji, plików konfiguracyjnych i polityk kontroli dostępu.

detecting authentication bypass vulnerabilities

Eksploatacja luk w obejściu uwierzytelnienia

Po zidentyfikowaniu luki w obejściu uwierzytelnienia atakujący może ją wykorzystać do uzyskania nieautoryzowanego dostępu do chronionych zasobów lub funkcji. Może to obejmować wysyłanie specjalnie spreparowanych żądań do aplikacji, manipulowanie danymi wejściowymi lub modyfikowanie plików cookie przeglądarki i tokenów sesyjnych.

W przypadku podatności związanej z prefiksem /open atakujący mógłby użyć narzędzia takiego jak curl lub przeglądarki internetowej do wysyłania żądań do podatnych kontrolerów bez podawania jakichkolwiek danych uwierzytelniających. Umożliwiłoby mu to dostęp do wrażliwych danych i potencjalne wykonywanie działań zarezerwowanych dla uwierzytelnionych użytkowników.

Wpływ luk w obejściu uwierzytelnienia

Wpływ luk w obejściu uwierzytelnienia może być poważny i zależy od wrażliwości danych oraz funkcji, które zostały ujawnione. Nieautoryzowany dostęp do aplikacji może prowadzić do wycieku danych, utraty kluczowych informacji biznesowych oraz poważnego uszczerbku na reputacji organizacji.

Co więcej, jeśli atakujący przejmie kontrolę nad funkcją konta o wysokich uprawnieniach, na przykład administratora, może uzyskać pełny dostęp do aplikacji oraz jej infrastruktury. Nawet przejęcie funkcji kont o niskich uprawnieniach może dostarczyć atakującym dodatkowych powierzchni ataku, umożliwiając dostęp do wewnętrznych stron i zasobów, które nie są zwykle dostępne publicznie.

Zapobieganie lukom w obejściu uwierzytelnienia

Aby zminimalizować ryzyko luk w obejściu uwierzytelnienia, organizacje powinny:

  • Wdrażać solidne i bezpieczne mechanizmy uwierzytelniania, w tym uwierzytelnianie wieloskładnikowe (MFA) oraz polityki silnych haseł
  • Regularnie aktualizować i łatać systemy, oprogramowanie oraz aplikacje w celu eliminowania znanych podatności
  • Przeprowadzać dokładne testy penetracyjne aplikacji webowych w celu identyfikacji i usunięcia potencjalnych luk w uwierzytelnieniu
  • Zapewnić odpowiednie polityki i konfiguracje kontroli dostępu, stosując zasadę najmniejszych uprawnień (PoLP – Principle of Least Privilege)
  • Nieustannie monitorować i audytować logi dostępu oraz aktywność użytkowników w celu wykrywania oznak nieautoryzowanego dostępu lub podejrzanej aktywności
  • Przede wszystkim przeanalizować schemat autoryzacji aplikacji – dostęp do wszystkich kontrolerów i akcji, poza wymaganymi (np. logowanie i rejestracja), powinien być ograniczony wyłącznie do uwierzytelnionych użytkowników
ways to prevent authentication bypass

Podsumowanie

Testy penetracyjne aplikacji webowych odgrywają kluczową rolę w zapewnieniu ich bezpieczeństwa oraz ochronie wrażliwych danych przed nieautoryzowanym dostępem. Proaktywna identyfikacja i eliminacja luk w uwierzytelnieniu, takich jak podatność związana z prefiksem /open, pozwala organizacjom zmniejszyć ryzyko skutecznych ataków cybernetycznych i utrzymać wysoki poziom bezpieczeństwa.

Pamiętaj, że testy penetracyjne aplikacji webowych to proces ciągły – wraz z ewolucją aplikacji oraz rozwojem technik atakujących mogą pojawiać się nowe podatności. Regularne aktualizowanie i testowanie aplikacji webowych jest niezbędne do utrzymania bezpiecznego środowiska i ochrony organizacji przed potencjalnymi zagrożeniami.

Porozmawiajmy o przeprowadzaniu badań bezpieczeństwa aplikacji internetowej

Umów się na rozmowę z ekspertem ds. cyberbezpieczeństwa

    Czy artykuł jest pomocny? Podziel się nim ze swoimi znajomymi.

    Author

    Ulaş Deniz İlhan