Exploitation d’une application web en utilisant l’injection CRLF

Méthode d’exploitation par injection CRLF

La méthode d’exploitation par injection CRLF (Carriage Return Line Feed) est une technique de piratage informatique qui consiste à insérer des séquences de caractères spéciales dans des entrées de données HTTP pour provoquer des vulnérabilités dans les applications web. Cette méthode tire parti des caractères CRLF, qui sont des codes de contrôle qui indiquent à un navigateur web de passer à la ligne suivante. Les pirates peuvent utiliser des séquences CRLF pour injecter des commandes malveillantes, des scripts ou des liens dans les requêtes HTTP et provoquer des attaques telles que le vol de session, le phishing et l’exécution de code arbitraire. Les développeurs peuvent prévenir les attaques CRLF en validant et en filtrant correctement les entrées de données HTTP, en utilisant des bibliothèques de codage sécurisées et en limitant les caractères spéciaux dans les entrées utilisateur.

Définition des Line feeds

Les lines feed sur Windows sont %0D%0A (CR suivi de LF) tandis que sur Unix utilise seulement %0A (LF)

GBK encoding

L’encodage GBK, également connu sous le nom de GuoBiao standard, est un encodage de caractères utilisé principalement en Chine. Il est une extension du jeu de caractères GB2312, qui couvre les caractères chinois les plus couramment utilisés, et ajoute des milliers d’autres caractères chinois, ainsi que des caractères de langues asiatiques telles que le coréen et le japonais. GBK utilise un codage à double octet pour représenter les caractères, ce qui permet de représenter un grand nombre de caractères tout en conservant une compatibilité avec GB2312. Cependant, GBK ne peut représenter que les caractères chinois simplifiés, pas les caractères traditionnels.

嘊 = %E5%98%8A = \u560a ⇒ %0A (LF; Line Feed)

嘍 = %E5%98%8D = \u560d ⇒ %0D (CR; Carriage Return)

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

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

嘢 = %E5%98%A2 = \u5622 ⇒ %22 (‘)

嘧 = %E5%98%A7 = \u5627 ⇒ %27 (“)

Exemple de Payload pour injection CRLF

%0D%0A%20Set-Cookie:whoami=germain
%20%0D%0ASet-Cookie:whoami=germain
%0A%20Set-Cookie:whoami=germain
%2F%2E%2E%0D%0ASet-Cookie:whoami=germain

Par exemple, l’injection pourrait se faire via le URL ou un des paramètres de la méthode POST (ou GET)

https://site.mysite.com/%E5%98%8D%E5%98%8ASet-Cookie:whoami=thecyberneh%E5%98%8D%E5%98%8A%E5%98%8D%E5%98%8A%E5%98%8D%E5%98%8A%E5%98%BCscript%E5%98%BEalert(1);%E5%98%BC/script%E5%98%BE

Méthode utilisé pour injection CRLF

Souvent , le firewall bloque les requêtes contenant des requêtes non autorisés. On peut alors essayer d’encoder ces caractères (par exemple avec l’encode GBK). On commence le payload avec un CRLF et on le fait suivre par exemple de Set-Cookie:whoami=germain (le payload utile) et de deux CRLF pour l’insertion d’une ligne blanche. Ce qui permet l’insertion d’une ligne blanche et signale la fin des headers au client. Après les lignes blanches, on met notre payload HTML (toujours encodé en GBK)

Méthodes d’encodage

Vous pouvez essayer différentes méthodes d’encodage pour déjouer le bastillon (firewall)

  1. UTF-8 (Unicode Transformation Format-8)
  2. UTF-16 (Unicode Transformation Format-16)
  3. UTF-32 (Unicode Transformation Format-32)
  4. GBK (GuoBiao standard), qui est une extension du jeu de caractères GB2312 et permet de représenter des milliers de caractères chinois simplifiés, ainsi que des caractères de langues asiatiques telles que le coréen et le japonais.
  5. GB18030, une extension de GBK qui permet de représenter tous les caractères chinois, y compris les caractères traditionnels.
  6. BIG5 (Chinese Industrial Standard), qui est utilisé principalement à Taiwan et Hong Kong pour représenter les caractères chinois traditionnels.
  7. EUC-JP (Extended Unix Code-Japan), qui est utilisé pour représenter les caractères japonais.
  8. EUC-KR (Extended Unix Code-Korea), qui est utilisé pour représenter les caractères coréens.
  9. ISO-8859-1 (International Organization for Standardization), également connu sous le nom de Latin-1, qui est utilisé pour représenter les caractères européens occidentaux.

En image

Ressources

Exploiter des vulnérabilités CRLF

Exploiter des vulnérabilités XSS

Exploiter en compressant les données pour outrepasser un bastillon

Leave a Reply