
필자는 MacOS 를 사용하기 때문에,
UTM을 통해 Metasploitable2와 KaliLinux를 가상화 하였고,
이를 통해 직접 취약점 서버에 대한 침투 테스트를 해보았다.
1. 환경 구축

우선 이렇게 두 가상화 머신을 만들어 놓고,
두 머신 모두 네트워크는 host only로 해주었다.
2. 취약점 서버 열기
이 단계까지 끝냈다면 이제 차례 차례 머신들을 구동시켜주면 되는데,
취약점을 갖고 있는 metasploitable2를 먼저 시작시킨다.

안내되어있는대로 msfadmin/msfadmin 을 입력해서 로그인을 시켜준다.
3. 타겟팅 시스템 찾기
이제 KaliLinux를 실행시켜보자.
공격할 머신의 호스트 아이피를 찾기 위해
터미널을 켜고, 현재 호스트의 아이피 대역을 살펴보자.

현재 나의 아이피는 192.168.174.3 인 것을 알 수 있으므로,
나의 아이피 대역은 192.168.174.0/24 이다.
그럼 이제 같은 대역을 공유하고 있는 타겟 시스템의 아이피를 찾기 위해 다음과 같은 툴을 사용한다.
sudo netdiscover -r <ip범위>
fping -q -g -a <ip범위>
nmap -sn <ip범위>

netdiscover는 ARP 프로토콜을 사용해서 같은 네트워크에 연결된 장치들의 IP 와 MAC 주소를 찾아준다.
fping은 특정 대역의 IP에 ICMP echo 요청을 보내어 응답하는 호스트들의 IP를 수집한다.
nmap은 타겟 시스템의 사용 중인 포트나 서비스를 찾아주는 스캐닝 툴이다.
4. 타겟팅 시스템 분석
이제 타겟 시스템의 IP가 192.168.174.2인 것을 알았으니,
해당 호스트가 어떤 서비스들을 호스팅하고 있는지 알아보자.
sudo nmap -sV -O TargetIP

위와 같이 타겟 시스템이 몇 번 포트로 어떤 서비스를 열고 있는지 알 수 있다.
필자는 현재 열려있는 톰캣 서버의 취약점을 사용하여 침입할 예정이다.
5. Metasploitable 을 사용한 공격
현재 터미널을 지우지 말고, 옆에 다른 터미널을 생성하자.
msfconsole을 입력하여 취약점을 찾아보자.


search tomcat mgr 를 입력해서 톰캣의 취약점들을 찾아보자.
랭크가 excellent인 배포 취약점을 사용해서 침투해보자.

필수로 있어야하는 옵션들은 PATH, RHOSTS, RPORT, LHOST, LPORT 인 것을 알 수 있다.
그러면 먼저 우리가 알고있는 PATH 나머지의 인덱스들을 채워주자.

이렇게 입력해주고, 브라우저를 열어 현재 /manager 경로로 가면 어떤 것이 있는지 탐색해보자.


타겟 아이피의 톰켓 포트로 접속하면 왼쪽과 같이 정상적으로 서버가 열렸음을 확인할 수 있다.
그런데, /manager/html로 이동하니 아이디와 패스워드가 필요하다는 것을 알 수 있다.
일단 다시 터미널로 가서 PATH를 /manager/html로 바꿔준 뒤 run을 해보겠다.

하지만 타겟 설정이 제대로 되지 않아 실패하였다.
다시 타겟 설정을 하고 run을 해보겠다.

아까 타겟 시스템의 네트워크를 분석했을 때 리눅스 운영체제임을 알았기에 타겟을 3번으로 바꿔주고
다시 실행시켰더니 이번엔 payload가 맞지 않다고 한다.
그러면 이제는 적절한 payload를 찾아주자.

4번 페이로드를 사용해보자.
참고로 reverse는 타겟이 공격자에게 연결하는 것이고,
bind는 타겟이 특정 포트를 열어 공격자가 연결하는 것이다.

또 동작하지 않는 것을 보니 이번엔 아마도 매니저 페이지에 필요한 아이디와 패스워드가 없어서 그런 것 같다.
다시 search tomcat mgr 를 하여 로그인 관련 취약점이 있는지 찾아보자.

9번에 mgr_login 취약점이 있어서 해당 취약점을 이용해 아이디와 비번을 알아내보겠다.
이번에 필요한 옵션은 호스트, 포트 뿐인 것 같다. 나머지는 다 입력되어있음.


이제 bruteforce 공격을 하여 자동으로 매니저의 아이디와 패스워드를 찾아준다.
아이디와 패스워드는 모두 tomcat이였다.
그러면 아까 0번 취약점의 옵션을 더 채워주자.

그러면 이제 정상적으로 침투에 성공했다는 화면이 뜨고, 호스트 이름과 운영체제 버전 등등을 추출해낸다.
6. 느낀점
시스템 해킹을 하려면 네트워크 이론이 바삭해야한다는 것을 느꼈다.
편입 준비하느라 cs 지식이 조금 날라갔다는 것이 체감되었다.
OSI 7 layer를 다시 공부하는 것이 좋겠다.
그리고 이제는 세션 접속 뿐만 아니라 권한 상승에 대한 실습도 해보고 싶다.
나중에 다른 서비스들의 취약점을 사용해서 끝까지 스스로 침투해보고 싶다.
취약점은 exploit-db.com 에서도 찾아볼 수 있다.