Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

Usages offensifs de XSLT

APerçu

Les logiciels modernes sont très complexes

Beaucoup de code est rédigé par

des tierces parties

Code non audité

==

Code non fiable

Nous comptons exploiter

des fonctionnalités !

Pas des erreurs

de conception ou

d'implémentation

Fiabilité des exploits ++

;-)

XSLT ?

XSLT : XSL Transformations

http://www.w3.org/TR/xslt

Un langage pour transformer

un document XML

en un autre document

(XML, PDF, TXT, SVG, ...)

exemple #1

Exemple #2

MethodologIE

Choisir des moteurs XSLT

Enumérer leurs fonctionnalités

Standards

Générés automatiquement à partir

de {element|function}-available() et

d'une représentation XML de la norme

Extensions propriétaires

Documentation

Source code

Strings

IDA

Identifier celles dangereuses

Volontairement limité à :

- identification du moteur

- création de fichier

- exécution de code

Hors périmètre :

- accès en lecture (contournement de la SOP ?)

- fourniture d'entrées malformées (fuzzing)

Pour chaque fonctionnalité dangereuse, obtenir un PoC minimaliste

Règles :

- une seule fonctionnalité

- pas de conteneur

- pas d'obfuscation

- pas de charge utile

- testable en CLI

Pour chaque format envisagé, obtenir un "conteneur"

Tout contenEuR respecte un format dans lequel peuvent être INCLUSES des transformationS XSL

Tester de nombreuses applications

Profiter !

Risques

Standards

Comme la plupart des moteurs supportent XSLT 1.0 ...

... on peut facilement

identifier le moteur sous-jacent

Mais rien de bien dangereux ...

Extensions propriétaires

VulnERABILITéS

Liferay

CMS en Java

Commercial (ou pas)

Liste de réferences sur le site

(avec moteur de recherche ;-)

Evidemment, c'est "secure" !

Malgré l'utilisation de Xalan-J ? Hum ...

Altova

WEBKIT

Utilise libxslt

Création de fichiers :

- nom & chemin arbitraires

- le contenu doit être en UTF-8

Editeurs impactés :

- Apple (Safari, iPhone, iPad, ...)

- RIM (Blackberry Torch)

- distributions Linux (Epiphany, Lifera, ...)

- et d'autres !

Chrome n'est pas vulnérable,

grâce à sa sanbox

Le correctif est disponible depuis Février

Personne ne l'a appliqué :-(

VidEo : SAfari + MOF

PHP 5

Utilise libxslt

Patch #54446 :

validé le 28 Avril

trunk du 4 Juin :

toujours pas appliqué

:-(

Attendez, ce n'est pas fini ...

void XSLTProcessor::registerPHPFunctions ([ mixed $restrict ] )

Cette méthode permet d'utiliser les fonctions PHP en tant que fonctions XSLT dans les feuilles de style XSL

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:php="http://php.net/xsl"

version="1.0">

...

<xsl:value-of select="php:function('phpinfo')"/>

...

</xsl:stylesheet>

XMLSEC

Utilise libxslt

J'aime les solutions de sécurité qui ont des bugs de sécurité ;-)

Editeurs (potentiellement) impactés :

- solutions de PKI

- solutions de SSO (SAML)

- utilisateurs de SWIFT eBAM

- et bien d'autres !

Et si le moteur est Xalan-J ...

... c'est pire :-(

Quid des recommandations

du W3C ?

Elles ne sont que rarement suivies :-(

Divers

ExploitatioN

Exécution de code

Facile, il suffit d'utiliser un reverse-shell Java ou JScript

Contexte Web

Webshell PHP/JSP/CFM/...

Admin sous Windows

Stuxnet MOF

Création de fichier

Utilisateur sous Unix

Cf. "USB Autorun attacks against Linux"

par IBM X-Force

CONCLUSION

Questions ?

Ne faites pas confiance

Auditez chaque brique de chacune de vos applications critiques

Utilisez vos leviers (dont financiers) pour influencer les éditeurs

Clients

Il reste plein d'autres bugs, venez jouer ;-)

Hackers

Une implémentation (XML|SOAP)-dsig "état de l'art" ne devrait pas être vulnérable

Les premiers bulletins XSLT datent de 2001 :

Guninski vs Oracle

Un réglage fin permet souvent de désactiver les fonctionnalités dangereuses

XML

Xerces

Web Services

Axis

Spring

MVC

Journaux

log4j

AJAX

RichFaces

GRAPHS

JFreeChart

Lucene

Recherche

DAO

Hibernate

PDF

iText

AJAX

DWR

XSLT

Xalan J

Crypto

BouncyCastle

XSL-FO

FOP

Analyse ascendante

Même si l'éditeur est ApacHe !

Lisez, comprenez et appliquez les recommandations et erratas du W3C

Traitez correctement les chercheurs qui vous signalent des vulnérabilités

Soyez proactifs (défense en profondeur, ...)

Editeurs

http://fr.wikipedia.org/wiki/Quine_(informatique)

http://www.unidex.com/turing/utm.htm

http://www2.informatik.hu-berlin.de/~obecker/XSLT/

$> xsltproc catalog2xhtml.xsl catalog.xml > catalog.html

Transformation offline du XML en HTML

Ouverture du HTML dans un navigateur

Visualisation du contenu transformé

2 possibilités

Ouverture du XML dans un navigateur

Transformation à la volée en HTML

Visualisation du contenu transformé

Généralistes

Spécifiques

Presto (Opera) AltovaXML (Altova)

Transformiix (Firefox)

...

XSLT 2.0

libxslt (Gnome)

Saxon (Saxonica)

Xalan-J (Apache)

Xalan-C (Apache)

MSXML (Microsoft)

W3C - 2007

XSLT 1.1

W3C - 2001 - Draft

XSLT 1.0

W3C - 1999

XSLT 1.0

EXSLT

Communauté - WiP

Firefox 3.6.17

Dooble 0.07

Nicolas "nICOB" Gregoire

http://www.agarri.fr/

Excéution de code à distance

CVE-2011-1571

Video : Remote SHell

XHTML

SVG

Fait

XML-dsig

SOAP-dsig

SAML

SMIL

RSS

XACML

...

A creuser

...

MathML

...

ChemicalML

...

VRML

http://trac.webkit.org/changeset/79159

Visionneur d'images

Bureautique

Traitement de texte

...

SSO / SAML

Navigateur

CMS

Sécurité

Web

XMLDsig

Lecteur RSS

LiMitation : l'utilisateur doit appuyer sur F10

http://php.net/manual/fr/xsltprocessor.registerphpfunctions.php

http://www.swift.com/corporates/resources/Getting_Started/MIG_ISO20022/EBAM_Signature_Specifications.pdf

http://clawslab.nds.rub.de/wiki/index.php/XML_Signature_–_XSLT_Code_Execution

*

* : inclut aussi les fonctionnalités de XSLT 1.0

XSLT 2.0

W3C - 2007

XSLT 1.1

W3C - 2001 - Draft

XSLT 1.0

W3C - 1999

EXSLT

Communauté - WiP

libxslt

Xalan-J

libxslt

( execution de code )

( creation de fichier )

Dangereux

Altova

( execution de code )

Xalan-J

Saxon 9

( execution de code )

Sûr par défaut

MSXML 6

( execution de code )

Facile à

backdoorer

Xalan-C

Presto

Sans extension

dangereuse

Transformiix

Learn more about creating dynamic, engaging presentations with Prezi