Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-27163-lab — Request-Baskets의 CVE-2023-27163 SSRF를 재현하는 Docker 기반 실습 환경으로, 익스플로잇 검증, 탐지 스크립트, 네트워크 격리 완화 방안을 포함합니다. | Kitploit
도구/GitHubGitHub/amulyakaushik/cve-2023-27163-lab
Defensive ToolsContainer SecurityVulnerability AnalysisExploitationWeb SecurityNetwork SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubamulyakaushik/cve-2023-27163-lab

CVE-2023-27163-lab

Request-Baskets의 CVE-2023-27163 SSRF를 재현하는 Docker 기반 실습 환경으로, 익스플로잇 검증, 탐지 스크립트, 네트워크 격리 완화 방안을 포함합니다.

2220일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

CVE-2023-27163 — Request-Baskets SSRF 실습실

프로젝트: 취약점 연구 및 재현 실습실 — CVE-2023-27163
작성자: Amulya Kaushik
역할: 사이버보안 R&D 및 실습 콘텐츠 개발 인턴 후보자

Request-Baskets ≤ 1.2.1의 서버 측 요청 위조(SSRF)
심층 방어 아키텍처를 통해 CVE-2023-27163을 재현, 탐지, 완화하기 위한 자체 완결형 로컬 연구 실습실입니다.


CVE 개요

항목값
CVE IDCVE-2023-27163
CWECWE-918 — 서버 측 요청 위조(SSRF)
영향받는 제품Request-Baskets
영향받는 버전≤ 1.2.1
수정된 버전1.2.2 (업스트림 소스) / 심층 방어 네트워크 격리
CVSS v3.1 점수6.5 (중간)
CVSS 벡터AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
공격 복잡도낮음 — 단일 비인증 API 호출

업스트림 한계 및 완화 전략

업스트림 한계 및 완화에 관한 참고:
CVE-2023-27163은 임의의 포워드 URL 검증 문제를 다루지만, darklynx/request-baskets의 공개 컨테이너 빌드는 기본적으로 루프백 또는 사설 서브넷 필터링을 적용하지 않습니다. 실제 DevSecOps 모범 사례에 따라, 본 실습실은 심층 방어 컨테이너 네트워크 격리를 통한 완화를 시연합니다. 민감한 내부 백엔드를 내부 전용 Docker 네트워크(internal: true가 설정된 secure-internal-net)에 격리함으로써 릴레이 경로가 차단되어, 신뢰할 수 없는 웹훅 포워더를 실행하는 경우에도 SSRF 취약점의 악용 가능성이 완화됩니다.


실습실 아키텍처 개요

본 실습실은 두 가지 개별 Docker Compose 토폴로지를 제공합니다:

  1. 취약한 구성 (docker-compose.yml): Request-Baskets와 내부 비밀 에코 서비스가 브리지 네트워크 lab-net을 공유합니다. Request-Baskets는 호스트 포트 55556에 매핑됩니다(컨테이너 포트 55555에서 매핑).
  2. 완화된 구성 (docker-compose.patched.yml): Request-Baskets는 public-net에만 연결되고, 내부 에코 서비스는 secure-internal-net(internal: true)에 연결됩니다.

취약한 아키텍처 (docker-compose.yml)

┌─────────────────────────────────────────────────────────┐
│                    Docker: lab-net                       │
│                                                         │
│  ┌─────────────────────┐    ┌────────────────────────┐  │
│  │  request-baskets     │───▶│  internal-service      │  │
│  │  (v1.2.1)           │    │  (http-echo:5678)      │  │
│  │  Port 55556 ◀──HOST │    │  NOT exposed to host   │  │
│  └─────────────────────┘    └────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
         ▲
         │  HTTP (port 55556)
         │
    ┌────┴─────┐
    │ Attacker │
    └──────────┘

완화된 아키텍처 (docker-compose.patched.yml)

┌─────────────────────────┐        ┌─────────────────────────┐
│       public-net        │        │   secure-internal-net   │
│                         │        │     (internal: true)    │
│  ┌───────────────────┐  │        │  ┌───────────────────┐  │
│  │  request-baskets   │  │   ✕    │  │ internal-service  │  │
│  │  Port 55556◀─HOST │  │ ──/──▶ │  │ (http-echo:5678) │  │
│  └───────────────────┘  │        │  └───────────────────┘  │
└─────────────────────────┘        └─────────────────────────┘

사전 요구 사항

요구 사항최소 버전비고
Docker Engine20.10+컨테이너 가상화 런타임
Docker Composev2.0+다중 컨테이너 오케스트레이션
Python3.8+CLI 검증 및 탐지 도구

Python 가상 환경 및 종속성 설정:

python3 -m venv .venv
source .venv/bin/activate
pip install requests fpdf2

단계별 지침

1. 취약한 실습 환경 실행

취약한 환경을 시작합니다(Request-Baskets v1.2.1은 http://localhost:55556에서 접근 가능):

docker compose up -d

두 컨테이너가 모두 실행 중인지 확인:

docker compose ps

예상 출력:

NAME                         IMAGE                             COMMAND                  SERVICE            STATUS   PORTS
isolated-internal-service    hashicorp/http-echo:latest        "/http-echo -text=CO…"   internal-service   Up       5678/tcp
vulnerable-request-baskets   darklynx/request-baskets:v1.2.1   "/bin/sh -c /bin/ent…"   request-baskets    Up       0.0.0.0:55556->55555/tcp

내부 서비스가 호스트에서 직접 접근 불가능한지 확인:

curl http://localhost:5678 2>&1 || echo "Connection refused — internal service isolated as expected"

2. 취약점 재현 실행 (데이터 유출)

자동화된 SSRF 검증 스크립트를 실행:

python3 scripts/verify_vulnerability.py

수행 내용:

  1. 도구가 /api/baskets/ssrf-verification-basket을 호출하여 forward_url: "http://internal-service:5678" 및 proxy_response: true를 설정합니다.
  2. 바스켓 URL로 HTTP GET을 전송합니다.
  3. 릴레이된 페이로드 CONFIDENTIAL_DATA{INTERNAL_SSRF_DEMONSTRATION_SUCCESS}를 캡처하고 RESULT: VULNERABLE을 출력합니다.
  4. 테스트 바스켓을 삭제합니다.

3. 방어 탐지 도구 실행

비파괴 감사 프로브를 실행:

python3 scripts/detect.py

수행 내용:

  1. 1단계: Request-Baskets 웹 시그니처를 매칭합니다.
  2. 2단계: 루프백 포워딩(http://127.0.0.1:80)이 허용되는지 프로브합니다.
  3. 3단계: 허용 시(HTTP 201) AUDIT RESULT: VULNERABLE을 보고하고 프로브 바스켓을 정리합니다.

4. 완화된 실습실로 전환 및 방어 검증

분할된 완화 토폴로지로 전환:

docker compose down
docker compose -f docker-compose.patched.yml up -d
python3 scripts/verify_vulnerability.py

예상 출력:

==============================================================
[✓] REMEDIATION VERIFIED: TARGET SECURED
    The Request-Baskets instance failed to reach the internal
    isolated service (HTTP 502 / Host Unreachable).
    Network segmentation successfully prevented SSRF data exfiltration.
==============================================================

완료 후 환경 정리:

docker compose -f docker-compose.patched.yml down

증거 및 검증 (산출물 3)

산출물 3의 완전한 시각적 증거 포트폴리오는 evidence/ 디렉터리에 유지됩니다:

산출물목적파일 링크설명
스크린샷 1환경 실행 중01_lab_running.pnglab-net에서 vulnerable-request-baskets(포트 55556)와 isolated-internal-service가 동시에 실행 중임을 보여줍니다.
스크린샷 2SSRF 악용02_reproduction_ssrf.png유출된 CONFIDENTIAL_DATA{...} 플래그와 VULNERABLE 상태를 표시합니다.
스크린샷 3방어 탐지 도구03_detection_tool_run.png2단계 시그니처 검사와 루프백 감사가 VULNERABLE을 표시함을 보여줍니다.
스크린샷 4완화 검증04_remediation_verified.png분할된 네트워크 방어 하에서 릴레이 실패(HTTP 502 / Host Unreachable)를 입증합니다.
스크린샷 5웹 UI 구성05_web_ui_ssrf.png(보너스) Proxy Response로 구성된 Request-Baskets UI 설정의 브라우저 캡처.

각 스크린샷에 대한 상세한 워크스루, 명령어, 콘솔 기록은 evidence/README.md에 문서화되어 있습니다.

대화형 캡처 러너

수동 설정 번거로움 없이 모든 터미널 스크린샷을 순차적으로 캡처하려면 다음을 실행:

./scripts/capture_evidence_flow.sh

기술 블로그 PDF 컴파일

학술 기술 보고서를 PDF로 컴파일:

python3 docs/generate_blog_pdf.py

생성된 출력: docs/CVE-2023-27163-Technical-Blog.pdf


프로젝트 구조

cve-2023-27163-lab/
├── .gitignore                      # Git artifact exclusions (.venv, cache, OS files)
├── docker-compose.yml              # Vulnerable environment (shared lab-net, port 55556)
├── docker-compose.patched.yml      # Remediated environment (disjoint network isolation)
├── README.md                       # Complete documentation, attribution & guide
├── scripts/
│   ├── capture_evidence_flow.sh    # Interactive runner for capturing screenshots
│   ├── verify_vulnerability.py     # SSRF exploitation & remediation verification CLI
│   └── detect.py                   # Defensive audit and detection tool
├── evidence/
│   └── README.md                   # Formal screenshot evidence walkthrough
└── docs/
    ├── technical_blog.md           # Academic technical write-up (800–1,200 words)
    ├── generate_blog_pdf.py        # Markdown → PDF converter
    └── CVE-2023-27163-Technical-Blog.pdf # Compiled academic report PDF

참고 자료 및 크레딧

본 연구 및 실습실 개발은 공개 보안 표준, 벤더 권고, 취약점 데이터베이스를 기반으로 합니다:

도구 다운로드