34. Hunit (GET TO WORK) - Linux (git*, GIT_SSH_COMMAND)
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 내용은~
