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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-43804 — CVE-2023-43804 urllib3 쿠키 유출을 교차 출처 리다이렉트를 통해 재현하는 컨테이너화된 3계층 랩으로, 익스플로잇 스크립트와 패치 검증을 포함합니다. | Kitploit
도구/GitHubGitHub/deepanshu-khurana/cve-2023-43804
Defensive ToolsContainer SecurityVulnerability AnalysisExploitationWeb SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubdeepanshu-khurana/cve-2023-43804

CVE-2023-43804

CVE-2023-43804 urllib3 쿠키 유출을 교차 출처 리다이렉트를 통해 재현하는 컨테이너화된 3계층 랩으로, 익스플로잇 스크립트와 패치 검증을 포함합니다.

저장소 보기
31일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2023-43804: urllib3 쿠키 유출 재현 및 완화 실습

이 저장소는 CVE-2023-43804(교차 출처 리다이렉트 중 발생하는 urllib3 쿠키 유출)를 시연하고, 악용하고, 수정 사항을 검증하기 위한 완전히 컨테이너화된 3계층 실습 환경을 포함합니다.


1. 실습 환경 및 아키텍처

이 실습은 Docker Compose를 사용하여 오케스트레이션되며, 내부 브리지 네트워크를 통해 통신하는 세 개의 격리된 서비스로 구성됩니다:

  • victim_client: 재현 및 익스플로잇 스크립트(exploit.py)를 실행하는 Python 기반 컨테이너.
  • target_app: 외부 출처로의 HTTP 302 교차 출처 리다이렉트를 트리거하는 취약한 대상 서버를 시뮬레이션하는 Flask 웹 애플리케이션.
  • attacker_app: 수신되는 HTTP 요청을 캡처하고 유출된 헤더를 추출하도록 설계된 Flask 로깅 서버.

2. 사전 요구 사항 및 시스템 요구 사항

  • Docker Desktop 설치 및 실행 중.
  • Docker Compose (v2+).
  • PowerShell 또는 기타 표준 명령줄 셸.

3. 설치 및 설정 단계

  1. 저장소를 복제하고 프로젝트 디렉터리로 이동합니다:
    root@kitploit:~
    git clone [https://github.com/deepanshu-khurana/cve-2023-43804-lab.git](https://github.com/deepanshu-khurana/cve-2023-43804-lab.git)
    cd cve-2023-43804-lab
    
    
    
    
  2. 컨테이너화된 실습 인프라를 빌드하고 실행합니다:
root@kitploit:~
docker compose up -d --build


4. 실습 시작 및 중지 방법

  • 실습 컨테이너 시작:
root@kitploit:~
docker compose up -d

  • 실습 중지 및 리소스 정리:
root@kitploit:~
docker compose down --volumes


5. 취약점 개요 (CVE-2023-43804)

  • 취약한 구성 요소: urllib3
  • 취약한 버전: < 1.26.17 또는 < 2.0.5
  • 취약점 설명: urllib3는 서로 다른 출처 간에 HTTP 302 리다이렉트를 따를 때 민감한 인증 헤더(예: Cookie)를 제거하지 못하여, 신뢰할 수 없는 리다이렉트 엔드포인트가 민감한 세션 토큰을 가로챌 수 있게 합니다.

6. 취약점 악용 방법 (1단계)

  1. 클라이언트 컨테이너 내부에 취약한 버전의 urllib3가 설치되어 있는지 확인합니다:
root@kitploit:~
docker exec -it victim_client pip install urllib3==1.26.16

  1. 익스플로잇 스크립트를 실행합니다:
root@kitploit:~
docker exec -it victim_client python3 -u /lab/exploit.py

  1. 예상되는 취약한 결과:
  • 클라이언트 출력에 유출된 세션 토큰과 함께 "status": "EXFILTRATED"가 표시됩니다.
  • docker logs attacker_app에 캡처된 민감한 쿠키 헤더가 표시됩니다.

7. 탐지 및 검증 메커니즘 실행 방법 (2단계)

익스플로잇을 확인한 후 패치를 검증하려면:

  1. 클라이언트 컨테이너 내부의 urllib3를 패치된 버전으로 업그레이드합니다:
root@kitploit:~
docker exec -it victim_client pip install urllib3==1.26.17

  1. 익스플로잇 스크립트를 다시 실행합니다:
root@kitploit:~
docker exec -it victim_client python3 -u /lab/exploit.py

  1. 예상되는 패치된 결과:
  • 클라이언트 출력에 "status": "SECURE", "stolen_cookie": "None / Stripped"가 표시됩니다.
  • attacker_app 로그에서 수신 요청에 Leaked Cookie Header: None이 포함되어 있음을 확인할 수 있습니다.

8. 완화 조치

  • 라이브러리 업그레이드: requirements.txt의 종속성을 업데이트하여 안전한 버전을 적용합니다:
root@kitploit:~
urllib3>=1.26.17

  • 심층 방어: 레거시 런타임을 유지하는 경우, 사용자 정의 Retry 구성에서 remove_headers_on_redirect를 통해 헤더 관리 정책을 명시적으로 구성합니다.

9. 문제 해결 참고 사항

  • 컨테이너 이름 지정: Docker Compose에서 할당한 컨테이너 이름(victim_client, target_app, attacker_app)을 정확히 대상으로 지정해야 합니다. docker ps를 사용하여 활성 컨테이너 이름을 확인하세요.
  • 포트 가용성: Docker 스택을 시작하기 전에 포트 5000과 5001이 다른 로컬 서비스에 의해 점유되지 않았는지 확인하세요.

10. 실습 시연 및 결과

1단계: 취약한 상태 (쿠키 유출)

취약한 urllib3==1.26.16에서 실습을 실행하면, 민감한 인증 쿠키가 교차 출처 리다이렉트를 통해 가로채져 공격자 서버에 성공적으로 기록됩니다.

  • 클라이언트 출력 및 서버 로그 캡처: 취약한 실행 및 로그 캡처
    • 그림 1.1: exploit.py가 유출된 세션 토큰과 함께 "status": "EXFILTRATED"를 표시하며, attacker_app 로그 출력으로 검증됨.

2단계: 패치 검증 (보안 상태)

urllib3를 패치된 버전(1.26.17)으로 업그레이드한 후, 라이브러리는 교차 출처 리다이렉트 중에 민감한 Cookie 헤더를 자동으로 제거합니다.

  • 패치된 버전으로 패키지 업그레이드: Urllib3 업그레이드

    • 그림 2.1: pip install urllib3==1.26.17을 통해 victim_client 내부의 urllib3 업그레이드.
  • 보안 클라이언트 출력 및 제거된 로그: 보안 실행 및 로그 캡처

    • 그림 2.2: exploit.py가 "stolen_cookie": "None / Stripped"와 함께 "status": "SECURE"를 반환하며, 서버 로그에서 Leaked Cookie Header: None이 확인됨.
도구 다운로드