34. Hunit (GET TO WORK) - Linux (git*, GIT_SSH_COMMAND)
1. Enumeration
: Port scanning
![](https://blog.kakaocdn.net/dn/9BJpj/btrKIxF8ZVF/OG4SQnoASeQmhkVzWIVzfK/img.png)
![](https://blog.kakaocdn.net/dn/bkw7Ub/btrKMohmj6F/rVxAJdmbsX19K9zlpxEbNK/img.png)
: smb share enum (rabbit hole)
![](https://blog.kakaocdn.net/dn/bHNBGT/btrKIrTm8PJ/kRwrc0TRQ9DKV2snsXP6h1/img.png)
![](https://blog.kakaocdn.net/dn/MDF3k/btrKQjfwgOF/32rYT5I9yUkqGsS3amfLcK/img.png)
> 파일 형식 확인
![](https://blog.kakaocdn.net/dn/b0cFQg/btrKIyE25G4/U2aH5Sbokr13q3pBhOBMwK/img.png)
> 파일 업로드 테스트
![](https://blog.kakaocdn.net/dn/VtnE7/btrKIrTm8Rk/8M7TJXEK6SrxEI6Jd9bkAk/img.png)
> 별거 없음
: Web enum
![](https://blog.kakaocdn.net/dn/buTC1y/btrKOIftVuL/wrhUx0RcJgTBipCTcWKOYK/img.png)
> 소스 내 힌트 확인
![](https://blog.kakaocdn.net/dn/cqqo7a/btrKG96Zfv8/qfWXmmLjwT49EnLN34oK9K/img.png)
> 접근해 보면
![](https://blog.kakaocdn.net/dn/dsjfYD/btrKGO27mPh/ppRTplz2lAoetk9wYzSQKK/img.png)
> 더 파보면
![](https://blog.kakaocdn.net/dn/TIAAx/btrKIsLuz3V/bal4vbEJ0KMKubt83o2zv1/img.png)
![](https://blog.kakaocdn.net/dn/b987ZJ/btrKGR6Dp7J/JyKvDKu8KGUgrfk8R8hSP1/img.png)
> 사용자 계정 정보 확인이 가능
2. Exploitation
위 계정 중 하나로 ssh 로그인을 시도하면
![](https://blog.kakaocdn.net/dn/kP5gn/btrKQjmhQKm/bEDG6OKEcwkWqE9ZGeXED0/img.png)
침투 성공!
3. Privilege Escalation
: crontab backup file 확인해 보면
![](https://blog.kakaocdn.net/dn/cMe0zx/btrKU8AcTsP/rKiontVHwr4LceU7dWwsAK/img.png)
![](https://blog.kakaocdn.net/dn/dm2htG/btrKU6PTleY/QGQSqP3GcTHWODKJcKUrCK/img.png)
> root 디렉터리 하위에서 실행되는 스크립트라
내용 확인은 안되지만 여튼 실행되는 중
> /git-server 경로가 있는 것 같다!
# /git-server 공략
1) git 사용자가 존재하며 /git-server 디렉터리 존재 확인
![](https://blog.kakaocdn.net/dn/xTZPJ/btrK0GaVHmY/BNaAcZGSk8jbpGB3IROtnk/img.png)
![](https://blog.kakaocdn.net/dn/1p1J6/btrKZCNFrPg/0UJl5KhodUJcdkGIYBpc7K/img.png)
2) /git-server 내 files 확인
![](https://blog.kakaocdn.net/dn/VAR5E/btrKWCnh9pM/jIG7Wk6zQQpCsXnGYFEJ7K/img.png)
> git backend 파일들이라 정확한 내용 확인이 어려움
3) git 복제 작업 후 파일 재확인
![](https://blog.kakaocdn.net/dn/8PvhE/btrK0GBY28m/jSlHFBwSg01qqeR82dK611/img.png)
![](https://blog.kakaocdn.net/dn/lWNi6/btrKVyerpBd/Ijv4oZwQTCKLDbfnP54uCk/img.png)
> backups.sh 내용 확인 완료
4) git log 확인
![](https://blog.kakaocdn.net/dn/bPD4UC/btrKZDloA44/SGkp4KpzBtaQZUbjKGdETk/img.png)
> 별 내용 없음
5) 추정
: cron 설정 다시 확인
![](https://blog.kakaocdn.net/dn/dtRkiE/btrKXGDeuT8/pDIh6NssVUQSlGKHLNz4x1/img.png)
> backups.sh에서 변화가 생기면
저장소의 master brance에 수행된 변경 사항을
pull 해 주는 것으로 추론할 수 있음
# git의 기능을 활용한 공략법
: 공격에 필요한 코드를 backups.sh에 넣어주고
변경 사항을 master branch에 push 해 준다.
1) Git ID 생성
![](https://blog.kakaocdn.net/dn/by4cPt/btrK0GhFdDb/zdN26vpyUhtfZXszMd0HL0/img.png)
2) 스크립트 업데이트 테스트
![](https://blog.kakaocdn.net/dn/bpYgDe/btrK2mQxbJq/jCyMcoVGjMQMwr44zXq5T0/img.png)
3) 업데이트된 스크립트 commit 전 실행 권한 부여
![](https://blog.kakaocdn.net/dn/yb1f1/btrKYG34AZB/3x3prGuTKWS1YAUD4XAzY1/img.png)
4) 변경 사항을 추가 및 커밋하고 master branch로 push
![](https://blog.kakaocdn.net/dn/ca7YtB/btrK0MIVzrj/mbcP5p02keLvOeF7YqYun1/img.png)
> rejected!!! 변경 불가 확인
5) git 사용자 디렉터리 내 ssh 키 존재 확인
![](https://blog.kakaocdn.net/dn/QR6q4/btrKWBPxMhh/D88GKiA08uVCLcMsSdf2G0/img.png)
> id_rsa.pub이랑 authorized_keys는 동일한 파일
![](https://blog.kakaocdn.net/dn/zahBk/btrK2n9JvqI/IfyelqdiuDlgXgNK9FWVUk/img.png)
> id_rsa 키를 복사해 ssh 로그인 시도!
git 쉘이기 때문에 명령어 사용이 제한됨!
6) /git-server clone 작업
![](https://blog.kakaocdn.net/dn/b5ELdd/btrKVWM0kfF/lTzdFQhRFemuhUWFZTiItK/img.png)
> 이제 변경 사항을
master branch로 push 시도해 본다.
7) 먼저 (다시) git ID 생성
![](https://blog.kakaocdn.net/dn/TzFxk/btrKWBhzZtM/5K5dNXYyZR4DMn6mVexSD0/img.png)
8) backups.sh 스크립트 내
리버스 쉘 구문 삽입 후 실행 권한 부여
![](https://blog.kakaocdn.net/dn/bIr72O/btrKZDyTIHW/gxj5Y7slDkLg0Bi2NPnZU0/img.png)
9) 변경사항 추가 후 커밋 시도
![](https://blog.kakaocdn.net/dn/bnNUrw/btrKUSEd2h1/9eBP9RtRe7ijnzLH2dv9Kk/img.png)
10) push 전에 리스너 기동해 주고
![](https://blog.kakaocdn.net/dn/bkeBvI/btrKVVUSuGK/LpDJbqcdktitRnTZ0JGnk1/img.png)
11) 마지막, master branch로 push 시도!
![](https://blog.kakaocdn.net/dn/bh4rDb/btrK0NA5RVT/V6jKCWWk9bnuCpuQQThnS1/img.png)
12) crontab 내용대로 pull.sh 스크립트가
2분마다 실행되고 backups.sh 스크립트는
3분마다 실행되니, 도합 5분을 기다리면
backups 스크립트 내 리버스 쉘 구문이
실행되면서
포트 설정을 잘못해 실패;;
위 과정을 다시 반복한 뒤 기다리면
![](https://blog.kakaocdn.net/dn/cpiSoO/btrKZB2fOiG/TLmsGjOhwGnqRkW2KNpKv0/img.png)
![](https://blog.kakaocdn.net/dn/uvLtT/btrKZmK1i65/zWyE1Hw0O396Z8OPkeMhW0/img.png)
끝
참고로 pull.sh 내용은~
![](https://blog.kakaocdn.net/dn/bB0jpQ/btrKZCGPN17/UFq8LI1sXc7WuDCzQS3kR1/img.png)