
컨테이너화된 환경과 서명된 Nuclei 템플릿을 제공하여 sudo 권한 상승 취약점인 CVE-2025-32463을 안전하게 테스트하고, 탐지 및 패치된 버전 비교를 지원합니다.
악성 익스플로잇을 Nuclei 템플릿으로 포팅하여 비침습적 취약점 스캔을 수행하면서도 근본적인 문제를 입증한 것은 이번이 처음입니다.
이 과정을 학습 목적으로 더 자세히 문서화했습니다.
제가 겪은 주요 어려움은 다음과 같습니다:
-itags local 매개변수를 포함해야 한다는 점에서 몇 번 막혔습니다. 로컬 태그는 .nuclei-ignore 설정에서 기본적으로 무시되기 때문입니다.이 활동을 위해 Windows 환경을 선택한 것이 이상하게 보일 수 있습니다. 사실 Windows는 제 기본 운영 체제이며, 그 이유는 여기서 자세히 설명하지 않겠습니다.
docker-compose up --build -d
이 템플릿은 보안상의 이유로 서명이 필요한 code 엔진을 사용합니다. 이 저장소에는 템플릿이 이미 서명되어 있습니다.
docker-compose.yaml은 Windows Nuclei 서명 키를 %APPDATA%\nuclei\keys에서 컨테이너로 마운트하도록 구성되어 있습니다. 이를 통해 서명된 템플릿을 검증할 수 있습니다.
Windows 호스트에서 (Nuclei 설치 필요).
nuclei -t cve-2025-32463.yaml -sign
이 명령은 템플릿에 서명하고 다이제스트 필드를 추가합니다.
참고: 이 명령을 처음 실행하면 Nuclei가 %APPDATA%\nuclei\keys에 서명 키를 생성하고 다음을 요청합니다:
Linux/macOS/Git Bash:
docker exec -u testuser vulnerable-sudo-target sh -c 'nuclei -itags local -t /tmp/template.yaml -target localhost -code'
Windows PowerShell/CMD:
docker exec -u testuser vulnerable-sudo-target sh -c "nuclei -itags local -t /tmp/template.yaml -target localhost -code"
대안 (모든 플랫폼에서 작동):
docker exec -u testuser vulnerable-sudo-target nuclei -itags local -t /tmp/template.yaml -target localhost -code
참고:
-code 플래그는 코드 프로토콜 기반 템플릿을 활성화하는 데 필요합니다.sh -c '...'를 사용하세요.<your-username>의 서명된 템플릿 1개를 실행 중임을 표시해야 합니다: [INF] Executing 1 signed templates from <your-username>Windows PowerShell/CMD:
docker exec -u testuser patched-sudo-target sh -c "nuclei -itags local -t /tmp/template.yaml -target localhost -code"
대안 (모든 플랫폼에서 작동):
docker exec -u testuser patched-sudo-target nuclei -itags local -t /tmp/template.yaml -target localhost -code
참고:
-code 플래그는 코드 프로토콜 기반 템플릿을 활성화하는 데 필요합니다."..." 또는 sh -c 없이 대안 명령을 사용하세요.<your-username>의 서명된 템플릿 1개를 실행 중임을 표시해야 합니다: [INF] Executing 1 signed templates from <your-username>Nuclei 템플릿에 서명하지 않고 취약점을 확인하려면 익스플로잇 스크립트를 직접 실행할 수 있습니다:
익스플로잇 스크립트를 복사하여 실행하세요.
docker cp exploit.sh vulnerable-sudo-target:/tmp/exploit.sh
docker exec -u testuser vulnerable-sudo-target bash /tmp/exploit.sh
예상 출력: woot! 다음에 루트 셸(대화형 모드에서).
[CVE-2025-32463] [code] [critical] localhost ["VULNERABLE UID=1000 EUID=0"]
[INF] Executing 1 signed templates from <your-username>
[INF] Scan completed in 140.454595ms. 1 matches found.
탐지 확인: UID=1000 EUID=0은 testuser(1000)의 코드가 루트 권한(0)으로 실행되었음을 증명합니다.
[INF] Executing 1 signed templates from <your-username>
[INF] Scan completed in 143.319373ms. No results found.
취약점이 탐지되지 않음 - 패치된 sudo 버전이 라이브러리 로딩을 차단합니다.
취약점, 공격 벡터 및 탐지 방법론에 대한 자세한 기술 설명은 기술 노트 문서를 참조하세요.