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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
POC-CVE-2023-32681 — CVE-2023-32681에 대한 POC | Kitploit
도구/GitHubGitHub/hardikmodha/poc-cve-2023-32681
Vulnerability AnalysisExploitationWeb SecurityLearning & EducationLabs & PracticeArchived
GitHubhardikmodha/poc-cve-2023-32681

POC-CVE-2023-32681

CVE-2023-32681에 대한 POC

저장소 보기
4123년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2023-32681에 대한 POC

이것은 CVE-2023-32681의 Python 3 구현으로, requests 버전 <= 2.30.0을 사용하는 클라이언트에 영향을 미칩니다.

https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4에 따라 서버가 3xx 리디렉션을 발행할 때마다 사용자 에이전트는 요청을 수정하여 요청에서 특정 헤더와 필드를 제거해야 합니다.

해당 필드에 대한 자세한 내용은 https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5에서 확인할 수 있습니다. 이 CVE와 관련하여 관련 부분을 여기에 강조 표시했습니다.

image

requests 버전 <= 2.30.0은 "https"로의 리디렉션을 처리하는 동안 "Proxy-Authorization" 헤더를 제거하지 않아 프록시 자격 증명이 리디렉션된 서버로 유출되었습니다.

자세한 내용은 다음에서 확인할 수 있습니다.

  • https://www.cve.org/CVERecord?id=CVE-2023-32681
  • https://security.snyk.io/vuln/SNYK-PYTHON-REQUESTS-5595532

사전 요구 사항

  • HTTP(S) 서버에 대한 유효한 인증서 세트. 로컬에서 인증서를 생성하려면 mkcert를 사용할 수 있습니다.
  • Go v1.19
  • Python 3.x
  • virtualenv (선택 사항)

개요

  1. Go로 구현된 프록시 서버. 포트 8080에서 프록시 서버를 시작하며 기본 인증이 필요합니다. POC 목적으로 동일한 파일에 하드코딩된 사용자 이름과 비밀번호가 정의되어 있습니다.
  2. Go로 구현된 HTTP(S) 서버. 두 개의 서버를 시작합니다.
    • 포트 443에서 수신 대기하는 리디렉션 서버와 포트 4431에서 수신 대기하는 에코 서버.
    • 리디렉션 서버는 트래픽을 4431에서 실행되는 두 번째 서버로 리디렉션하는 /redirect 경로를 정의합니다.
도구 다운로드
  • 에코 서버는 /echoHeaders 경로를 정의합니다. 이 경로는 요청에서 수신한 헤더를 클라이언트에 반환합니다.
  • POC Python 스크립트. 포트 443에서 실행 중인 리디렉션 서버에 프록시 요청을 보내고 서버가 반환하는 응답을 출력합니다.
  • 응답에 Proxy-Authorization 헤더가 포함되어 있으면 해당 requests 버전이 "CVE-2023-32681"에 취약한 것으로 간주됩니다.
  • 단계

    1. 이 저장소를 클론합니다.
    2. server/main.go에서 certFile 및 keyFile 변수를 업데이트합니다.
    3. 명령어 go run server/main.go를 실행하여 HTTP(S) 서버를 시작합니다. 그러면 포트 443과 4431에서 수신 대기하는 두 개의 서버가 시작됩니다.
    4. 명령어 go run proxy/main.go를 실행하여 프록시 서버를 시작합니다. 그러면 포트 8080에서 프록시 서버가 시작됩니다.
    5. Python 스크립트 실행을 위한 종속성 설치: pip3 install -r script/requirements_request_2_30_0.txt
    6. python3 script/poc.py를 실행하여 POC 스크립트를 실행하고 출력을 관찰합니다. 서버가 응답에 "Proxy-Authorization" 헤더를 반환하는 것을 볼 수 있습니다. 서버는 또한 수신된 헤더를 로그에 출력합니다.
    7. 이제 requests 버전을 >= 2.31.0으로 업그레이드하거나 pip3 install -r script/requirements_request_2_31_0.txt를 실행합니다.
    8. 다시 python3 script/poc.py를 실행하여 POC 스크립트를 실행하고 출력을 관찰합니다. 이제 서버 응답에 "Proxy-Authorization" 헤더가 없는 것을 볼 수 있습니다. 서버 로그에서도 동일하게 확인할 수 있습니다.

    스크린샷

    프록시 서버

    proxy_server_logs

    requests==2.30.0

    requests_2_30_0_script_output
    requests_2_30_0_server_output

    requests==2.31.0

    requests_2_31_0_script_output
    requests_2_31_0_server_output