
의도적으로 취약하게 만든 Next.js 애플리케이션으로, CVE-2025-29927 (미들웨어 기반 인증 우회)를 학습 및 버그 바운티 연습용으로 시연합니다.
이 저장소는 Next.js로 구축된 의도적으로 취약하게 만든 웹 애플리케이션을 포함하고 있습니다. CVE-2025-29927로 알려진 보안 문제를 시연하고 연구하기 위해 설계되었습니다. 이 프로젝트의 목표는 보안 연구자, 학생, 버그 바운티 헌터가 실제 환경과 유사한 환경에서 취약점이 어떻게 작동하는지 이해하도록 돕는 것입니다.
[!CAUTION ] 이 애플리케이션은 의도적으로 안전하지 않으며 프로덕션 환경에 절대 배포해서는 안 됩니다.
CVE-2025-29927은 Next.js로 구축된 애플리케이션, 특히 미들웨어에서 요청 로직의 부적절한 처리와 관련이 있습니다. 이로 인해 공격자는 다음을 수행할 수 있습니다.
git clone https://github.com/metasploit403/cve-2025-29927-lab
cd cve-2025-29927-lab
npm install
npm run dev
일부 라우트는 의도적으로 취약하며 다음을 포함할 수 있습니다.
- /api/admin/secret
- /api/internal/health
- /api/private/data
이 엔드포인트는 적절한 권한 부여 없이 액세스할 수 없는 제한된 리소스를 시뮬레이션합니다.
npm run dev http://localhost:3000을 입력합니다.- /api/admin/secret
- /api/internal/health
- /api/private/data
- http://localhost:3000/api/admin/secret
- http://localhost:3000/api/internal/health
- http://localhost:3000/api/private/data
요청이 차단된 것을 관찰하세요. 이는 요청에 cookie가 포함되지 않았기 때문입니다. 즉, 엔드포인트가 미들웨어에 의해 보호되고 있습니다. 미들웨어는 요청에 쿠키가 있는지 확인하고, 없으면 자동으로 차단됩니다.
이제 요청에 cookie를 추가해 보겠습니다. 이를 위해 Chrome 개발자 도구를 엽니다. (여기서는 Chrome 브라우저를 사용합니다. 원하는 브라우저를 사용해도 됩니다.)
F12를 누르면 Chrome 개발자 도구가 열립니다.
콘솔 탭으로 이동합니다.
콘솔 탭에서 document.cookie="lab-auth=authenticated"를 입력합니다.
이제 페이지를 새로고침하면 로그인된 것을 확인할 수 있습니다.
미들웨어가 요청에 쿠키가 포함되어 있는지 확인한다는 점을 명심하세요. 요청에 쿠키가 있으면 성공적으로 로그인되고, 없으면 차단됩니다. 문제는 쿠키를 제공하지 않고 미들웨어 검사를 우회하고 로그인하는 방법입니다. 이것이 CVE-2025-29927이 우리가 할 수 있게 해주는 것입니다.
이제 CVE-2025-29927로 미들웨어 인증 검사를 우회해 보겠습니다. 여기서 요령은 이 특정 헤더를 추가하는 것입니다.
x-middleware-subrequest: middleware.
이 헤더는 프레임워크에서 내부적으로만 사용되어야 합니다. 이것을 추가하면 미들웨어가 요청에 쿠키가 있는지 확인하는 것을 중단하고, 애플리케이션의 모든 민감한 엔드포인트가 무방비 상태가 됩니다.
이를 악용하려면 cURL을 사용합시다. curl은 서버에 요청을 보내고 응답을 받기 위한 명령줄 도구입니다.
1.쿠키 없이 401 예상
curl.exe -i http://localhost:3000/api/admin/secret
서버가 307 임시 리디렉션 상태 코드로 응답하는 것을 관찰하세요. 쿠키가 없으므로 홈페이지/루트 페이지로 리디렉션됩니다. 즉, 쿠키를 제공하지 않으면 로그인할 수 없습니다.
2.curl.exe -i http://localhost:3000/api/admin/secret -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
이제 "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" 를 추가했습니다. 쿠키 없이 로그인에 액세스할 수 있게 된 것을 확인하세요. 이것은 완전한 인증 우회입니다.
실제 애플리케이션에서 이러한 문제를 해결하려면:
이 프로젝트는 교육 목적으로만 제공됩니다. 소유하고 있거나 명시적 허가를 받은 시스템이 아닌 경우 이러한 기술을 사용하지 마십시오.
자유롭게 다음을 수행하세요:
이 저장소가 유용하다면 별표를 눌러 주시기 바랍니다.
- Next.js
- Bug Bounty
- Web Security
- CVE-2025-29927
- Middleware Authentication
- Bypass