Sploitus

Exploit for cve-2017-12629 CVE-2017-12629

kitploit · 2026-08-25

Exploit Code

MARKDOWN30 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CAPTAIN-WOOF-CVE-2017-12629
# README

Удаленное выполнение кода происходит в Apache Solr до версии 7.1 с Apache Lucene до версии 7.1 путем эксплуатации XXE в сочетании с использованием команды add-listener API конфигурации для достижения класса RunExecutableListener. Elasticsearch, хотя и использует Lucene, НЕ уязвим к этому. Обратите внимание, что уязвимость расширения внешних сущностей XML возникает в синтаксическом анализаторе запросов XML, который доступен по умолчанию для любого запроса с параметрами deftype=xmlparser, и может быть использована для загрузки вредоносных данных в обработчик запросов /upload или как Blind XXE с использованием оболочки ftp для чтения произвольных локальных файлов с сервера Solr. Также обратите внимание, что вторая уязвимость связана с удаленным выполнением кода с использованием RunExecutableListener, доступного на всех затронутых версиях Solr.

# Использование

Вывод команды необходимо извлечь за пределы канала (OOB). Эта POC включает поддержку форматов Hex и Base32, которые оба нечувствительны к регистру.

root@kitploit:~
    
    
    usage: rce.py [-h] -ue URL_BASE_EXTERNAL -ui URL_BASE_INTERNAL [-b {curl,wget,ftp,ping,nc,ncat,nslookup,dig}] -e EXFIL
                  [-f {hex,base32}]
    
    POC for CVE-2017-12629 (RCE via internal SSRF via XXE) by @realCaptainWoof
    
    options:
      -h, --help            show this help message and exit
      -ue, --url-base-external URL_BASE_EXTERNAL
                            External URL base of the vulnerable application; e.g, 'https://vulnerable.app/solr'
      -ui, --url-base-internal URL_BASE_INTERNAL
                            Internal URL base of the vulnerable application; e.g, 'https://127.0.0.1:8983'; default:
                            'https://127.0.0.1:8983'
      -b, --bin {curl,wget,ftp,ping,nc,ncat,nslookup,dig}
                            How to exfiltrate command output from target; default: 'curl'
      -e, --exfil EXFIL     Destination to exfil to. Make sure this corresponds to '--bin'; e.g, if '--bin' is 'curl', '--exfil' can
                            be 'http://EXFIL.myserver.com/EXFIL'. Must specify injection point via 'EXFIL' keyword.
      -f, --exfil-format {hex,base32}
                            Format in which to exfil the command output; default: 'base32'