
🫖 단일 대상 Gitea CVE-2026-60004 RCE 검증 PoC
Gitea의
diffpatchGit 훅 원격 코드 실행 취약점을 위한 직접적이고 단일 대상을 검증하는 도구입니다.
이 저장소는 집중된 AfterDark 검증기를 포함합니다: 스크립트 하나, 대상 하나, 실행 한 번. 탐색, 정찰, 검증 또는 기타 하위 명령은 없습니다.
이 프로젝트는 승인된 보안 테스트, 방어적 검증, 연구 및 교육 목적으로만 제공됩니다. 소유한 시스템 또는 명시적인 서면 허가를 받은 시스템에서만 사용하십시오.
저자와 기여자는 오용, 손상, 서비스 중단, 데이터 손실 또는 법적 결과에 대해 책임을 지지 않습니다. 적용 가능한 법률, 계약, 행동 규칙 및 공개 요구 사항을 준수할 책임은 사용자에게 있습니다.
이것은 활성 RCE 개념 증명입니다. 계정을 생성하고, 비공개 저장소를 만들고, 계약 마커를 작성하고, Gitea 운영 체제 사용자로 명령을 실행합니다. 이에 따라 취급하십시오. 🛡️
CVE-2026-60004는 Gitea의 저장소 diffpatch 워크플로에 영향을 미칩니다. 저장소 쓰기 권한이 있는 공격자는 제어된 패치 콘텐츠를 제출하여 Git 훅을 설치하고 트리거할 수 있으며, 결과적으로 Gitea 서비스 계정으로 명령이 실행됩니다.
| 항목 | 세부 사항 |
|---|---|
| 제품 | Gitea |
| 영향을 받는 버전 | >= 1.17.0, < 1.27.1 |
| 패치된 버전 | 1.27.1 |
| 영향 | Gitea OS 사용자로 원격 명령 실행 |
| 업스트림 권고 | GHSA-rcr6-4jqh-j84m |
Forgejo 및 기타 포크는 수동 구현 검토가 필요하며 자동으로 영향을 받는 것으로 간주되지 않습니다.
각 실행은 하나의 고정된 워크플로를 수행합니다:
diffpatch를 통해 조작된 post-index-change 훅을 설치하고 트리거합니다.id를 실행합니다.이 도구는 단일 대상만 허용합니다. 대상 목록, 와일드카드, 대량 스캔 또는 수동 탐지 모드가 없습니다.
PATH에 Git 사용 가능이 스크립트는 Python 표준 라이브러리만 사용합니다. pip install이 필요하지 않습니다.
git clone https://github.com/InfoSec-DB/CVE-2026-60004-Gitea-RCE-PoC.git
cd CVE-2026-60004-Gitea-RCE-PoC
python3 scanner.py --help
python3 scanner.py \
--contract-number ENG-2026-001 \
--username audit-eng-2026-001 \
--password 'use-a-unique-disposable-password' \
https://gitea.example
짧은 옵션도 사용할 수 있습니다:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
https://gitea.example
🚨 비밀번호는 명령줄에 제공되며 최종 결과 패널에 표시됩니다. 고유한 일회용 테스트 자격 증명만 사용하십시오. 명령줄 인수는 셸 기록에 남거나 로컬 프로세스 검사 도구에 일시적으로 표시될 수 있음을 인지하십시오.
기본 명령은 id입니다. 좁은 범위의 사용자 지정 명령은 --cmd로 제공할 수 있습니다:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--cmd 'uname -a' \
https://gitea.example
사용자 지정 명령에는 의도적으로 타임아웃이 없습니다. 검증기는 원격 명령이 종료될 때까지 대기하므로, 계약이 특별히 요구하지 않는 한 대화형 또는 장기 실행 명령을 피하십시오.
기본적으로 각 실행은 다음 아래에 기록됩니다:
afterdark-results/<contract>/<UTC timestamp>/
다른 루트 또는 정확한 실행 디렉터리를 선택할 수 있습니다:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--results-root ./engagement-evidence \
https://gitea.example
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--output-dir ./engagement-evidence/run-01 \
https://gitea.example
각 실행은 비공개 0600 파일을 생성하며 기존 결과를 덮어쓰지 않습니다:
confirmation.json — 대상, 버전 결과, 계정 이름, 타임스탬프, 명령, 반환 코드 및 캡처된 아티팩트confirmation.command-output.txt — 완전한 원격 명령 출력증거에는 민감한 계약 정보가 포함될 수 있습니다. Git에 커밋하지 마십시오. 포함된 .gitignore는 기본 결과 경로와 일반적인 증거 파일 이름을 제외합니다.
검증기는 서버 측 아티팩트를 자동으로 삭제하지 않습니다. 평가 후 승인된 관리자는 다음을 수행해야 합니다:
afterdark-* 저장소 삭제/tmp/gitea-validation-<contract>/client.txt 제거1.27.1 이상으로 업그레이드성공적인 결과는 Gitea 서비스 계정으로 명령 실행을 증명합니다. 그 자체로 루트 액세스, 지속성, 측면 이동 또는 완전한 호스트 손상을 증명하지는 않습니다.
id로 제한테스트는 네트워크 요청 없이 파싱 및 PoC 구성을 실행합니다:
python3 -m unittest discover -s tests -v
검증기를 더 안전하고, 더 안정적이며, 정리하기 쉽게 만드는 개선 사항을 환영합니다. 실제 대상 세부 정보, 자격 증명, 비공개 증거 또는 파괴적 페이로드를 제출하지 마십시오.
이 도구의 취약점에 대해서는 SECURITY.md를 따르십시오.
신중하고 계약에 구속된 보안 검증을 위해 제작되었습니다. 🫖🛡️