Jak działa podstawowe uwierzytelnianie HTTP i jak może zostać złamane

Podstawowe uwierzytelnianie HTTP, mimo upływu lat i rozwoju bardziej zaawansowanych metod zabezpieczania, wciąż bywa stosowane w środowiskach o ograniczonych zasobach. Często można je spotkać w urządzeniach sieciowych, takich jak routery czy panele administracyjne IoT. Ze względu na prostotę i łatwość wdrożenia mechanizm ten preferuje się w środowiskach, gdzie nie wymaga się zarządzania sesjami ani rozbudowanych mechanizmów autoryzacji. W artykule wyjaśniono mechanizm działania podstawowego uwierzytelniania HTTP, jego ograniczenia oraz sposoby jego eksploatacji z wykorzystaniem narzędzi takich jak Burp Suite. Pokazano również, jak przeprowadzić atak typu brute-force na tego typu zabezpieczenie.


Podstawowe uwierzytelnianie HTTP

Podstawowe uwierzytelnianie HTTP nadal bywa używane ze względu na swoją prostotę. Wymaga jedynie podania nazwy użytkownika i hasła, które są przesyłane jako zakodowany ciąg w formacie Base64 w nagłówku HTTP Authorization. Dokument RFC 7617 opisuje ten mechanizm i definiuje jego format:
Authorization: Basic <credentials>
gdzie <credentials> to zakodowany ciąg username:password.

Chociaż mechanizm ten nie zapewnia wysokiego poziomu bezpieczeństwa, nadal stosuje się go tam, gdzie inne metody, takie jak OAuth czy uwierzytelnianie tokenowe, wymagają zbyt wielu zasobów. Na przykład wykorzystuje się go w urządzeniach sieciowych, gdzie dostęp administracyjny jest rzadki i nie ma potrzeby utrzymywania stanu sesji. W takich scenariuszach prostota wdrożenia staje się kluczową zaletą.

Warto zaznaczyć, że Base64 nie szyfruje danych, a jedynie je koduje. W efekcie dane uwierzytelniające mogą łatwo zostać przechwycone i zdekodowane, jeśli połączenie nie korzysta z HTTPS. Dlatego podstawowego uwierzytelniania nie powinno się stosować w środowiskach, w których bezpieczeństwo danych ma najwyższy priorytet.


Demonstracja ataku z użyciem Burp Suite

Aby zademonstrować, jak można wykorzystać ten typ uwierzytelniania, warto odwiedzić środowisko testowe:
http://enum.thm/labs/basic_auth/

  1. Po wyświetleniu się okienka logowania, należy wpisać dowolne dane logowania, a następnie przechwycić żądanie HTTP za pomocą Burp Suite.
  2. W przechwyconym żądaniu znajduje się nagłówek Authorization z zakodowanym ciągiem Base64.
  3. Po zdekodowaniu ciągu można zauważyć strukturę admin:hasło.

Aby przeprowadzić atak słownikowy, należy wysłać to żądanie do zakładki Intruder w Burpie:

  • W zakładce Positions wybieramy zakodowany ciąg Base64 jako cel ataku.
  • Następnie w zakładce Payloads ustawiamy typ listy jako Simple list i ładujemy plik haseł, np. 500-worst-passwords.txt z SecLists.
  • Tworzymy dwie reguły przetwarzania: pierwsza łączy nazwę użytkownika z hasłem (np. admin:123456), druga koduje wynik do Base64.
  • Zaleca się także usunięcie znaku = z kodowania Base64, aby uniknąć błędów w żądaniu.

Po uruchomieniu ataku otrzymamy zestaw odpowiedzi HTTP. Kod odpowiedzi 200 wskazuje na udane logowanie. Zakodowany ciąg należy ponownie zdekodować i użyć poprawnych danych do zalogowania się do aplikacji.


Podsumowanie:


Podstawowe uwierzytelnianie HTTP, mimo swoich ograniczeń, wciąż znajduje zastosowanie w środowiskach o niskich wymaganiach bezpieczeństwa. Dzięki swojej prostocie może być używane do szybkiej ochrony interfejsów administracyjnych, jednak jego stosowanie bez HTTPS jest wysoce ryzykowne. Pokazana metoda eksploatacji uwidacznia, jak łatwo można złamać słabe dane logowania, jeśli nie zastosuje się dodatkowych zabezpieczeń. Dlatego współcześnie zaleca się stosowanie bardziej zaawansowanych mechanizmów, takich jak tokeny, JWT czy uwierzytelnianie oparte na certyfikatach. Niemniej jednak, świadomość zagrożeń związanych z podstawowym uwierzytelnianiem powinna być częścią wiedzy każdego specjalisty ds. bezpieczeństwa.

źródło: https://tryhackme.com/room/enumerationbruteforce dostęp 11.04.2025