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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-3156-Project — CVE-2021-3156(Baron Samedit)을 위한 교육용 실습 환경으로, Docker화된 취약한 sudo 대상, 익스플로잇 스캐폴드, 카나리 테스트, 근본 원인 분석 및 패치 비교를 포함합니다. | Kitploit
도구/GitHubGitHub/shams-ul-mehmood/cve-2021-3156-project
Privilege EscalationVulnerability AnalysisExploitationLearning & EducationBinary ExploitationLabs & Practice
GitHubshams-ul-mehmood/cve-2021-3156-project

CVE-2021-3156-Project

CVE-2021-3156(Baron Samedit)을 위한 교육용 실습 환경으로, Docker화된 취약한 sudo 대상, 익스플로잇 스캐폴드, 카나리 테스트, 근본 원인 분석 및 패치 비교를 포함합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
171개월 전아직 검토되지 않음

CVE-2021-3156 — Baron Samedit

sudo의 힙 기반 버퍼 오버플로우 → 로컬 권한 상승

ITSOLERA 사이버 보안 부서 | 레드팀 인턴십 2026


  ██████╗  █████╗ ██████╗  ██████╗ ███╗   ██╗    ███████╗ █████╗ ███╗   ███╗███████╗██████╗ ██╗████████╗
  ██╔══██╗██╔══██╗██╔══██╗██╔═══██╗████╗  ██║    ██╔════╝██╔══██╗████╗ ████║██╔════╝██╔══██╗██║╚══██╔══╝
  ██████╔╝███████║██████╔╝██║   ██║██╔██╗ ██║    ███████╗███████║██╔████╔██║█████╗  ██║  ██║██║   ██║
  ██╔══██╗██╔══██║██╔══██╗██║   ██║██║╚██╗██║    ╚════██║██╔══██║██║╚██╔╝██║██╔══╝  ██║  ██║██║   ██║
  ██████╔╝██║  ██║██║  ██║╚██████╔╝██║ ╚████║    ███████║██║  ██║██║ ╚═╝ ██║███████╗██████╔╝██║   ██║
  ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝    ╚══════╝╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚═════╝ ╚═╝   ╚═╝

⚠️ 교육용 / 격리된 실습 환경 전용 모든 테스트는 반드시 Docker 실습 컨테이너 내부에서만 수행해야 합니다. 실제, 프로덕션 또는 공유 시스템에서 실행하지 마십시오.


목차

  1. CVE 개요
  2. 이 CVE가 특별한 이유
  3. 프로젝트 구조
  4. 팀 산출물
  5. 빠른 시작
  6. 익스플로잇 작동 방식
  7. 취약점 카나리 테스트
  8. exploit.py 사용법
  9. 실습 환경 초기화 및 스냅샷
  10. 패치 전후 비교
  11. 참고 자료

CVE 개요

속성값
CVE IDCVE-2021-3156
별칭Baron Samedit
유형힙 기반 버퍼 오버플로우 → 로컬 권한 상승
구성 요소sudo — Linux 권한 유틸리티 (src/sudo.c의 set_cmnd())
CVSS v3 점수7.8 높음
벡터CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
취약한 버전sudo 1.8.2 – 1.8.31p2 및 1.9.0 – 1.9.5p1
패치된 버전sudo 1.9.5p2 (1.9 브랜치) / sudo 1.8.32 (1.8 브랜치)
실습 대상 버전Ubuntu 20.04의 sudo 1.8.31
패치 KB / 권고SA: https://www.sudo.ws/security/advisories/unescape_overflow/
발견자Qualys Research Team
공개일2021-01-26
실제 환경 노출 기간 (코드 기준)~2011-07-09 (sudo 1.8.2)부터 — 약 10년간 탐지되지 않음
인증 요구사항로컬 사용자만 — sudo 권한 불필요

이 CVE가 특별한 이유

속성CVE-2021-3156일반적인 sudo LPE
sudoers 항목 필요❌ 아니요✅ 예
sudo 그룹 가입 필요❌ 아니요✅ 예
기존 sudo 접근 권한 필요❌ 아니요✅ 예
새로 만든 사용자 계정에서 작동✅ 예❌ 아니요
권한 시스템을 악용❌ 완전히 우회✅ 남용
공격 표면인수 파서 (인증 전)권한 검사

핵심 인사이트: 오버플로우는 인수를 파싱하는 함수인 set_cmnd()에서 발생하며, 이는 sudo가 /etc/sudoers를 참조하기 전에 실행됩니다. 10초 전에 생성된 권한이 전혀 없는 계정으로도 이 취약점을 악용할 수 있습니다.


프로젝트 구조

CVE-2021-3156-Project/
│
├── README.md                        ← you are here
│
├── lab/                             ← Member 1: Lab Environment
│   ├── Dockerfile                   ← Ubuntu 20.04 + sudo 1.8.31 (pinned)
│   ├── docker-compose.yml           ← vulnerable target + patched reference
│   ├── evidence_helper.sh           ← pre/post-exploit state capture
│   ├── SETUP.md                     ← step-by-step VM/Docker guide
│   └── config_notes.md              ← CVE conditions & container details
│
├── exploit/                         ← Member 2: Exploit Development
│   ├── exploit.py                   ← Python LPE framework + canary test
│   └── payloads.txt                 ← heap overflow research notes
│
├── docs/                            ← Member 3: Research & Documentation
│   ├── root_cause_analysis.md       ← set_cmnd() deep dive + off-by-one
│   ├── references.md                ← all sources, PoCs, CWE mapping
│   └── mitigation.md                ← sudo upgrade + hardening checklist
│
├── proof/                           ← Member 4: Evidence Collection
│   ├── screenshots/                 ← exploitation screenshots
│   └── terminal_logs.txt            ← command output template + logs
│
└── report/
    └── CVE-2021-3156_Report.docx    ← Member 4: Final professional report

팀 산출물

구성원 1 — 실습 환경 및 CVE 검증

파일설명
lab/Dockerfilesudo 1.8.31이 고정된 Ubuntu 20.04 (취약); Python 3 설치; sudo 접근 권한이 없는 labuser 계정
lab/docker-compose.yml취약한 대상 + 패치된 Ubuntu 22.04 참조 컨테이너 오케스트레이션
lab/evidence_helper.sh익스플로잇 전/후 시스템 상태(사용자, sudo 버전, 카나리) 캡처용 Bash 스크립트
lab/SETUP.md단계별 안내: 빌드 → 시작 → 진입 → sudo 버전 확인 → 카나리 실행 → 스냅샷
lab/config_notes.md잘못된 설정이 필요 없는 이유, Docker 보안 설정, 자격 증명 참조 설명

구성원 2 — 익스플로잇 개발 (PoC 스크립트)

파일설명
exploit/exploit.py전체 Python 프레임워크: check_platform(), check_sudo_version(), run_canary_test(), get_system_info() + 세 가지 익스플로잇 TODO 스텁(select_heap_strategy, build_overflow_argument, trigger_overflow_and_escalate) 및 blasty/worawit PoC 상세 참조 포함
exploit/payloads.txt힙 오버플로우 개념, COMPRESSION_TRANSFORM 등가물(인수 구조), 세 가지 힙 전략, 실패 시도 기록 템플릿, 탐지 시그니처

참고: 실제 커널/힙 익스플로잇 코드는 윤리 지침에 따라 포함되지 않습니다. exploit.py의 TODO 스텁은 공식 공개 PoC인 https://github.com/blasty/CVE-2021-3156 및 https://github.com/worawit/CVE-2021-3156를 참조하므로 팀에서 이를 연구하고 통합하시기 바랍니다.

구성원 3 — 근본 원인 분석 및 연구

파일설명
docs/root_cause_analysis.md상세 분석: set_cmnd() 크기 vs 복사 불일치, 코드 예시가 포함된 off-by-one, 패치 diff, 익스플로잇 체인, CVSS 7.8 지표별 분석, 10년 타임라인, 배포판 영향 표
docs/references.mdQualys 권고, MITRE, NVD, sudo 프로젝트, blasty PoC, worawit PoC, ExploitDB, GTFOBins, CWE 매핑
docs/mitigation.mdapt-get install --only-upgrade sudo, 검증 카나리, AppArmor 강화, auditd 모니터링, 강화 표

구성원 4 — 증거 수집, 보고 및 통합

파일설명
proof/terminal_logs.txt증거 수집 템플릿 (실제 실습 출력으로 채우기)
proof/screenshots/필수 스크린샷 7개용 디렉토리
report/CVE-2021-3156_Report.docx12개 섹션 전문 보고서: 표지, 경영진 요약, CVE 설명, 근본 원인 분석, CVSS 분석, 익스플로잇 단계, 코드 설명, 증거 체크리스트, 완화 조치, 타임라인, 참고 문헌, 고지 사항

빠른 시작

1. 실습 환경 빌드 및 시작

cd CVE-2021-3156-Project/lab/

# Build the vulnerable image (downloads Ubuntu 20.04, pins sudo 1.8.31)
docker compose build

# Start both containers
docker compose up -d

# Confirm containers are running
docker compose ps

예상 출력:

NAME                      STATUS
baron_samedit_target      running
baron_samedit_patched     running

2. 취약한 컨테이너 진입

docker exec -it baron_samedit_target bash

3. 취약점 조건 확인

# Inside the container as labuser

whoami                         # Expected: labuser
id                             # Expected: uid=1000(labuser)...
sudo --version                 # Expected: Sudo version 1.8.31
sudo -l                        # Expected: Sorry, user labuser may not run sudo...
sudoedit -s '\' 2>&1          # Expected: NOT "usage:" → VULNERABLE

4. 익스플로잇 복사 및 실행

# From host machine
docker cp exploit/exploit.py baron_samedit_target:/home/labuser/

# Inside container
python3 exploit.py --check-only      # verify all prerequisites pass
python3 exploit.py --safe-mode       # canary only, no exploitation
python3 exploit.py --cmd "id"        # LPE → show root identity
python3 exploit.py --cmd "whoami /all" --output /tmp/proof.txt

5. 증거 캡처

# Inside container — before exploit
~/evidence_helper.sh > /tmp/before.txt

# After exploit
~/evidence_helper.sh > /tmp/after.txt

# Copy to host
docker cp baron_samedit_target:/tmp/before.txt proof/terminal_logs_before.txt
docker cp baron_samedit_target:/tmp/after.txt  proof/terminal_logs_after.txt

익스플로잇 작동 방식

도구 다운로드