Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gitea-user-keys-idor — Gitea IDOR(CWE-639) 취약점에 대한 개념 증명 및 실습 환경으로, GET /api/v1/user/keys/{id}에서 인증된 read:user 토큰을 통해 다른 사용자의 SSH 키와 배포 키를 열거할 수 있다. | Kitploit
도구/GitHubGitHub/abraxas/gitea-user-keys-idor
Vulnerability AnalysisExploitationInformation GatheringWeb SecurityPenetration TestingAPI SecurityLabs & Practice
GitHubabraxas/gitea-user-keys-idor

gitea-user-keys-idor

Gitea IDOR(CWE-639) 취약점에 대한 개념 증명 및 실습 환경으로, GET /api/v1/user/keys/{id}에서 인증된 read:user 토큰을 통해 다른 사용자의 SSH 키와 배포 키를 열거할 수 있다.

저장소 보기
615일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - gitea-user-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-user-keys-idor

gitea-user-keys-idor

Gitea 1.27.3 - Gitea

GET /api/v1/user/keys/{id}는 현재 사용자 그룹(reqToken, rejectPublicOnly)에 속해 있습니다. 그런데도 핸들러는 소유자 확인 없이 숫자 ID로 행을 로드합니다. 같은 테이블에는 사용자 키, 배포 키, 그리고 principal이 들어 있습니다. GPG의 형제 엔드포인트는 제대로 처리합니다: GetGPGKeyForUserByID(ctx, ctx.Doer.ID, id). 비공개 필드는 보호됩니다. 하지만 공개 키 자료, 제목, 지문은 보호되지 않습니다. ID는 순차적입니다.

read:user 토큰으로 1, 2, 3을 순회하며 다른 사람의 SSH 키와 배포 키를 수집할 수 있습니다. 개방형 등록이 이 문제를 신규 계정 버그로 만듭니다.

ID아직 CVE 없음
CWECWE-639
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
제품Gitea
영향 버전v1.27.3 (146cc3e)까지
인증인증됨 (read:user 토큰)
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

공격자가 할 수 있는 일

등록하고(기본 개방형 등록), read:user 토큰을 발급한 뒤 /api/v1/user/keys/{id}를 순회합니다. 그러면 자신이 소유하지 않은 키, 즉 배포 키를 포함한 키들의 제목, 지문, 공개 키 자료를 얻습니다. 개인 키는 얻지 못합니다. 셸도 얻지 못합니다. 다만 누가 무엇에 접근 권한을 가졌는지 목록화합니다.

1.27.3 키 GHSA는 사용자명 범위 목록과 individualPermsChecker에 관한 것이었습니다. 이 조회 건이 아니었습니다.

같은 태그의 잔여 문제: git HTTP redirect SSRF.

발견 경위

v1.27.3은 2026 GHSA 물결을 마감했습니다. 그래도 저는 그 태그를 붙들고 GPG 옆의 현재 사용자 키 핸들러를 읽었습니다. GPG는 남의 id에 404를 반환합니다. SSH는 그렇지 않습니다.

seed.sh는 피해자 키 제목 GHSA-GITEA-KEY-IDOR-WITNESS와 공격자 키를 심습니다. 공격자 자신의 목록에는 witness가 없습니다. 공격자로서 GET /user/keys/1을 하면 있습니다. 남의 id로 GPG를 호출하면 404가 납니다. 그게 논증의 전부입니다.

이미 기록된 우회로: 공격자 자신의 목록을 유출로 취급한 것(그렇지 않습니다 - 목록은 범위가 제한되지만, GET-by-id는 그렇지 않습니다); 리버스 셸. 연극일 뿐입니다.

클라이언트 버그는 제품 버그처럼 보입니다. http.client를 가리는 헬퍼는 패킷을 전혀 보내지 않습니다. HTTPResponse의 .recv()는 .read()가 아닙니다. 한 번 언급하는 이유는 시간을 잡아먹었고, 잠시 동안 1.27.3이 일을 끝낸 것처럼 보였기 때문입니다.

랩

cd lab
./run.sh

오직 http://127.0.0.1:18101만 대상으로 하십시오.

add-key user=victim status=201 title=GHSA-GITEA-KEY-IDOR-WITNESS id=1
add-key user=attacker status=201 id=2
attacker-list status=200 ids=[2] (no witness)
get id=1 status=200 snippet contains GHSA-GITEA-KEY-IDOR-WITNESS
SUCCESS Gitea #1 user/keys IDOR

수정 방법

key.OwnerID == ctx.Doer.ID(또는 사이트 관리자)가 아니면 404를 반환하십시오. 배포/principal 유형은 거부하십시오. GPG와 동일하게 맞추십시오.

참고 자료

  • github.com/go-gitea/gitea 태그 v1.27.3
  • GetPublicKey
  • 인접 패치(이 조회 건 아님): CVE-2026-60004 · CVE-2026-59774
  • 같은 태그: gitea-git-redir-ssrf
  • CWE-639

라이선스

GNU Affero GPL v3.0. LICENSE를 참조하십시오. 루프백 랩 전용. 보증 없음.

도구 다운로드