1. Enumeration

: Port scanning

 

 

 

: smb share enum (rabbit hole)

> 파일 형식 확인

 

> 파일 업로드 테스트

> 별거 없음

 

 

 

: Web enum

> 소스 내 힌트 확인

> 접근해 보면

> 더 파보면

> 사용자 계정 정보 확인이 가능

 

 

 

2. Exploitation

위 계정 중 하나로 ssh 로그인을 시도하면

침투 성공!

 

 

 

 

3. Privilege Escalation

: crontab backup file 확인해 보면

 

> root 디렉터리 하위에서 실행되는 스크립트라

내용 확인은 안되지만 여튼 실행되는 중

> /git-server 경로가 있는 것 같다!

 

 

 

# /git-server 공략

1) git 사용자가 존재하며 /git-server 디렉터리 존재 확인

 

2) /git-server 내 files 확인

> git backend 파일들이라 정확한 내용 확인이 어려움

 

 

 

3) git 복제 작업 후 파일 재확인

> backups.sh 내용 확인 완료

 

 

4) git log 확인

> 별 내용 없음

 

 

5) 추정

: cron 설정 다시 확인

 

> backups.sh에서 변화가 생기면

저장소의 master brance에 수행된 변경 사항을

pull 해 주는 것으로 추론할 수 있음

 

 

 

 

# git의 기능을 활용한 공략법

: 공격에 필요한 코드를 backups.sh에 넣어주고

변경 사항을 master branch에 push 해 준다.

 

1) Git ID 생성

 

 

2) 스크립트 업데이트 테스트

 

 

3) 업데이트된 스크립트 commit 전 실행 권한 부여

 

 

4) 변경 사항을 추가 및 커밋하고 master branch로 push

> rejected!!! 변경 불가 확인

 

 

 

5) git 사용자 디렉터리 내 ssh 키 존재 확인

> id_rsa.pub이랑 authorized_keys는 동일한 파일

 

> id_rsa 키를 복사해 ssh 로그인 시도!

git 쉘이기 때문에 명령어 사용이 제한됨!

 

 

 

6) /git-server clone 작업

 

> 이제 변경 사항을

master branch로 push 시도해 본다.

 

 

7) 먼저 (다시) git ID 생성

 

 

8) backups.sh 스크립트 내

리버스 쉘 구문 삽입 후 실행 권한 부여

 

 

 

9) 변경사항 추가 후 커밋 시도

 

 

10) push 전에 리스너 기동해 주고

 

 

 

11) 마지막, master branch로 push 시도!

 

 

12) crontab 내용대로 pull.sh 스크립트가

2분마다 실행되고 backups.sh 스크립트는

3분마다 실행되니, 도합 5분을 기다리면

backups 스크립트 내 리버스 쉘 구문이

실행되면서

 

 

포트 설정을 잘못해 실패;;

 

 

위 과정을 다시 반복한 뒤 기다리면

 

 

 

참고로 pull.sh 내용은~

 

 

 

728x90
반응형

+ Recent posts