
Bu laboratuvar ortamını sıfırdan kendim oluşturdum. Next.js uygulaması içerisinde giriş, ana sayfa ve admin sayfalarını hazırladım. Middleware ile yetkilendirme mekanizmasını kurduktan sonra Burp Suite kullanarak CVE-2025-29927 zafiyetini kontrollü ortamda gösterdim.
Next.js 애플리케이션에서 미들웨어는 요청이 애플리케이션에 도달하기 전에 실행되어 인증 및 권한 부여와 같은 검사를 수행합니다.
CVE-2025-29927 취약점에서는 특별히 추가된 x-middleware-subrequest HTTP 헤더로 인해 미들웨어가 특정 상황에서 요청을 검증된 것으로 간주할 수 있습니다. 이로 인해 권한이 없는 사용자가 보호된 페이지에 접근할 수 있게 됩니다.
이 프로젝트에서는 Docker를 사용하여 구축한 랩 환경에서 Next.js 애플리케이션에 영향을 미치는 CVE-2025-29927 취약점을 시연했습니다.
랩 환경은 직접 처음부터 구축했습니다. Next.js로 login, index 및 admin 페이지를 준비했습니다. 그런 다음 미들웨어를 사용하여 admin 페이지에 권한 검사를 추가했습니다.
Burp Suite로 HTTP 요청을 캡처하여 x-middleware-subrequest 헤더를 추가했고, 미들웨어 검사를 우회하여 권한 없이 admin 페이지에 접근하는 것을 시연했습니다.
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
프로젝트를 실행하기 전에 다음 항목이 설치되어 있어야 합니다.
저장소를 컴퓨터에 다운로드합니다.
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
폴더로 이동합니다.
cd nextjs-middleware-auth-bypass-lab
Docker 이미지를 생성합니다.
docker build -t nextjs-auth-bypass .
컨테이너를 시작합니다.
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
브라우저에서 다음 주소로 이동합니다.
http://localhost:3000
프로젝트에는 다음 페이지가 있습니다.
Admin 페이지에 대한 접근은 미들웨어를 통해 제어됩니다.
먼저 브라우저에서 /admin 페이지에 접근해 보세요.
권한이 없으므로 login 페이지로 리디렉션됩니다.
Burp Suite로 요청을 캡처합니다.
요청에 다음 HTTP 헤더를 추가합니다.
x-middleware-subrequest: middleware
요청을 다시 전송합니다.
미들웨어 검사를 우회하면 admin 페이지에 접근할 수 있음을 확인할 수 있습니다.
설치가 완료된 후:
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
이 취약점을 해결하려면 영향을 받는 Next.js 버전을 최신 버전으로 교체하는 것이 좋습니다.
또한 미들웨어에서만 권한 부여를 수행하지 말고, 서버 측에서도 추가 권한 검사를 적용해야 합니다.