1. Enumeration
: Port Scanning
![](https://blog.kakaocdn.net/dn/Xr2vH/btrKQQsrKkl/cFCLlwwSOoi4H4jwCeO7E1/img.png)
: smtp user enum
![](https://blog.kakaocdn.net/dn/bmSs78/btrKUdAgJGs/mgGMFNBRKVL3iioHD3dMY1/img.png)
> 도메인 확인
![](https://blog.kakaocdn.net/dn/dd3Q38/btrKU7TRTcM/SV5SdQY0xLIPhBVYyb4Ca0/img.png)
> 사용자 확인 후 user list로 등록
![](https://blog.kakaocdn.net/dn/k8fUw/btrKTTvfeny/Tjcxd0lKts5H0VTvmwZiZ0/img.png)
: ftp 계정 확인
![](https://blog.kakaocdn.net/dn/s6kvd/btrKQi3F37R/dKkZjejf6K2ie6BRRcG9ek/img.png)
: ftp 로그인 및 파일 업로드 테스트
![](https://blog.kakaocdn.net/dn/bqeX7H/btrKTovwsfb/YsW60MtIAQh5koynCQ4kS0/img.png)
![](https://blog.kakaocdn.net/dn/naXZI/btrKMGw8A0R/c14hpkpbzoEU35MRaFpdzK/img.png)
![](https://blog.kakaocdn.net/dn/9z69L/btrKTpgViCZ/aBkEd6mTr4skiBMB7lBjAk/img.png)
> 업로드 가능함
2. Exploitation
: php shell 업로드
![](https://blog.kakaocdn.net/dn/Hs8yZ/btrKOibLm6D/A3I3A75SsVBmQBQQTxCOoK/img.png)
: 리스너 기동 후 호스팅 하면
![](https://blog.kakaocdn.net/dn/bWb4av/btrKMGDRQtv/JYN1iLEdPJnOI1FrBPrKAK/img.png)
침투 성공!
3. Privilege Escalation
: SUID
![](https://blog.kakaocdn.net/dn/br0lgW/btrKToI9iSa/KXOY5k1cJm9oURHbKirlR1/img.png)
: creds
![](https://blog.kakaocdn.net/dn/bOMqcm/btrKQhRhZLp/Vsfk69WGgX3hRPiICRaksK/img.png)
: sql 돌고 있는지 확인
![](https://blog.kakaocdn.net/dn/cgT7wc/btrKMEMSlzy/mdRkeDXGCfqH6XXaZjYJuK/img.png)
: mysql 로그인 시도
![](https://blog.kakaocdn.net/dn/cFQEvm/btrKVyRj3mR/rvtjt4BlKuEB7kpiN8A1hk/img.png)
> root로 로그인이 가능한 시점에서
공격 가능한 시나리오가 있는데
전에는 mariadb에 했었지만
mysql 역시 방법은 동일하다.
# 공격 방법 및 순서
- mysql 외부 파일 실행시키기 -
: UDF(User Define Function) 활용
> UDF lib_mysqludf_sys.so (리눅스이기 때문에, 윈도우는 dll)
파일 내 sys_exec() 함수를 활용해 os 커맨드를 실행시킨다.
1) mysql udf 파일을 하위 경로에서 받은 후 타깃 서버에 업로드
https://github.com/rapid7/metasploit-framework/tree/master/data/exploits/mysql
2) 타깃 서버 mysql에 접속한 뒤 임의의 db를 골라
lib_mysqludf_sys.so 파일을 mysql plugin 경로에
넣어주기
3) lib_mysqludf_sys.so 파일을 이용해
sys_exec() 함수 생성
4) sys_exec() 함수를 통해
os 커맨드 실행 (리버스 쉘)
# 실행
0) 프로세서 종류 확인
![](https://blog.kakaocdn.net/dn/dFk4VO/btrKXGQFFw5/kZw4BQKKb1bskc0euHykK0/img.png)
> 64bit
1) mysql udf 파일 업로드
![](https://blog.kakaocdn.net/dn/wfqir/btrKZw0NlfP/Ktt1KKw2guTIzraEwbS2Ak/img.png)
![](https://blog.kakaocdn.net/dn/vy9j1/btrKZDr2Apv/v74VvNKhYEmtQkCQBn88yk/img.png)
2~3) 아무 database 선택 > 새로운 table 생성 >
새로운 table에 lib_mysqludf_sys_64.so 파일 insert >
새로운 table * 선택 후 mysql plugin 경로에 dump >
새로운 plugin에 sys_exec() 함수 생성
![](https://blog.kakaocdn.net/dn/cvJfaJ/btrKZwGw9fL/HxITgY3caWKOejCJMiuruK/img.png)
4) 시스템 명령어 실행 및 리버스 쉘 생성
: 핑 날려보면
![](https://blog.kakaocdn.net/dn/bqWn5G/btrKZee4fBW/LspX3pCAkSyY84s66PGBF0/img.png)
![](https://blog.kakaocdn.net/dn/dREkeS/btrK1p0U3JM/Q2gbk5j6qiBMKhBtg86uGK/img.png)
> 정상 실행되고
: 리버스 쉘 요청
리스너 기동 후 리버스 쉘 생성 요청 시
![](https://blog.kakaocdn.net/dn/bGaRxx/btrKY3ELtbl/fLKTVihH3scEtLnLi47ook/img.png)
![](https://blog.kakaocdn.net/dn/dpfZmM/btrKZB8SJ6c/NRfiY3EqeIvklriw7ElDvk/img.png)
끝
'OSCP > Proving Ground' 카테고리의 다른 글
37. Slort (GET TO WORK) - Windows (RFI.php, systeminfo) (0) | 2022.09.03 |
---|---|
36. Nickel (GET TO WORK) - Windows (pdfcrack, ssh-port-forward, scp 파일 전송) (0) | 2022.09.01 |
34. Hunit (GET TO WORK) - Linux (git*, GIT_SSH_COMMAND) (0) | 2022.08.28 |
33. Hetemit (GET TO WORK) - Linux(**) (0) | 2022.08.28 |
32. Breakout (GET TO WORK) - Linux (gitlab*, mount) (1) | 2022.08.27 |