1.Enumeration

: Nmap

 

 

 

 

: Nikto

 

 

: Web enum

 

: register 후 로그인을 하면

다음과 같은 에러 메시지가 뜬다

 

: 사용 중인 계정 확인

> Register 통해 확인하거나

 

 

> 검색 기능

 

> 가장 확실한 방법으로는

Users API 관련 알려진 취약점을

악용하는 방법이 있다.

https://gitlab.com/gitlab-org/gitlab-foss/-/issues/40158

> root / webmaster / michelle / coaran

 

 

 

위 계정 중 로그인이 가능한 계정 두 개 확인

 


 

 

2. Exploitation

 

발견한 계정과 상관없이

gitlab의 알려진 취약점을 악용하면

https://github.com/inspiringz/CVE-2021-22205

침투 성공!

(어떤 원리인지는 알아야 한다)

 


 

 

3. Privilege Escalation

정확한 버전 확인

 

누군가의 키가 있고

 

 

git으로 접속이 된 상황이라

passwd 파일을 뒤져봐도

UID가 1000번인 사용자는

확인이 안되는데

 

이유인즉슨

 

 

현재 들어온 곳이

docker container이기 때문!

 

 

 

웹에서 찾은 사용자 아이디를 하나씩 시도하면

진짜 접속 성공!

 

 

문제 해결을 위해서는

위 두 환경 모두 사용해야

한다!

 

 

: 스크립트 확인

 

 

> 권한이 없어 zip 파일 내용이나

동일한 내용인 /srv 하위 파일들

내용 확인이 어려우나

확실한 것은

 

 

cronjob이 root 권한으로

해당 스크립트를 수행 중

 

 

: 직접 /srv/gitlab/logs에 접근해 보면

 

 

> 권한이 없어 읽거나(일부 제외) 쓸 수 없지만

해당 경로의 모든 파일(*)을 root가

백업 시키고 있다.

 

 

: docker 내 git 컨테이너로 돌아와

마운트 현황을 보면

> /srv/gitlab/logs 디렉터리는

/var/log/gitlab 경로에

마운트 되어 있고

 

해당 경로로 이동한 뒤

컨테이너 내 git 사용자에게

write 권한이 있는지 확인해 보면

> 대부분 있어 무언가 할 수 있다.

 

 

: 공략 순서

> 도커 컨테이너에서

write 권한이 있는 아무 폴더에서

root ssh private key에 심벌릭 링크 걸어두기

> 메인 서버에서 root가 해당 내용이 포함된

모든 git 내부 파일을 backup 시켜 놓을 테니

압축 풀어 확인

> ssh root로 로그인

 

 

1) docker container

: write 권한이 있는 폴더 선택 후

root id_rsa 심벌릭 링크 걸기

 

 

2) backup.zip 파일 unzip

 

 

3) ssh id_rsa 키 정상 마운트 여부 확인 후 루트 로그인

 

 

 

 



 

728x90
반응형

+ Recent posts