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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-20896 — Public PoC and detector for CVE-2026-20896 ("Gitea Docker: One Header, Any User") | Kitploit
도구/GitHubGitHub/rz1027/cve-2026-20896
Vulnerability AnalysisExploitationWeb SecurityPenetration TestingAuthenticationMisconfigurationLearning & EducationRed Teaming
GitHubrz1027/cve-2026-20896

CVE-2026-20896

Public PoC and detector for CVE-2026-20896 ("Gitea Docker: One Header, Any User")

저장소 보기
611개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

CVE-2026-20896

Gitea의 공식 Docker 이미지(1.26.2까지)는 기본 설정으로 REVERSE_PROXY_TRUSTED_PROXIES = *를 포함하고 있습니다. 리버스 프록시 로그인을 활성화하면 와일드카드로 인해 모든 소스 IP가 신뢰되는 프록시로 간주되어, 해당 포트에 접근 가능한 누구나 X-WEBAUTH-USER 헤더를 보내 원하는 사용자로 로그인할 수 있습니다. 비밀번호나 토큰이 필요 없습니다.

이 문제를 Gitea에 보고했으며, 1.26.3 / 1.26.4에서 수정되었습니다. 이 저장소는 제가 직접 작성한 분석, 작동하는 PoC, 그리고 점검 도구입니다. 이미 패치된 공개 버그에 대한 내용입니다.

  • CVE 레코드: https://www.cve.org/CVERecord?id=CVE-2026-20896 (보고자: rz1027)
  • Gitea 권고: https://github.com/go-gitea/gitea/security/advisories/GHSA-f75j-4cw6-rmx4
  • 수정 사항/릴리스 노트: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/

버그

Gitea는 리버스 프록시 인증을 지원합니다. 프록시가 X-WEBAUTH-USER를 설정하여 헤더를 전달하면, Gitea는 해당 헤더를 사용자 이름으로 신뢰합니다. 오직 프록시만이 이 헤더를 설정할 수 있다면 문제없습니다. 이를 강제하는 설정은 REVERSE_PROXY_TRUSTED_PROXIES로, IP 허용 목록입니다. Gitea는 요청의 소스 IP가 이 목록에 포함될 때만 헤더를 인정합니다.

문서상 안전한 기본값(app.example.ini에 명시)은 127.0.0.0/8,::1/128입니다. 즉 루프백만 허용되므로 기본적으로 로컬 프록시만 신뢰됩니다. 공식 Docker 이미지는 이 값을 사용하지 않습니다. app.ini 템플릿에 *가 하드코딩되어 있습니다(docker/root/etc/templates/app.ini:55, rootless 이미지의 경우 docker/rootless/etc/templates/app.ini:52). *는 모든 소스 IP를 일치시키므로 허용 목록 검사가 무의미해집니다. 리버스 프록시 로그인을 켜면 프록시뿐만 아니라 포트에 접근 가능한 누구나 헤더를 보낼 수 있습니다. 자동 등록이 활성화되어 있으면 즉시 계정이 생성됩니다. 관리자의 사용자 이름을 보내면 관리자가 됩니다.

따라서 코드 자체는 틀리지 않았으며, 패키징된 기본값이 문제이고 이는 Docker 이미지에만 해당됩니다. app.example.ini를 따르는 바이너리나 직접 빌드한 설치는 루프백 기본값을 유지하므로 영향을 받지 않습니다.

시도해보기

Docker와 Python 3 필요 (표준 라이브러리만 사용, 설치 필요 없음).

root@kitploit:~
docker compose up -d          # boots vulnerable gitea/gitea:1.26.2
# give it ~30-60s to finish first-run setup, then:
python3 poc.py                # random new victim, shows auto-registration
python3 poc.py http://localhost:3000 admin   # impersonate a chosen username
docker compose down -v        # clean up

번들 이미지에서의 결과:

root@kitploit:~
1) /user/settings with no header        -> HTTP 303   (redirect to login = not authed)
2) /user/settings with X-WEBAUTH-USER    -> HTTP 200
   logged in as 'pocadmin' - no password, no token, any source IP
3) /pocadmin profile page                -> HTTP 200   (account created on the fly)

이 우회는 웹 세션에서 동작하며, /api/v1/...의 토큰 API에는 영향을 주지 않습니다. 토큰 API는 해당 헤더를 무시합니다.

자신의 인스턴스 확인

detect.py는 무해한 프로브 하나를 보내 정상 요청과 비교합니다. 어떤 것도 변경하지 않습니다.

root@kitploit:~
python3 detect.py https://gitea.example.com

VULNERABLE, looks-safe, inconclusive 중 하나를 출력합니다. 소유하고 있거나 테스트가 허가된 대상에 대해서만 실행하세요.

수정

1.26.3 / 1.26.4 이상으로 업그레이드하세요. 리버스 프록시 인증은 이제 선택 사항이며, 이미지에 더 이상 와일드카드가 포함되지 않습니다. 아직 업그레이드할 수 없다면 REVERSE_PROXY_TRUSTED_PROXIES를 프록시의 실제 IP 또는 CIDR로 설정하고(절대 * 사용 금지), 리버스 프록시 인증을 사용하지 않는다면 ENABLE_REVERSE_PROXY_AUTHENTICATION을 비활성화하세요.

타임라인

  • 2026-05-26: Gitea에 비공개로 보고됨.
  • 2026-07-03: CVE-2026-20896 공개, rz1027로 크레딧 표기.
  • Gitea 1.26.3 / 1.26.4에서 수정됨.

크레딧

이 버그를 발견하여 2026-05-26에 Gitea에 보고했습니다. Gitea 권고 GHSA-f75j-4cw6-rmx4에 명시된 보고자입니다.

일부 보도에서 이 버그를 Exploitarium 저장소의 것으로 잘못 표기했습니다. 이는 사실이 아니며, 해당 저장소가 공개한 것과는 별개의 문제입니다. 이후 여러 블로그에서 수정되었지만, 일부는 여전히 잘못된 상태입니다.

MIT 라이선스. LICENSE 참조.

도구 다운로드