
A simple Docker lab and Exploit setup for CVE-2021-3156 - "Baron Samedit".
이 저장소는 CVE-2021-3156을 이해하고 익스플로잇하기 위한 자체 포함된 교육 환경을 제공합니다. 이 취약점은 sudo의 힙 기반 버퍼 오버플로로, 취약한 시스템(sudo 버전 1.9.5p2 이전)에서 권한이 없는 사용자가 루트 권한을 얻을 수 있게 합니다.
이 자료는 권한이 부여된 보안 교육 및 연구 목적으로만 사용됩니다.
귀하가 소유하지 않은 시스템에 대한 무단/비윤리적 사용은 불법입니다.
Dockerfile - 취약한 sudo 1.8.31이 포함된 Ubuntu 20.04 컨테이너를 빌드합니다.exploit.c - 주요 익스플로잇 페이로드 (Ubuntu 20.04에 맞게 조정됨)shellcode.c - 루트 셸을 생성하는 공유 라이브러리 생성자Makefile - 익스플로잇과 악성 라이브러리를 컴파일합니다.git clone https://github.com/Theleopard65/CVE-2021-3156-Baron-Samedit.git
cd CVE-2021-3156-Baron-Samedit
docker build -t cve-2021-3156-lab .
poc로 로그인됩니다./home/exploit이며, 소스 파일이 이미 포함되어 있습니다.docker run -it --rm --name baron_samedit_lab cve-2021-3156-lab
cd /home/exploit
./exploit
성공하면 루트 셸 프롬프트(#)가 나타납니다. 이 익스플로잇은 sudo의 힙에 있는 service_user 구조체를 덮어쓰고, 악성 라이브러리 libnss_x/x.so.2를 로드하도록 강제합니다. 이 라이브러리의 생성자가 셸코드를 실행합니다.
make clean && make
다음 파일이 생성됩니다:
exploit - 주요 익스플로잇 바이너리libnss_x/x.so.2 - 악성 공유 라이브러리CVE-2021-3156은 sudoedit의 명령줄 인자 처리 과정에서 발생하는 힙 기반 오버플로입니다. 공격자는 특수하게 조작된 버퍼와 환경 변수를 제공하여 힙의 service_user 구조체를 덮어쓸 수 있습니다. 이 구조체에는 함수 포인터가 포함되어 있으며, 이를 가로채 NSS(Name Service Switch) 메커니즘을 통해 로드된 악성 라이브러리를 가리키도록 할 수 있습니다. 그러면 라이브러리의 생성자가 루트 권한으로 임의 코드를 실행합니다.
이 익스플로잇은:
buf)를 할당합니다.LC_MESSAGES, LC_TELEPHONE, LC_MEASUREMENT 환경 변수를 사용하여 힙 레이아웃을 조정합니다.files service_user 구조체로 오버플로하여 이름을 악성 라이브러리(libnss_x/x.so.2)의 경로로 대체합니다.shellcode.c에 있음)가 setuid(0), setgid(0)을 실행하고 루트 셸을 생성합니다.Docker 이미지를 제거하려면:
docker rmi cve-2021-3156-lab
이 프로젝트는 교육 목적으로만 제공됩니다. 사용에 따른 책임은 본인에게 있습니다.