## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHOUCHENG3-ASF__NIFI_CVE-2023-34468_1-21-00

    
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 отобразит экран входа в систему. 
Используя сгенерированные учетные данные, введите сгенерированное имя пользователя в поле `User` и сгенерированный пароль в поле `Password`, затем выберите `LOG IN` для доступа к системе. 
### Настройка
В Руководстве пользователя 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
для получения дополнительных сведений о криптографических функциях каждой из этих библиотек.