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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2022-31692 — Spring Security 인가 우회 CVE-2022-31692에 취약한 앱을 시연하는 프로젝트입니다. | Kitploit
도구/GitHubGitHub/blipzip/cve-2022-31692
Authentication & AuthorizationVulnerability AnalysisWeb Application ExploitationPenetration TestingLearning & Education
GitHubblipzip/cve-2022-31692

cve-2022-31692

Spring Security 인가 우회 CVE-2022-31692에 취약한 앱을 시연하는 프로젝트입니다.

저장소 보기
356143년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2022-31692 데모

개요

간단한 Spring Boot 애플리케이션으로, CVE-2022-31692에 취약한 구성을 시연합니다.

이 취약점은 심각도 때문에 주목을 받을 만합니다. 인증 우회를 허용하므로 CVSS 3.x 기본 점수는 9.8입니다. 이 프로젝트의 목적은 권고문에 설명된, 취약점이 적용되도록 하는 조건들을 시연하는 것입니다.

  • 애플리케이션은 Spring Security가 forward 및 include 디스패처 유형에 보안을 적용할 것으로 기대합니다.
  • 애플리케이션은 AuthorizationFilter를 수동으로 또는 authorizeHttpRequests() 메서드를 통해 사용합니다.
  • 애플리케이션은 FilterChainProxy가 forward 및/또는 include 요청에 적용되도록 구성합니다(예: spring.security.filter.dispatcher-types = request, error, async, forward, include).
  • 애플리케이션은 요청을 더 높은 권한으로 보호되는 엔드포인트로 forward 또는 include할 수 있습니다.
  • 애플리케이션은 authorizeHttpRequests().shouldFilterAllDispatcherTypes(true)를 통해 모든 디스패처 유형에 Spring Security가 적용되도록 구성합니다.

참고로, 이 커밋이 취약점을 해결하는 커밋이라고 확신합니다.

시연

애플리케이션에는 세 개의 URL이 있습니다.

  1. / 인덱스 페이지
  2. /admin 관리자 페이지. 사용자가 Basic auth(자격 증명 "user"/"pass")를 제공하고 ROLE_ADMIN 역할을 할당받아야 합니다.
  3. /forward 관리자 페이지로의 서버 측 forward

접근 제어는 SecurityConfig 클래스의 authorizeHttpRequests()를 통해 지정됩니다.

root@kitploit:~
.authorizeHttpRequests((authz) -> authz
	.antMatchers("/").permitAll()
	.antMatchers("/forward").permitAll()
	.antMatchers("/admin").hasAuthority("ROLE_ADMIN")
	.shouldFilterAllDispatcherTypes(true)
)

예상 동작

  1. 사용자가 /에 접근하고 인증되지 않습니다(permitAll() 덕분에).
  2. 사용자가 /admin에 접근합니다. 인증을 제공하지 않으면 요청이 거부됩니다(401 Not authorized).
  3. 사용자가 /admin에 접근합니다. 유효한 인증을 제공하지만, 필요한 역할 .hasAuthority("ROLE_ADMIN")이 없으므로 요청은 여전히 거부됩니다(403 Unauthorised).
  4. 사용자가 /forward에 접근합니다. 요청은 GET /forward에 대한 보안 필터 체인을 통과하며 permitAll() 덕분에 유효한 것으로 통과합니다. 컨트롤러는 요청을 처리하고 Dispatcher에 forward:/admin을 반환합니다. spring.security.filter.dispatcher-types 및 .shouldFilterAllDispatcherTypes(true) 설정에 따라 이는 FORWARD 유형이므로 필터 체인을 다시 통과해야 합니다. 필터를 두 번째로 통과하면 요청이 거부됩니다(역시 hasAuthority("ROLE_ADMIN") 덕분에).

실제 동작

사용자가 /forward에 접근하면 요청은 필터 체인을 한 번 통과하여 유효한 것으로 통과합니다. forward가 처리되지만, 다시 체인을 통과하는 대신 그냥 유효한 것으로 통과되어 관리자 페이지가 반환됩니다.

도구 다운로드