Sploitus

Exploit for asf__nifi_CVE-2023-34468_1-21-00

kitploit · 2026-08-25

Exploit Code

MARKDOWN391 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHOUCHENG3-ASF__NIFI_CVE-2023-34468_1-21-00
![Apache NiFi](https://nifi.apache.org/assets/images/apache-nifi-logo.svg)

![ci-workflow](https://github.com/apache/nifi/workflows/ci-workflow/badge.svg) ![system-tests](https://github.com/apache/nifi/workflows/system-tests/badge.svg) ![Docker pulls](https://img.shields.io/docker/pulls/apache/nifi.svg) ![Version](https://img.shields.io/maven-central/v/org.apache.nifi/nifi-utils.svg) ![Slack](https://img.shields.io/badge/chat-on%20Slack-brightgreen.svg)

Apache NiFi — это простая в использовании, мощная и надежная система для обработки и распределения данных.

## Содержание

  * Возможности
  * Требования
  * Начало работы
  * Подпроект MiNiFi
  * Подпроект Registry
  * Получение помощи
  * Документация
  * Лицензия
  * Экспортный контроль



## Возможности

Apache NiFi создан для потоков данных. Он поддерживает высококонфигурируемые ориентированные графы маршрутизации данных, преобразования и логики системного посредничества. Некоторые из его ключевых возможностей включают:

  * Веб-интерфейс 
    * Бесшовный опыт проектирования, управления и мониторинга
    * Многопользовательский интерфейс
  * Высокая конфигурируемость 
    * Устойчивость к потерям против гарантированной доставки
    * Низкая задержка против высокой пропускной способности
    * Динамическая приоритизация
    * Изменение потоков во время выполнения
    * Обратное давление
    * Вертикальное масштабирование для использования полных возможностей машины
    * Горизонтальное масштабирование с моделью кластеризации без лидера
  * Происхождение данных 
    * Отслеживание потока данных от начала до конца
  * Предназначен для расширения 
    * Создавайте собственные процессоры и многое другое
    * Обеспечивает быструю разработку и эффективное тестирование
  * Безопасность 
    * SSL, SSH, HTTPS, шифрование контента и т. д.
    * Подключаемая тонко настраиваемая аутентификация/авторизация на основе ролей
    * Несколько команд могут управлять отдельными частями потока и делиться ими



## Минимальные рекомендации

  * JDK 11.0.16
  * Apache Maven 3.8.6



## Минимальные требования

  * JDK 8 Update 251
  * Apache Maven 3.6.0



## Начало работы

Ознакомьтесь с кратким руководством для разработчиков. Оно содержит информацию о получении локальной копии исходного кода, указания по отслеживанию проблем, а также предупреждения о распространенных проблемах с окружениями разработки.

Более полное руководство по разработке и информацию о внесении вклада в проект вы найдете в Руководстве разработчика NiFi.

### Сборка

Выполните `mvn clean install` или для параллельной сборки выполните `mvn -T 2.0C clean install`.

Параллельная сборка на современном оборудовании должна занять около пятнадцати минут.

root@kitploit:~
    
    
    laptop:nifi myuser$ mvn -T 2.0C clean install
    [INFO] Scanning for projects...
    [INFO] Inspecting build with total of 115 modules...
        ...tens of thousands of lines elided...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 09:24 min (Wall Clock)
    [INFO] Finished at: 2015-04-30T00:30:36-05:00
    [INFO] Final Memory: 173M/1359M
    [INFO] ------------------------------------------------------------------------
    

Выполните `mvn clean install -DskipTests`, чтобы пропустить выполнение модульных тестов.

### Развертывание

Перейдите в каталог `nifi-assembly`. В каталоге `target` содержатся бинарные архивы.

root@kitploit:~
    
    
    laptop:nifi myuser$ cd nifi-assembly
    laptop:nifi-assembly myuser$ ls -lhd target/nifi*
    drwxr-xr-x  3 myuser  mygroup   102B Apr 30 00:29 target/nifi-1.0.0-SNAPSHOT-bin
    -rw-r--r--  1 myuser  mygroup   144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.tar.gz
    -rw-r--r--  1 myuser  mygroup   144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.zip
    

Скопируйте `nifi-VERSION-bin.tar.gz` или `nifi-VERSION-bin.zip` в отдельный каталог развертывания. Извлечение дистрибутива создаст новый каталог, названный в честь версии.

root@kitploit:~
    
    
    laptop:nifi-assembly myuser$ mkdir ~/example-nifi-deploy
    laptop:nifi-assembly myuser$ tar xzf target/nifi-*-bin.tar.gz -C ~/example-nifi-deploy
    laptop:nifi-assembly myuser$ ls -lh ~/example-nifi-deploy/
    total 0
    drwxr-xr-x  10 myuser  mygroup   340B Apr 30 01:06 nifi-1.0.0-SNAPSHOT
    

### Запуск

Перейдите в каталог развертывания и выполните следующую команду для запуска NiFi.

root@kitploit:~
    
    
    laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
    laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
    

Запуск `bin/nifi.sh start` запускает NiFi в фоновом режиме и завершает работу. Используйте `--wait-for-init` с необязательным таймаутом в секундах, чтобы дождаться полного запуска перед завершением.

root@kitploit:~
    
    
    laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
    

### Аутентификация

Конфигурация по умолчанию генерирует случайные имя пользователя и пароль при запуске. NiFi записывает сгенерированные учетные данные в журнал приложения, расположенный в `logs/nifi-app.log` в каталоге установки NiFi.

Следующая команда может использоваться для поиска сгенерированных учетных данных в операционных системах с установленным `grep`:

root@kitploit:~
    
    
    laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
    

NiFi регистрирует сгенерированные учетные данные следующим образом:

root@kitploit:~
    
    
    Generated Username [USERNAME]
    Generated Password [PASSWORD]
    

Значение `USERNAME` будет случайным UUID, состоящим из 36 символов. Значение `PASSWORD` будет случайной строкой, состоящей из 32 символов. Сгенерированные учетные данные будут сохранены в `conf/login-identity-providers.xml`, при этом пароль хранится с использованием хеширования bcrypt. Запишите эти учетные данные в надежном месте для доступа к NiFi.

Случайные имя пользователя и пароль можно заменить собственными учетными данными с помощью следующей команды:

root@kitploit:~
    
    
    ./bin/nifi.sh set-single-user-credentials <username> <password>
    

### Доступ к NiFi

Откройте следующую ссылку в веб-браузере для доступа к NiFi: https://localhost:8443/nifi

Веб-браузер отобразит предупреждение о потенциальном риске безопасности из-за самозаверяющего сертификата, сгенерированного NiFi во время инициализации. Для первоначальных установок в целях разработки можно принять потенциальный риск безопасности и продолжить загрузку интерфейса. Для production-развертываний следует предоставить сертификат от доверенного центра сертификации и обновить конфигурацию keystore и truststore в NiFi.

После принятия самозаверяющего сертификата доступ к NiFi отобразит экран входа в систему. ![NiFi Login Screen](https://assets.kitploit.com/production/public/readmes/32453/91318b8b7461e295a61bacf31333295ecabdb4bb4878efdf4636c45855ca58ee.png)

Используя сгенерированные учетные данные, введите сгенерированное имя пользователя в поле `User` и сгенерированный пароль в поле `Password`, затем выберите `LOG IN` для доступа к системе. ![NiFi Flow Authenticated Screen](https://assets.kitploit.com/production/public/readmes/32453/44083446cde976bfc9856a8ec0cf21047f5af964f70dd27e9961799b06bd429c.png)

### Настройка

В Руководстве пользователя NiFi описано, как построить поток данных.

### Остановка

Выполните следующую команду для остановки NiFi:

root@kitploit:~
    
    
    laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
    laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
    

## Подпроект MiNiFi

MiNiFi — дочерний проект Apache NiFi. Это дополнительный подход к сбору данных, который дополняет основные принципы NiFi в управлении потоками данных, сосредоточенный на сборе данных в источнике их создания.

Конкретные цели MiNiFi включают:

  * небольшой и легковесный размер;
  * централизованное управление агентами;
  * генерацию данных о происхождении;
  * интеграцию с NiFi для последующего управления потоком данных и полной цепочки контроля информации.



Роль MiNiFi следует рассматривать с точки зрения агента, действующего непосредственно на исходных датчиках, системах или серверах или непосредственно рядом с ними.

Для запуска:

  * Перейдите в каталог 'minifi-assembly'. В каталоге target должна находиться сборка minifi.

root@kitploit:~
        
        $ cd minifi-assembly
          $ ls -lhd target/minifi*
          drwxr-xr-x  3 user  staff   102B Jul  6 13:07 minifi-1.14.0-SNAPSHOT-bin
          -rw-r--r--  1 user  staff    39M Jul  6 13:07 minifi-1.14.0-SNAPSHOT-bin.tar.gz
          -rw-r--r--  1 user  staff    39M Jul  6 13:07 minifi-1.14.0-SNAPSHOT-bin.zip
        

  * Для тестирования текущей разработки можно использовать уже распакованную сборку в каталоге с именем "minifi-_version_ -bin", где _version_ — текущая версия проекта. Для развертывания в другом месте используйте tar-архив или zip-файл и распакуйте их там, где вам удобно. Дистрибутив будет находиться в общем родительском каталоге, названном в честь версии.

root@kitploit:~
        
        $ mkdir ~/example-minifi-deploy
          $ tar xzf target/minifi-*-bin.tar.gz -C ~/example-minifi-deploy
          $ ls -lh ~/example-minifi-deploy/
          total 0
          drwxr-xr-x  10 user  staff   340B Jul 6 01:06 minifi-1.14.0-SNAPSHOT
        




Для запуска MiNiFi:

  * Перейдите в каталог, куда вы установили MiNiFi, и запустите его.

root@kitploit:~
        
        $ cd ~/example-minifi-deploy/minifi-*
          $ ./bin/minifi.sh start
        

  * Просмотрите журналы в папке logs $ tail -F ~/example-minifi-deploy/logs/minifi-app.log

  * За помощью в создании первого потока данных и отправке данных в экземпляр NiFi обратитесь к руководству системного администратора, расположенному в папке docs, или используйте minifi-toolkit, который помогает адаптировать шаблоны NiFi к формату файла конфигурации MiNiFi YAML.

  * Если вы тестируете текущую разработку, вам, вероятно, захочется остановить свой экземпляр.

root@kitploit:~
        
        $ cd ~/example-minifi-deploy/minifi-*
          $ ./bin/minifi.sh stop
        




### Docker-сборка

Для сборки:

  * Выполните полную сборку NiFi (см. инструкции выше). Затем из подкаталога minifi/ выполните `mvn -P docker clean install`. Это запустит полную сборку, создаст на её основе docker-образ и выполнит интеграционные тесты docker-compose. После успешного завершения у вас должен появиться образ apacheminifi:${minifi.version}, который можно запустить следующей командой (заменив ${minifi.version} на текущую версию Maven вашей ветки):



root@kitploit:~
    
    
    docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
    

## Подпроект Registry

Registry — подпроект Apache NiFi — дополнительное приложение, предоставляющее централизованное место для хранения и управления общими ресурсами в одном или нескольких экземплярах NiFi и/или MiNiFi.

### Начало работы с Registry

  1. Соберите NiFi (см. Начало работы с NiFi )



или

Соберите только подпроект Registry:

root@kitploit:~
    
    
    cd nifi/nifi-registry
    mvn clean install
    
    

Если вы хотите включить проверки стиля и лицензий, укажите профиль contrib-check:

root@kitploit:~
    
    
    mvn clean install -Pcontrib-check
    

2) Запустите Registry

root@kitploit:~
    
    
    cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
    ./bin/nifi-registry.sh start
    

Обратите внимание, что веб-серверу приложения может потребоваться время для загрузки, прежде чем он станет доступен.

  3. Доступ к веб-интерфейсу приложения



При настройках по умолчанию веб-интерфейс приложения будет доступен по адресу http://localhost:18080/nifi-registry

  4. Доступ к REST API приложения



Если вы хотите протестировать REST API приложения, вы можете получить к нему прямой доступ. При настройках по умолчанию базовый URL REST API будет `http://localhost:18080/nifi-registry-api`. Интерфейс для тестирования REST API будет доступен по адресу http://localhost:18080/nifi-registry-api/swagger/ui.html

  5. Доступ к журналам приложения



Журналы будут доступны в `logs/nifi-registry-app.log`

### Тестирование базы данных

Чтобы убедиться, что NiFi Registry корректно работает с различными реляционными базами данных, существующие интеграционные тесты можно запускать для разных баз данных с помощью фреймворка Testcontainers.

Профили Spring используются для управления фабрикой DataSource, которая будет доступна в контексте приложения Spring. Предоставляются фабрики DataSource, использующие фреймворк Testcontainers для запуска Docker-контейнера для заданной базы данных и создания соответствующего DataSource. Если профиль не указан, по умолчанию будет использоваться H2 DataSource, и Docker-контейнеры не требуются.

При условии, что Docker запущен в системе, где выполняется сборка, можно выполнить следующие команды:

Полный список доступных фабрик DataSource приведен в модуле `nifi-registry-test`.

## Получение помощи

Если у вас есть вопросы, вы можете обратиться к нашему списку рассылки: some-email@example.com (архив). Для более интерактивных обсуждений участники сообщества часто находятся в следующих местах:

  * Apache NiFi Slack Workspace: https://apachenifi.slack.com/

Новые пользователи могут присоединиться к рабочему пространству, используя следующую ссылку-приглашение.




Чтобы отправить запрос на добавление функции или сообщение об ошибке, создайте запрос в Jira по адресу https://issues.apache.org/jira/projects/NIFI/issues. Если это **отчет об уязвимости системы безопасности** , отправьте электронное письмо напрямую на some-email@example.com и сначала изучите процедуры раскрытия информации об уязвимостях Apache NiFi и безопасности Apache Software Foundation.

## Документация

См. https://nifi.apache.org/ для получения последней документации NiFi.

См. https://nifi.apache.org/minifi и https://cwiki.apache.org/confluence/display/MINIFI для получения последней документации по MiNiFi.

См. https://nifi.apache.org/registry для получения последней документации по Registry.

## Лицензия

Если не указано иное, это программное обеспечение лицензировано в соответствии с Apache License, Version 2.0

Лицензировано в соответствии с Apache License, Version 2.0 (далее — «Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу

https://www.apache.org/licenses/LICENSE-2.0

Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое в соответствии с Лицензией, распространяется на основе «AS IS», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ И УСЛОВИЙ, явных или подразумеваемых. См. Лицензию, чтобы узнать о конкретных разрешениях и ограничениях.

## Экспортный контроль

Этот дистрибутив включает криптографическое программное обеспечение. В стране, в которой вы в настоящее время проживаете, могут действовать ограничения на импорт, владение, использование и/или реэкспорт в другую страну программного обеспечения для шифрования. ПЕРЕД использованием любого программного обеспечения для шифрования, пожалуйста, проверьте законы, нормативные акты и политику вашей страны, касающиеся импорта, владения или использования и реэкспорта программного обеспечения для шифрования, чтобы узнать, разрешено ли это. См. https://www.wassenaar.org/ для получения дополнительной информации.

Министерство торговли правительства США, Бюро промышленности и безопасности (BIS), классифицировало это программное обеспечение как экспортный номер контроля товаров (ECCN) 5D002.C.1, который включает программное обеспечение информационной безопасности, использующее или выполняющее криптографические функции с асимметричными алгоритмами. Форма и способ распространения этого дистрибутива Apache Software Foundation делают его пригодным для экспорта в рамках лицензионного исключения ENC Technology Software Unrestricted (TSU) (см. Правила экспортного администрирования BIS, раздел 740.13) как для объектного кода, так и для исходного кода.

Ниже приведены дополнительные сведения о включенном криптографическом программном обеспечении:

Apache NiFi использует BouncyCastle, JCraft Inc. и встроенные библиотеки криптографии Java для SSL, SSH и защиты чувствительных параметров конфигурации. См.

  * https://bouncycastle.org/about.html
  * http://www.jcraft.com/c-info.html
  * https://www.oracle.com/corporate/security-practices/corporate/governance/global-trade-compliance.html



для получения дополнительных сведений о криптографических функциях каждой из этих библиотек.