↩️CRLF

Le terme CRLF fait référence à Retour chariot ( CR, \r ) et Saut de ligne ( LF, \n ). Ils sont utilisés pour noter la terminaison d'une ligne, cependant, ils sont traités différemment dans les systèmes d'exploitation populaires d'aujourd'hui. Par exemple : sous Windows, un CR et un LF sont requis pour noter la fin d'une ligne, alors que sous Linux/UNIX, un LF est uniquement requis. Dans le protocole HTTP, la séquence CR-LF est toujours utilisée pour terminer une ligne.

Contexte

Pour cette vulnérabilité, imaginons une requête donnant une réponse telle que:

Connection: keep-alive
Content-Length: 178
Content-Type: text/html
Date: Mon, 09 May 2016 14:47:29 GMT
Location: https://www.example.com/location/path/here
X-Frame-Options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 1; mode=block

<content>

Vérification de la vulnérabilité

Dans un premier temps, nous allons vérifier si il est possible de faire une simple injection CRLF dans l'url avec le payload %0D%0A (possibilité de tester des payloads plus avancés pour être certain).

URL:

https://exemple.com/%0D%0ASet-Cookie:mycookie=S1rN3tZ    

Si l'injection fonctionne, alors nous aurons le résultat suivant:

Injections Avancées

Il est alors possible de combiner cette injection sans impacte avec d'autres pour augmenter l'impact de celle-ci.

CRLF to XSS

URL:

Résultat:

CRLF injection + HTML injection

URL:

Réponse:

Essayer sur HTTPS et HTTP

Payloads

☠️Charges utiles

Bypass

GBK encoding

  • %E5%98%8A = %0A = \u560a

  • %E5%98%8D = %0D = \u560d

  • %E5%98%BE = %3E = \u563e (>)

  • %E5%98%BC = %3C = \u563c (<)

Outils

crlfuzz

crlfuzz est un scanner de vulnérabilités CRLF.

Exemple d'utilisation:

$ crlfuzz -u "https://target.com"

ressource: https://github.com/dwisiswant0/crlfuzz

Ressource

https://infosecwriteups.com/6000-with-microsoft-hall-of-fame-microsoft-firewall-bypass-crlf-to-xss-microsoft-bug-bounty-8f6615c47922

Mis à jour

Ce contenu vous a-t-il été utile ?