↩️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:
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:
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 utilesBypass
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
Dernière mise à jour