SSTIC 2011 - Injections XSLT


Usages offensifs d’XSLT

Il s’agit d’utiliser les fonctionnalités des moteurs XSLT et non des erreurs de conception ou de codage, ce qui rend l’exploitation sûre voire cross platform.

XSLT sert à transformer un document XML en autre chose (SVG, text, XML, HTML…). Il s’agit d’un vrai langage de programmation turing complet !!! L’auteur nous rappelle les principes de fonctionnement de XSLT (allez voir w3school pour l’exemple). Exemple avec Nmap et sa sortie XML qu’on peut transformer en HTML.

La méthodologie consiste à lister les implémentations XSLT, d’en lister les fonctionnalités à la recherche de fonctionnalités dangereuses, puis d’écrire un PoC d’exploitation pour chaque fonctionnalité dangereuse, et enfin de tester ça contre des applications !!

Le plus dur dans les attaques à base d’XSLT, c’est de trouver un conteneur sur lequel sera appelé le moteur XSLT… Coté fonctionnalités, on a possibilité de faire du fingerprinting, de lire des fichiers, d’écrire des fichiers et d’exécuter du code !

S’en suit une série de moteurs vulnérables et transitivement toute application utilisant ce moteur est potentiellement vulnérable 😀

La ou ça devient fun, c’est les vulns sur PHP lié a libxslt qui ne sont toujours pas patchées !!! Quand aux recommandations du W3C concernant la sécurité et l’usage d’XSLT, elles ne sont pas suivies…

Ca promet une belle pelleté de failles !!!