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

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

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

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

도구 디렉토리

카테고리

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

CVE-2026-20896

CVE-2026-20896("Gitea Docker: One Header, Any User")용 공개 PoC 및 탐지기

저장소 보기
6122개월 전아직 검토되지 않음
웹사이트

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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에 명시)은 입니다. 즉 루프백만 허용되므로 기본적으로 로컬 프록시만 신뢰됩니다. 공식 Docker 이미지는 이 값을 사용하지 않습니다. 템플릿에 가 하드코딩되어 있습니다(, rootless 이미지의 경우 ). 는 모든 소스 IP를 일치시키므로 허용 목록 검사가 무의미해집니다. 리버스 프록시 로그인을 켜면 프록시뿐만 아니라 포트에 접근 가능한 누구나 헤더를 보낼 수 있습니다. 자동 등록이 활성화되어 있으면 즉시 계정이 생성됩니다. 관리자의 사용자 이름을 보내면 관리자가 됩니다.

127.0.0.0/8,::1/128
app.ini
*
docker/root/etc/templates/app.ini:55
docker/rootless/etc/templates/app.ini:52
*

따라서 코드 자체는 틀리지 않았으며, 패키징된 기본값이 문제이고 이는 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 참조.

도구 다운로드