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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-20323 | Kitploit
도구/GitHubGitHub/ndmalc/cve-2021-20323
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPenetration TestingPapers & ResearchLearning & Education
GitHubndmalc/cve-2021-20323

CVE-2021-20323

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-20323

설명

18.0.0 이전 및 10.0.0 이후의 Keycloak에는 clients-registrations 엔드포인트에 반사형 XSS 취약점이 있습니다. 이 버그는 POST로 엔드포인트가 지원하지 않는 키를 매개변수 이름으로 포함하는 JSON 구조를 제공할 때 트리거됩니다. 응답은 오류 메시지에서 JSON 키를 반사하며 헤더가 Content-Type: text/html로 설정됩니다. 브라우저에서 실행되면 JSON 키의 HTML 코드가 해석되어 JavaScript 코드를 실행할 수 있습니다. 인증은 필요하지 않으며 이 버그는 모든 사용 가능한 realm에 영향을 미칩니다.

현재 이 버그는 Content-Type: application/json을 요구하고 POST를 통해 제출되므로 사용자에게 영향을 주는 일반적인 공격 경로는 없습니다.

이 저장소는 CVE-2021-20323에 대한 POC와 수정/완화 권장 사항을 제공합니다.

버그를 트리거하는 방법

이 버그는 매우 쉽게 트리거할 수 있습니다.

root@kitploit:~
curl -v -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: application/json" -d "{\"\":1}"

openid-connect 공급자로도 트리거할 수 있습니다.

root@kitploit:~
curl -v -X POST {BaseURL}/realms/master/clients-registrations/openid-connect -H "Content-type: application/json" -d "{\"\":1}"

참고: 이전 Keycloak 버전(quarkus 대신 wildfly로 실행되는 버전)에서는 기본 경로가 /realms/* 대신 /auth/realms/*를 사용합니다.

이 버그는 악용 가능한가?

여러 소스 여기 또는 여기에서 볼 수 있듯이, Content-Type: application/json을 요구하는 반사형 POST XSS를 악용하는 것은 일반적으로 불가능합니다. 발생할 수 있는 유일한 경우는 CORS 정책이 기본값에서 수동으로 완화되어 교차 출처 요청을 허용하는 경우입니다. 이 시나리오는 애플리케이션 소유자가 기능상의 이유로 특정 사용 사례에서만 합리적으로 가정할 수 있습니다. 그러한 경우 악용하려면 공격자는 CORS 정책에서 허용된 도메인/서버를 제어하거나 릴레이로 사용할 수 있는 두 번째 도메인에서 XSS를 보유해야 합니다.

CVE-2021-20323의 경우 Keycloak은 기본 form 제출에서 허용되는 유일한 두 가지 유형인 multipart/form-data 또는 application/x-www-form-urlencoded의 Content-Type을 가진 POST를 수락하지 않습니다. 따라서 CVE-2021-20323은 CORS가 명시적으로 허용하는 경우에만 악용할 수 있습니다.

root@kitploit:~
# curl -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: multipart/form-data" -d "{\"\":1}"
{"error":"RESTEASY003065: Cannot consume content type"}

# curl -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: application/x-www-form-urlencoded" -d "{\"\":1}"
{"error":"RESTEASY003065: Cannot consume content type"}

수정 방법?

Keycloak 18.0.0 이상으로 업데이트하세요.

RedHat이 Keycloak을 재패키징한 RedHat Single Sign-On에 대해서는 알려진 수정 버전이 없습니다.

완화 대안

  1. clients-registrations에 대한 모든 호출을 금지하도록 리버스 프록시를 구성합니다.
  2. 이 Keycloak 블로그 게시물과 유사하게 ACL로 Keycloak을 구성하여 clients-registrations에 대한 액세스를 제한합니다.

링크

  • https://github.com/keycloak/keycloak/security/advisories/GHSA-m98g-63qj-fp8j
  • https://nvd.nist.gov/vuln/detail/CVE-2021-20323
  • https://bugzilla.redhat.com/show_bug.cgi?id=2013577
  • https://access.redhat.com/security/cve/CVE-2021-20323
  • https://github.com/keycloak/keycloak/commit/3aa3db16eac9b9ed8c5335ac86f5f50e0c68662d
  • https://security.stackexchange.com/questions/263301/reflected-xss-found-in-web-application-via-post-request-with-json-body-is-this
  • https://www.keycloak.org/2021/12/cve

라이선스

MIT License © [ndmalc]

도구 다운로드