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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gitlab-gitea-import-ssrf — GitLab - High - Gitea HTTPS 가져오기 SSRF - UrlBlocker 핀 드롭 | Kitploit
도구/GitHubGitHub/abraxas/gitlab-gitea-import-ssrf
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLabs & Practice
GitHubabraxas/gitlab-gitea-import-ssrf

gitlab-gitea-import-ssrf

GitLab - High - Gitea HTTPS 가져오기 SSRF - UrlBlocker 핀 드롭

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - gitlab-gitea-import-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitlab-gitea-import-ssrf

gitlab-gitea-import-ssrf

GitLab CE 19.4.1 - GitLab Inc.

Gitea 가져오기는 UrlBlocker.validate!를 한 번 호출한 뒤, https의 경우 IP로 고정된 URI를 버리고 Faraday에 원래 호스트명을 넘긴다. Octokit UrlValidation은 다시 검증하지만 env[:url]을 재작성하지 않는다. 이 두 조회 사이에 이름을 리바인딩하면 GitLab은 마치 Gitea인 것처럼 루프백에 GET 요청을 보낸다. 저장소 목록 JSON은 GET /import/gitea/status.json으로 돌아온다. HTTP 가져오기는 핀을 유지한다. 직접 https://127.0.0.1은 차단된다.

개인 네임스페이스에서 Gitea 가져오기를 열 수 있는 로그인 사용자는 GitLab이 자신이 루프백으로 리바인딩한 호스트를 가져오도록 만들 수 있으며, 응답 본문을 받는다.

ID아직 CVE 없음
CWECWE-918, CWE-367
CVSSHigh: 7.7 CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N
제품GitLab CE
영향받는 버전19.4.1-ce.0 (v19.4.1-ee 트리의 26212baacadb)
인증인증된 사용자, Gitea 가져오기, 개인 네임스페이스
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

공격자가 할 수 있는 일

Gitea Host URL을 https://<공격자가 제어하는 이름>/으로 설정한다. UrlBlocker는 첫 번째 공용 A 레코드를 허용한다. HTTPS client_options는 그 호스트명을 유지한다. 127.0.0.1로 리바인딩한다. Faraday는 GitLab 워커 루프백에서 캐처에 GET 요청을 보낸다. status.json의 provider_repos는 캐처가 반환한 값이다.

올인원 omnibus에서는 그것이 Workhorse, Puma, 익스포터, 그리고 워커에서 수신 대기 중인 다른 모든 것이다. 호스트 RCE가 아니다. 인증되지 않은 것도 아니다. HTTP Host URL은 고정된 IP에 머문다.

같은 제품, 형제 격인 잔여물: Gitaly fetch가 resolved_address를 생략, webhook 0.0.0.0/8.

발견 방법

먼저 2026년 9월 23일 19.4.1 / 19.3.3 / 19.2.7 패치 노트를 읽고, 그다음 v19.4.1-ee 트리를 읽었다. CI 정규식 RCE, MR diff XSS, Workhorse file.path 읽기는 이 핀에서 닫혀 있다. 가져오기 SSRF는 끝나지 않았다.

Import::GiteaController#client_options가 그 잔여물이다:

host: verified_url.scheme == 'https' ? provider_url : verified_url.to_s,

HTTP는 verified_url(IP)을 사용한다. HTTPS는 provider_url(사용자가 입력한 이름)을 사용한다. LegacyGithubImport::Client는 그 호스트로 Octokit api_endpoint를 만든다. Gitlab::Octokit::UrlValidation은 validate!를 호출한 뒤 재작성 없이 @app.call(env)를 호출한다.

기본 gitlab/gitlab-ce:19.4.1-ce.0을 띄웠다. 로컬 요청은 꺼져 있다. Faraday ssl.verify가 true이므로 랩 CA를 /etc/gitlab/trusted-certs에 넣었다. gitea.lab의 DNS: 조회 1-2는 1.1.1.1을 반환하고, 이후 조회는 127.0.0.1을 반환한다. 캐처는 :443에서 GitLab netns를 공유한다. GET /import/gitea/status.json은 GITLAB-GITEA-IMPORT-SSRF-WITNESS라는 이름의 provider_repos를 반환했다. 캐처 로그: GET /api/v1/user/repos peer=127.0.0.1 host=gitea.lab.

직접 https://127.0.0.1/ : "Specified URL cannot be used". HTTP http://gitea.lab/은 핀에 머물렀고 witness를 반환하지 않았다.

이미 기록된 잘못된 시도들: Accept: application/json을 붙인 /users/sign_in은 404(HTML은 200); 시드 비밀번호 CveLabRoot9!는 root를 포함하므로 거부됨; CA 바인드 마운트 ro는 재구성이 파일을 링크한 뒤 EROFS; 조회 2에서 처음 두 개 후 루프백을 하면 UrlValidation이 Faraday가 연결하기 전에 차단한다. 홀수는 공용, 짝수는 루프백인 pairs 모드가 성공했다. 리버스 셸. 연극. 오라클은 status.json의 witness와 캐처 peer다.

랩

cd lab
./run.sh

오직 http://127.0.0.1:18400만 대상으로 한다. GitLab CE는 수 GB의 RAM을 요구한다. 첫 부팅은 느리다. 승인된 랩에서만.

status.json status=200 ... provider_repos ... GITLAB-GITEA-IMPORT-SSRF-WITNESS
catcher GET /api/v1/user/repos peer=127.0.0.1 host=gitea.lab status=200 witness=True
negative-a https://127.0.0.1 blocked
negative-b http://gitea.lab no-witness
SUCCESS GITLAB-GITEA-IMPORT-SSRF status.json mode=pairs http=200 GITLAB-GITEA-IMPORT-SSRF-WITNESS

잔여물

def client_options
  verified_url, provider_hostname = verify_blocked_uri
  {
    host: verified_url.scheme == 'https' ? provider_url : verified_url.to_s,
    api_version: 'v1',
    hostname: provider_hostname
  }
end

HTTP가 이미 하는 것과 같은 방식으로 https에도 verified_url.to_s를 사용하라. Octokit UrlValidation에서 env[:url]을 고정된 IP로 재작성하라.

참고 자료

  • gitlab.com/gitlab-org/gitlab 태그 v19.4.1-ee
  • gitea_controller.rb · legacy_github_import/client.rb · octokit/url_validation.rb
  • 같은 제품: gitlab-gitaly-fetch-ssrf · gitlab-webhook-0net-ssrf
  • CWE-918 · CWE-367

라이선스

GNU Affero GPL v3.0. LICENSE 참조. 루프백 랩 전용. 보증 없음.

도구 다운로드