Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* 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 [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
Une vulnérabilité de **Server-side Request Forgery (SSRF)** se produit lorsqu'un attaquant manipule une **application côté serveur** pour effectuer des **requêtes HTTP** vers un domaine de son choix. Cette vulnérabilité expose le serveur à des requêtes externes arbitraires dirigées par l'attaquant.
La première chose à faire est de capturer une interaction SSRF générée par vous. Pour capturer une interaction HTTP ou DNS, vous pouvez utiliser des outils tels que :
Généralement, vous constaterez que le SSRF ne fonctionne que dans des **domaines ou URL spécifiques autorisés**. Sur la page suivante, vous trouverez une **compilation de techniques pour essayer de contourner cette liste blanche** :
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**. Comme la page web autorisera le **SSRF vers le même domaine** et suivra probablement les redirections, vous pouvez exploiter la **redirection ouverte pour amener le serveur à accéder à n'importe quelle ressource interne**.\
- Le schéma d'URL DICT est décrit comme étant utilisé pour accéder à des définitions ou des listes de mots via le protocole DICT. Un exemple donné illustre une URL construite ciblant un mot spécifique, une base de données et un numéro d'entrée, ainsi qu'une instance d'un script PHP potentiellement utilisé de manière abusive pour se connecter à un serveur DICT en utilisant des identifiants fournis par l'attaquant : `dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>`
- Identifié comme un protocole de transfert de fichiers sécurisé via shell sécurisé, un exemple est fourni montrant comment un script PHP pourrait être exploité pour se connecter à un serveur SFTP malveillant : `url=sftp://generic.com:11111/`
- Le protocole de transfert de fichiers trivial, fonctionnant sur UDP, est mentionné avec un exemple d'un script PHP conçu pour envoyer une requête à un serveur TFTP. Une requête TFTP est envoyée à 'generic.com' sur le port '12346' pour le fichier 'TESTUDPPACKET' : `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET`
- Ce segment couvre le protocole Lightweight Directory Access Protocol, en soulignant son utilisation pour gérer et accéder à des services d'annuaire distribués sur des réseaux IP. Interagissez avec un serveur LDAP en local : `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.`
- Une méthode est décrite pour exploiter les vulnérabilités SSRF pour interagir avec les services SMTP en local, y compris les étapes pour révéler les noms de domaine internes et les actions d'investigation supplémentaires basées sur ces informations.
- Si le SSRF est exécuté par **curl**, curl dispose d'une fonctionnalité appelée [**URL globbing**](https://everything.curl.dev/cmdline/globbing) qui pourrait être utile pour contourner les WAF. Par exemple, dans ce [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi), vous pouvez trouver cet exemple pour une **traversal de chemin via le protocole `file`**:
- La capacité du protocole Gopher à spécifier l'IP, le port et les octets pour la communication avec le serveur est discutée, aux côtés d'outils comme Gopherus et remote-method-guesser pour la création de charges utiles. Deux utilisations distinctes sont illustrées :
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 une SSRF pour **communiquer avec n'importe quel serveur TCP** (mais vous devez d'abord savoir comment parler au service).\
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_.
Les logiciels d'analyse sur les serveurs enregistrent souvent l'en-tête Referrer pour suivre les liens entrants, une pratique qui expose involontairement les applications aux vulnérabilités de falsification de requête côté serveur (SSRF). Cela est dû au fait que de tels logiciels peuvent visiter des URL externes mentionnées dans l'en-tête Referrer pour analyser le contenu du site de référence. Pour découvrir ces vulnérabilités, le plugin Burp Suite "**Collaborator Everywhere**" est recommandé, en exploitant la manière dont les outils d'analyse traitent l'en-tête Referer pour identifier les surfaces d'attaque SSRF potentielles.
Une mauvaise configuration qui pourrait permettre la connexion à n'importe quel backend via une configuration simple est illustrée avec un exemple de configuration Nginx :
Dans cette configuration, la valeur du champ Server Name Indication (SNI) est directement utilisée comme adresse du backend. Cette configuration expose une vulnérabilité à la falsification de requête côté serveur (SSRF), qui peut être exploitée en spécifiant simplement l'adresse IP ou le nom de domaine souhaité dans le champ SNI. Un exemple d'exploitation pour forcer une connexion à un backend arbitraire, tel que `internal.host.com`, en utilisant la commande `openssl`, est donné ci-dessous:
Si la page web crée automatiquement un PDF avec des informations que vous avez fournies, vous pouvez **insérer un peu de JS qui sera exécuté par le créateur de PDF** lui-même (le serveur) lors de la création du PDF et vous pourrez abuser d'un SSRF. [**Trouvez plus d'informations ici**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
Pour certaines exploitations, vous pourriez avoir besoin de **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:
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\
Si vous rencontrez des **problèmes** pour **exfiltrer du contenu depuis une IP locale** en raison de **CORS/SOP**, **DNS Rebidding** peut être utilisé pour contourner cette limitation :
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il inclut les composants nécessaires pour réattribuer l'adresse IP du serveur d'attaque au nom DNS de la machine cible et pour servir des charges utiles d'attaque pour exploiter les logiciels vulnérables sur la machine cible.
1. Demandez à l'utilisateur/robot d'accéder à un **domaine** contrôlé par l'**attaquant**
2. Le **TTL** du **DNS** est de **0** sec (donc la victime vérifiera bientôt l'IP du domaine à nouveau)
3. Une **connexion TLS** est créée entre la victime et le domaine de l'attaquant. L'attaquant introduit la **charge utile à l'intérieur** de l'**ID de Session ou du Ticket de Session**.
4. Le **domaine** commencera une **boucle infinie** de redirections contre **lui-même**. Le but est de faire en sorte que l'utilisateur/robot accède au domaine jusqu'à ce qu'il effectue **à nouveau** une **requête DNS** du domaine.
6. L'utilisateur/robot tentera de **rétablir la connexion TLS** et pour ce faire, il enverra l'**ID de Session/Ticket ID** (où la **charge utile** de l'attaquant était contenue). Félicitations, vous avez réussi à demander à l'utilisateur/robot de s'attaquer lui-même.
Notez que lors de cette attaque, si vous souhaitez attaquer localhost:11211 (_memcache_), vous devez faire en sorte que la victime établisse la connexion initiale avec www.attacker.com:11211 (le **port doit toujours être le même**).\
Pour **effectuer cette attaque, vous pouvez utiliser l'outil** : [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Pour **plus d'informations**, consultez la présentation 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)
La différence entre un SSRF aveugle et un SSRF non aveugle est que dans le cas du SSRF aveugle, vous ne pouvez pas voir la réponse de la requête SSRF. Il est donc plus difficile à exploiter car vous ne pourrez exploiter que des vulnérabilités bien connues.
En **vérifiant le temps** des réponses du serveur, il pourrait être **possible de savoir si une ressource existe ou non** (il se peut que l'accès à une ressource existante prenne plus de temps que l'accès à une ressource qui n'existe pas)
Si vous trouvez une vulnérabilité SSRF sur une machine s'exécutant dans un environnement cloud, vous pourriez obtenir des informations intéressantes sur l'environnement cloud et même des identifiants :
_remote-method-guesser_ est un scanner de vulnérabilité _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 prennent en charge 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.
SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour faire transiter le trafic HTTP client à travers des serveurs HTTP vulnérables aux requêtes forgées côté serveur (SSRF).
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* 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 [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\