
CVE-2025-29927(Next.js 미들웨어 우회 취약점)에 대한 개념 증명 익스플로잇입니다. 버전 핑거프린팅, 구성 가능한 헤더 조작, 인증 우회 테스트를 위한 성공 탐지 휴리스틱을 포함합니다.
이 저장소는 Next.js 미들웨어에서 헤더 조작을 통해 인증 및 권한 검사를 우회할 수 있는 취약점인 CVE-2025-29927의 개념 증명(PoC)을 포함합니다.
영향을 받는 버전: >= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
CVE ID: CVE-2025-29927
심각도: 높음 (CVSS: 9.1)
이 취약점은 Next.js의 미들웨어 체인 실행 과정에 존재하며, 공격자가 x-middleware-subrequest 헤더를 조작하여 미들웨어 보안 제어를 우회할 수 있습니다. 특정 헤더 값을 조작하면 미들웨어가 요청이 이미 처리된 것으로 간주하게 속여 인증 검사를 효과적으로 우회할 수 있습니다.
이 도구는 다음에서 테스트되었습니다: Next.js 15.0.0 ~ 15.2.2, 다른 버전에서는 수정이 필요할 수 있습니다.
다음 명령어로 의존성을 설치하세요:
pip install -r requirements.txt
python poc-cve-2025-29927.py http://example.com/protected-route
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
CVE-2025-29927 PoC - Next.js 미들웨어 우회
positional arguments:
url 테스트할 대상 URL (예: http://localhost:3000/admin/dashboard)
options:
-h, --help 도움말 메시지를 표시하고 종료
-r REPEAT, --repeat REPEAT
헤더에 포함할 미들웨어 반복 횟수 (기본값: 5)
-o OUTPUT, --output OUTPUT
출력 파일 이름 (기본값: response.html)
--no-browser 브라우저에서 결과를 열지 않음
-f, --force 버전 확인을 건너뛰고 익스플로잇 시도 강제
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://target-site.com/admin/dashboard -f
python poc-cve-2025-29927.py http://vulnerable-app.com/protected-page -r 10 -o result.html --no-browser
이 스크립트는 먼저 여러 탐지 방법을 사용하여 대상 애플리케이션의 Next.js 버전을 식별합니다.
취약한 버전(15.0.0-15.2.2)이 감지되면 익스플로잇을 진행합니다.
특수하게 조작된 x-middleware-subrequest 헤더와 함께 요청이 전송됩니다.
응답은 파일로 저장되고 성공 여부를 분석합니다.
성공할 경우 보호된 콘텐츠에 인증 없이 접근할 수 있습니다.
취약한 버전의 Next.js를 사용 중이라면 버전 15.2.3 이상으로 업그레이드하여 이 취약점을 패치하세요.
이 도구는 교육 및 보안 연구 목적으로만 제공됩니다. 소유하고 있거나 명시적 테스트 허가를 받은 애플리케이션에만 사용하십시오. 무단 테스트는 관련 법률을 위반할 수 있습니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
Heimd411
보안 연구원
GitHub 프로필
이 저장소