Ethical Hacking Academy · Lekcja

Metadane i SSRF

Ataki specyficzne dla chmury

Lekcja 4 z 413 kroki

Metadane i SSRF to bezpłatna lekcja Ethical Hacking Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ethical Hacking Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ethical Hacking Academy zawiera 4 lekcji w sumie.

Usługa metadanych instancji

Każda chmurowa maszyna wirtualna może odpytać specjalny wewnętrzny endpoint, aby uzyskać informacje o sobie: Instance Metadata Service (IMDS). Co istotne, usługa może również udostępniać tymczasowe dane uwierzytelniające roli przypisanej do instancji.

  • W AWS, GCP i Azure metadane są dostępne pod adresem 169.254.169.254
  • Można uzyskać do nich dostęp wyłącznie z wnętrza instancji
  • Lokalne procesy nie wymagają uwierzytelniania

To udogodnienie staje się narzędziem ataku w połączeniu z SSRF.

Odczytywanie metadanych AWS (IMDSv1)

W starszej wersji IMDSv1 pojedyncze żądanie GET zwraca metadane, w tym dane uwierzytelniające roli. Token nie jest potrzebny.

Właśnie dlatego IMDSv1 jest niebezpieczne, gdy aplikacja jest podatna na SSRF.

# List roles attached to the instance
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

# Retrieve the temporary credentials for a role
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

Czym jest SSRF

Server-Side Request Forgery (SSRF) to podatność, w której atakujący nakłania serwer do wykonywania żądań HTTP w jego imieniu. Serwer staje się proxy umożliwiającym dostęp do miejsc, do których atakujący nie może dotrzeć bezpośrednio.

  • Parametr URL pobierany przez serwer
  • Webhook, generator PDF lub funkcja zmiany rozmiaru obrazu
  • Dowolny element przyjmujący URL podany przez użytkownika

Klasycznym celem SSRF w chmurze jest endpoint metadanych.

SSRF spotyka metadane

To wyjątkowo groźne połączenie: aplikacja podatna na SSRF pozwala atakującemu skierować serwer do 169.254.169.254. Serwer pobiera dane uwierzytelniające IAM instancji i zwraca je.

Atakujący uzyskuje wtedy dane uwierzytelniające do chmury, co często stanowi początek przejęcia całego konta.

# Vulnerable endpoint fetches any URL the user supplies
GET /fetch?url=http://example.com/image.png

# Attacker redirects it to the metadata service
GET /fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

Wykorzystywanie skradzionych danych uwierzytelniających

Odpowiedź metadanych zawiera klucz dostępu, klucz tajny i token sesji. Atakujący eksportuje je i natychmiast działa jako rola instancji.

Następnie analizuje uprawnienia i szuka sposobów ich eskalacji.

export AWS_ACCESS_KEY_ID=ASIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

# Confirm the stolen identity
aws sts get-caller-identity

IMDSv2 jako zabezpieczenie

Firma AWS wprowadziła IMDSv2, aby ograniczyć skuteczność SSRF. Wymaga ona najpierw uzyskania tokenu sesji za pomocą żądania HTTP PUT, którego większość mechanizmów SSRF nie potrafi wykonać, ponieważ obsługują tylko GET.

Wymuszenie IMDSv2 i ustawienie niskiego limitu przeskoków znacznie ogranicza kradzież metadanych za pośrednictwem SSRF.

# IMDSv2: first PUT to get a session token
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
  -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')

# Then GET using that token
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/

Metadane Azure i GCP

Pozostali dostawcy również udostępniają metadane, choć każdy z nich ma własne szczegóły działania. Obaj wymagają specjalnego nagłówka, co samo w sobie stanowi niewielkie zabezpieczenie przed SSRF.

  • Azure wymaga nagłówka Metadata: true
  • GCP wymaga nagłówka Metadata-Flavor: Google
# Azure: fetch a managed-identity access token
curl -H 'Metadata: true' \
  'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/'

# GCP: fetch a service-account token
curl -H 'Metadata-Flavor: Google' \
  'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token'

Techniki omijania SSRF

Obrońcy często blokują adres 169.254.169.254. Atakujący omijają naiwne filtry za pomocą alternatywnych zapisów adresów IP i przekierowań.

  • Dziesiętny zapis IP: 2852039166
  • Ósemkowe i szesnastkowe zapisy tego samego adresu
  • DNS rebinding do nazwy rozwiązującej się na adres IP metadanych
  • Otwarte przekierowania kierujące żądanie do URL metadanych

Solidne zabezpieczenia muszą weryfikować rozpoznany adres IP, a nie surowy ciąg znaków.

# The metadata IP in alternate notations (all 169.254.169.254)
http://2852039166/latest/meta-data/
http://0251.0376.0251.0376/latest/meta-data/

Inne cele SSRF

Metadane są najważniejszym celem, ale SSRF umożliwia dostęp do większej liczby wewnętrznych zasobów:

  • Wewnętrzne panele administracyjne i pulpity dostępne na localhost
  • Wewnętrzne bazy danych i pamięci podręczne (Redis, Elasticsearch)
  • Serwer API Kubernetes i endpointy kubelet
  • Inne mikrousługi, które nie są wystawione na zewnątrz

SSRF skutecznie przebija granicę sieci z zaufanego punktu dostępu.

Obrona przed całym łańcuchem ataku

Przerwanie łańcucha SSRF prowadzącego do metadanych wymaga wielowarstwowej ochrony:

  • Wymuszenie IMDSv2 i ustawienie limitu przeskoków metadanych na 1
  • Weryfikowanie i umieszczanie na allowliście wychodzących URL-i w funkcjach pobierania
  • Blokowanie żądań do zakresów adresów link-local i prywatnych po rozpoznaniu DNS
  • Stosowanie zasady najmniejszych uprawnień wobec ról instancji, aby ograniczyć skutki kradzieży danych uwierzytelniających

Role z minimalnymi uprawnieniami sprawiają, że nawet skuteczna kradzież przynosi niewielkie korzyści.

Testowanie wyłącznie za zgodą

Testy SSRF mogą z założenia docierać do poufnych systemów wewnętrznych. Należy zachować dyscyplinę:

  • Potwierdzić, że docelowy host i konto w chmurze są objęte zakresem
  • Nie wykonywać ruchu do systemów spoza zakresu zlecenia
  • Przerwać testy i zgłosić wynik po potwierdzeniu dostępu do danych uwierzytelniających

Dostęp do metadanych ma duży wpływ na bezpieczeństwo, dlatego należy wykazać go ostrożnie i nie wykorzystywać bez ograniczeń skradzionych kluczy.

Szybki test

Dlaczego wymuszenie IMDSv2 pomaga chronić przed kradzieżą danych uwierzytelniających za pomocą SSRF?

Podsumowanie: metadane i SSRF

Poznali Państwo najistotniejszy łańcuch ataku charakterystyczny dla chmury.

  • Usługa metadanych pod adresem 169.254.169.254 udostępnia dane uwierzytelniające roli instancji
  • SSRF pozwala atakującemu nakłonić serwer do pobrania tego endpointu
  • Skradzione tymczasowe dane uwierzytelniające umożliwiają przejęcie konta
  • IMDSv2 blokuje większość ataków SSRF, wymagając tokenu uzyskiwanego za pomocą PUT
  • Należy stosować allowlisty URL-i, weryfikację adresów IP i role z minimalnymi uprawnieniami

To kończy kurs Cloud Pentesting. Następny kurs: Bug Bounty Hunting.

Bezpłatny start

Ucz się Ethical Hacking Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
31
Lekcje
111

Często zadawane pytania

Czy lekcja „Metadane i SSRF” jest bezpłatna?

Tak — pełny tekst „Metadane i SSRF” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ethical Hacking Academy, przejdź na CoddyKit PRO. Kurs Ethical Hacking Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Metadane i SSRF”?

Ataki specyficzne dla chmury Ćwiczysz Ethical Hacking Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Ethical Hacking Academy?

Nie wymagamy żadnego doświadczenia. Ethical Hacking Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Metadane i SSRF”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Ethical Hacking Academy?

Tak. Każda lekcja Ethical Hacking Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Powierzchnia ataku chmury
  2. Błędne konfiguracje IAM
  3. Ujawnienie S3 i danych w magazynach
  4. Metadane i SSRF
← Powrót do Ethical Hacking Academy