<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</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)!
* 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.
**Conseil de prime à la faille** : **inscrivez-vous** à **Intigriti**, une plateforme de prime à la faille premium créée par des pirates informatiques, pour des pirates informatiques ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** !
Le retour chariot (CR) et le saut de ligne (LF), collectivement connus sous le nom de CRLF, sont des séquences de caractères spéciaux utilisées dans le protocole HTTP pour indiquer la fin d'une ligne ou le début d'une nouvelle. Les serveurs Web et les navigateurs utilisent CRLF pour distinguer entre les en-têtes HTTP et le corps d'une réponse. Ces caractères sont universellement utilisés dans les communications HTTP/1.1 sur différents types de serveurs Web, tels que Apache et Microsoft IIS.
L'injection CRLF implique l'insertion des caractères CR et LF dans une entrée fournie par l'utilisateur. Cette action induit en erreur le serveur, l'application ou l'utilisateur en interprétant la séquence injectée comme la fin d'une réponse et le début d'une autre. Bien que ces caractères ne soient pas intrinsèquement nocifs, leur mauvais usage peut entraîner des divisions de réponse HTTP et d'autres activités malveillantes.
Considérez un fichier journal dans un panneau d'administration qui suit le format : `IP - Heure - Chemin visité`. Une entrée typique pourrait ressembler à :
Un attaquant peut exploiter une injection CRLF pour manipuler ce journal. En injectant des caractères CRLF dans la requête HTTP, l'attaquant peut modifier le flux de sortie et fabriquer des entrées de journal. Par exemple, une séquence injectée pourrait transformer l'entrée de journal en :
L'attaquant camoufle ainsi ses activités malveillantes en faisant apparaître que le localhost (une entité généralement de confiance dans l'environnement du serveur) a effectué les actions. Le serveur interprète la partie de la requête commençant par `%0d%0a` comme un seul paramètre, tandis que le paramètre `restrictedaction` est analysé comme une autre entrée distincte. La requête manipulée imite efficacement une commande administrative légitime : `/index.php?page=home&restrictedaction=edit`
Le fractionnement de réponse HTTP est une vulnérabilité de sécurité qui survient lorsqu'un attaquant exploite la structure des réponses HTTP. Cette structure sépare les en-têtes du corps en utilisant une séquence de caractères spécifique, un retour chariot (CR) suivi d'une avance de ligne (LF), collectivement appelé CRLF. Si un attaquant parvient à insérer une séquence CRLF dans un en-tête de réponse, il peut manipuler efficacement le contenu de la réponse suivante. Ce type de manipulation peut entraîner de graves problèmes de sécurité, notamment les attaques de type Cross-site Scripting (XSS).
2. L'application récupère la valeur pour `UserInput` à partir d'un paramètre de requête, disons "user\_input". Dans les scénarios sans validation et encodage d'entrée appropriés, un attaquant peut créer une charge utile qui inclut la séquence CRLF, suivie d'un contenu malveillant.
3. Un attaquant crée une URL avec un 'user\_input' spécialement conçu : `?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>`
* Dans cette URL, `%0d%0a%0d%0a` est la forme encodée en URL de CRLFCRLF. Cela trompe le serveur en insérant une séquence CRLF, faisant en sorte que le serveur traite la partie suivante comme le corps de la réponse.
4. Le serveur reflète l'entrée de l'attaquant dans l'en-tête de réponse, entraînant une structure de réponse non intentionnelle où le script malveillant est interprété par le navigateur comme faisant partie du corps de la réponse.
Depuis [https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62](https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62)
Vous pouvez envoyer la charge utile **à l'intérieur du chemin de l'URL** pour contrôler la **réponse** du serveur (exemple provenant de [ici](https://hackerone.com/reports/192667)):
L'injection d'en-tête HTTP, souvent exploitée via l'injection CRLF (Retour chariot et saut de ligne), permet aux attaquants d'insérer des en-têtes HTTP. Cela peut compromettre les mécanismes de sécurité tels que les filtres XSS (Cross-Site Scripting) ou la politique SOP (Same-Origin Policy), conduisant potentiellement à un accès non autorisé à des données sensibles, telles que des jetons CSRF, ou à la manipulation des sessions utilisateur via l'implantation de cookies.
Un attaquant peut injecter des en-têtes HTTP pour activer CORS (Cross-Origin Resource Sharing), contournant ainsi les restrictions imposées par SOP. Cette violation permet à des scripts provenant d'origines malveillantes d'interagir avec des ressources d'une origine différente, potentiellement accédant à des données protégées.
L'injection CRLF peut être utilisée pour créer et injecter une toute nouvelle requête HTTP. Un exemple notable de cela est la vulnérabilité dans la classe `SoapClient` de PHP, spécifiquement dans le paramètre `user_agent`. En manipulant ce paramètre, un attaquant peut insérer des en-têtes supplémentaires et du contenu de corps, voire injecter entièrement une nouvelle requête HTTP. Voici un exemple en PHP illustrant cette exploitation:
Pour plus d'informations sur cette technique et les problèmes potentiels [**consultez la source originale**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
Vous pouvez injecter des en-têtes essentiels pour vous assurer que le **serveur garde la connexion ouverte** après avoir répondu à la requête initiale:
Après, une deuxième requête peut être spécifiée. Ce scénario implique généralement [la contrebande de requête HTTP](http-request-smuggling/), une technique où des en-têtes supplémentaires ou des éléments de corps ajoutés par le serveur post-injection peuvent entraîner divers exploits de sécurité.
1.**Injection de Préfixe Malveillant**: Cette méthode implique de polluer la prochaine requête de l'utilisateur ou un cache web en spécifiant un préfixe malveillant. Un exemple de ceci est :
2.**Création d'un Préfixe pour l'Empoisonnement de la File de Réponses**: Cette approche implique de créer un préfixe qui, combiné avec des données inutiles, forme une deuxième requête complète. Cela peut déclencher un empoisonnement de la file de réponses. Un exemple est :
Si une plateforme prend **des données d'une requête HTTP et les utilise sans les désinfecter** pour effectuer des **requêtes** vers un serveur **memcache**, un attaquant pourrait abuser de ce comportement pour **injecter de nouvelles commandes memcache**.
Par exemple, dans la vulnérabilité découverte initialement, des clés de cache étaient utilisées pour renvoyer l'IP et le port auquel un utilisateur devait se connecter, et les attaquants pouvaient **injecter des commandes memcache** qui **empoisonnaient** le **cache pour envoyer les détails des victimes** (noms d'utilisateur et mots de passe inclus) aux serveurs des attaquants :
De plus, les chercheurs ont également découvert qu'ils pouvaient désynchroniser les réponses memcache pour envoyer les adresses IP et les ports des attaquants aux utilisateurs dont l'email n'était pas connu de l'attaquant :
Pour atténuer les risques d'injections CRLF (Retour chariot et Saut de ligne) ou d'en-têtes HTTP dans les applications web, les stratégies suivantes sont recommandées :
1.**Éviter les Entrées Utilisateur Directes dans les En-têtes de Réponse** : La meilleure approche est de s'abstenir d'incorporer directement les entrées fournies par l'utilisateur dans les en-têtes de réponse.
2.**Encoder les Caractères Spéciaux** : Si éviter les entrées utilisateur directes n'est pas possible, assurez-vous d'utiliser une fonction dédiée à l'encodage des caractères spéciaux comme CR (Retour chariot) et LF (Saut de ligne). Cette pratique empêche la possibilité d'injection CRLF.
3.**Mettre à Jour le Langage de Programmation** : Mettez régulièrement à jour le langage de programmation utilisé dans vos applications web vers la dernière version. Optez pour une version qui interdit intrinsèquement l'injection de caractères CR et LF dans les fonctions chargées de définir les en-têtes HTTP.
**Conseil de prime de bug**: **inscrivez-vous** sur **Intigriti**, une plateforme de prime de bug premium créée par des hackers, pour des hackers! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**!
<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)!
* 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.