Co to jest SSRF?

4 lipca 2024

SSRF, czyli Server-Side Request Forgery, to jedna z poważniejszych podatności w aplikacjach webowych, która pozwala atakującym na manipulowanie serwerem w celu wykonania nieautoryzowanych zapytań do zasobów wewnętrznych lub zewnętrznych. Może to prowadzić do wycieku poufnych informacji, ujawnienia wewnętrznej struktury sieci, a nawet umożliwić dalsze ataki na inne serwery. Z uwagi na częstość występowania SSRF zostało również uwzględnione w dokumencie Owasp Top Ten.

Czym jest Server-Side Request Forgery (SSRF)?

Podatność SSRF występuje, gdy aplikacja webowa pobiera zasoby z innych serwerów na podstawie danych dostarczonych przez użytkownika, nie walidując przy tym odpowiednio danych wejściowych. W efekcie, atakujący może nakłonić serwer do wysyłania żądań HTTP do dowolnego adresu, co może prowadzić do uzyskania dostępu do zasobów wewnętrznych, pozornie nie dostępnych z poziomu Internetu.

Na czym polega atak SSRF?

Typowy atak SSRF przebiega zazwyczaj według następującego schematu:

  1. Wykrycie podatnoÅ›ci – AtakujÄ…cy odkrywa, że aplikacja webowa umożliwia użytkownikom wprowadzenie adresu URL, który jest nastÄ™pnie używany do wykonania żądania przez serwer.
  2. Przygotowanie zÅ‚oÅ›liwego żądania – AtakujÄ…cy dostarcza zÅ‚oÅ›liwy URL, który kieruje żądanie do wewnÄ™trznego serwera lub usÅ‚ugi.
  3. Wykonanie żądania przez serwer – Serwer wykonuje zÅ‚oÅ›liwe żądanie, co może prowadzić do pozyskania wrażliwych danych, informacji o sieci wewnÄ™trzenej, czy umożliwić atakujÄ…cemu na wykonanie ataków w gÅ‚Ä…b sieci lokalnej.
ssrf

Jakie są rodzaje ataków SSRF?

Wyróżniamy kilka głównych typów ataków SSRF:

  1. Podstawowy SSRF – AtakujÄ…cy wykorzystuje podatność do wysyÅ‚ania żądaÅ„ HTTP do wewnÄ™trznych zasobów serwera, takich jak bazy danych, serwery aplikacyjne czy inne usÅ‚ugi sieciowe.
  2. Blind SSRF – AtakujÄ…cy nie otrzymuje bezpoÅ›redniej odpowiedzi od serwera, ale może obserwować skutki żądania, np. poprzez monitorowanie logów lub zachowanie aplikacji.
  3. SSRF z eskalacją do RCE – Atakujący wykorzystuje podatność SSRF do przeprowadzania kolejnych ataków na sieć lokalną – w szczególności do ataku na serwery nie dostępne z poziomu Internetu.

Jakie mogą być konsekwencje ataku SSRF?

Skutki udanego ataku SSRF mogą być poważne, zarówno dla użytkowników, jak i dla twórców oprogramowania:

  • Ujawnienie wewnÄ™trznej struktury sieci – AtakujÄ…cy może uzyskać informacje na temat sieci wewnÄ™trznej, co uÅ‚atwia dalsze ataki.
  • DostÄ™p do wewnÄ™trznych zasobów – Możliwość uzyskania dostÄ™pu do baz danych, serwerów aplikacyjnych i innych zasobów wrażliwych.
  • Kradzież danych – Możliwość uzyskania poufnych informacji, takich jak klucze API (w szczególnoÅ›ci w chmurze), dane użytkowników, hasÅ‚a itp.
  • Atak na serwery lokalne – AtakujÄ…cy uzyskuje dostÄ™p sieciowy do serwisów nie dostÄ™pnych z poziomu internetu które najczÄ™sciej nie sÄ… tak dobrze zabezpieczone.

Jakie są sposoby wykrywania podatności SSRF?

Aby wykryć podatność SSRF w aplikacji webowej, można zastosować różne podejścia:

  • Manualne testowanie – RÄ™czne wprowadzanie potencjalnie niebezpiecznych adresów URL do pól formularzy i obserwowanie reakcji aplikacji.
  • Skanowanie automatyczne – Użycie skanerów takich jak np. Burp Suite czy Owasp ZAP, które skanujÄ… aplikacjÄ™ pod kÄ…tem podatnoÅ›ci typu SSRF.
  • Statyczna analiza kodu – PrzeglÄ…d kodu źródÅ‚owego aplikacji w poszukiwaniu niebezpiecznych funkcji i brakujÄ…cych mechanizmów filtrowania danych.

Jak zabezpieczyć się przed atakami SSRF?

W celu zabezpieczenia przed atakami SSRF można zastosować:

  1. Walidacja danych wejÅ›ciowych – Dane wprowadzane przez użytkowników powinny być sprawdzane pod kÄ…tem obecnoÅ›ci niepożądanych adresów URL. Należy stosować listy dozwolonych wartoÅ›ci (whitelisting), które okreÅ›lajÄ…, jakie adresy URL sÄ… akceptowalne.
  2. Ograniczenie zakresu żądaÅ„ HTTP – Ograniczyć możliwość wykonywania żądaÅ„ HTTP tylko do zaufanych adresów i zasobów. Należy stosować listy dozwolonych adresów (whitelisting) na poziomie aplikacji.
  3. Izolacja serwerów – Izolować serwery, które wykonujÄ… zewnÄ™trzne żądania, od wewnÄ™trznej sieci, aby ograniczyć potencjalne skutki ataku.
  4. Używanie firewalli aplikacyjnych – Wdrażanie firewalli aplikacyjnych (WAF), które mogÄ… monitorować i blokować podejrzane żądania HTTP.
  5. Regularne testy bezpieczeÅ„stwa – Regularne przeprowadzanie testów penetracyjnych i skanów bezpieczeÅ„stwa w celu wykrywania i naprawy podatnoÅ›ci SSRF.
  6. Edukacja programistów – Szkolenie programistów w zakresie bezpiecznego kodowania i Å›wiadomoÅ›ci na temat wystÄ™pujÄ…cych podatnoÅ›ci.

Autor: Grzegorz Zych, Trener HackerU

Główne zainteresowania: bezpieczeństwo aplikacji webowych, DevSecOps, analiza kodu źródłowego.