Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2019-11581 — Atlassian Jira неавторизованная инъекция шаблонов | Kitploit
Инструменты/GitHubGitHub/petrusviet/cve-2019-11581
Анализ уязвимостейЭксплуатацияШелл-кодЭксплуатация веб-приложенийОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubpetrusviet/cve-2019-11581

CVE-2019-11581

Atlassian Jira неавторизованная инъекция шаблонов

Репозиторий
62704 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Неавторизованная инъекция шаблонов в Atlassian Jira (CVE-2019-11581)

I) Сборка

1. Уязвимые версии

4.4.x
5.x.x
6.x.x
7.0.x
7.1.x
7.2.x
7.3.x
7.4.x
7.5.x
7.6.x before 7.6.14 (the fixed version for 7.6.x)
7.7.x
7.8.x
7.9.x
7.10.x
7.11.x
7.12.x
7.13.x before 7.13.5 (the fixed version for 7.13.x)
8.0.x before 8.0.3 (the fixed version for 8.0.x)
8.1.x before 8.1.2 (the fixed version for 8.1.x)
8.2.x before 8.2.3 (the fixed version for 8.2.x)

2. Сборка и отладка

  • Измените значение set JVM_SUPPORT_RECOMMENDED_ARGS= в файле ./bin/setenv.bat (или аналогично в ./bin/setenv.sh для Linux), чтобы включить удаленную отладку
set JVM_SUPPORT_RECOMMENDED_ARGS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  • В IDE (Intellij) создаем конфигурацию отладки: Remote JVM Debug с параметрами host и port localhost:5005 и Command line arguments for remote JVM
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
  • Запустите ./bin/config.bat (или ./bin/config.sh для Linux) и измените "Jira home" на свою домашнюю директорию Jira image

  • Запустите ./bin/start-jira.bat (или ./bin/start-jira.sh для Linux). Проверьте, что версия Java и порты 8080 и 5005 свободны, иначе не запустится!

  • Выбираем private mode image

  • На этом этапе используйте email, на который можно получить письмо :) image

  • Настройте и протестируйте соединение image

  • По адресу http://localhost:8080/secure/admin/EditApplicationProperties!default.jspa включите функцию Contact Administrators Form image

  • Я лишь отмечаю некоторые моменты при сборке, вы можете обратиться к building jira from source

II) Анализ

После прочтения Advisory мы узнали, что эта ошибка находится в ContactAdministrators и SendBulkMail (это мы пропускаем, так как требуется аутентификация). Поэтому я начал тестировать функцию ContactAdministrators и перехватил запрос

image

  • Я увидел запрос к /secure/ContactAdministrators.jspa, поэтому посмотрел файл ./atlassian-jira/WEB-INF/web.xml, чтобы узнать, в какой класс направляется этот запрос
    image
    image

  • Таким образом, запрос обрабатывается в JiraWebworkActionDispatcher, поэтому я поставил точки останова на init и serve в этом классе и запустил отладку image

  • Программа остановилась на функции serve, немного проследив, программа перешла в ContactAdministrators.doExecute() image

  • Затем переходим к send, здесь программа выводит список активных администраторов image

  • Затем программа переходит к функции sendTo. Здесь мы видим, что программа создает MailQueueItem и добавляет его в mailQueue. image

  • Программа вызывает функцию EmailBuilder.withSubject. Здесь строка subject письма (отправленная атакующим) преобразуется из String в TemplateSources и присваивается параметру subjectTemplate класса EmailBuilder. image

  • В функции renderLater программа создает EmailRenderer и использует его для создания RenderingMailQueueItem image

  • Отсюда, возвращаясь к функции ContactAdministrators.sendTo. После создания MailQueueItem программа добавляет элемент в mailQueue и возвращается к doExecute для перенаправления. Если следовать этому потоку отладки, мы не можем перейти к части, где программа рендерит письмо, поэтому не можем добраться до места, где происходит инъекция шаблона. Что же делать, чтобы отследить обработку письма???

  • Я заметил, что в EmailRenderer есть функция renderNow (программа вызывает только renderLater). Я предположил, что когда письмо из очереди вызывается для рендеринга, оно будет следовать тому же потоку, что и renderNow, поэтому я решил трассировать от функции renderNow image

  • Из renderNow программа вызывает EmailRenderer.render(). Я поставил точку останова здесь и повторил запрос, чтобы проверить, действительно ли программа доходит до этого места image

  • К счастью, программа пошла по предполагаемому пути. Далее программа вызывает renderEmailSubject image

  • Далее программа вызывает DefaultVelocityTemplatingEngine.render(this.subjectTemplate) image

  • Доходим до DefaultVelocityTemplatingEngine.applying и DefaultVelocityTemplatingEngine.asPlainText image

  • Продолжаем вызов к asPlainText(Writer writer) image

  • Доходим до toWriterImpl, так как writer, который я передал, является Fragment, программа переходит к else

private void toWriterImpl(Writer writer, boolean attachCartridge) throws IOException {
            if (this.source instanceof File) {
                File template = (File)this.source;
                if (attachCartridge) {
                    this.context.attachEventCartridge(DefaultVelocityTemplatingEngine.this.createDefaultCartridge());
                }
Скачать инструмент