네트워크 및 시스템

서버 버전 취약점 공격 실습

잼M 2024. 3. 30. 17:41

- 실습 대상은 Metasploitable2를 대상으로 Kali Linux에서 실습을 진행하였다.

- vsftpd와 IRC에 대한 취약점 공격을 실습하였다.

 

1) vsftpd2.3.4 취약점 공격 실습

1. Kali Linux에서 Metasploitable2에 대해 포트 스캔 중 All scan을 통해서 버전 파악 및 취약점 존재 유무 확인

- 먼저 올스캔을 통해 확인했을때 가장 먼저 나오는 포트는 21번 포트로 ftp 포트의 버전이 vsftp 2.3.4 인 것을 확인할 수 있는데 이를 구글에 검색을 통해 취약점이 존재하는지 확인한다. 

출처 : https://www.exploit-db.com/exploits/49757

다음과 같이 구글에 vsftpd2.3.4를 검색했을 때 취약점이 존재하는 것을 확인할 수 있다. 또, backdoor camman execution공격으로 인한 취약점인 것을 알 수 있다. 취약점 코드는 CVE-2011-2523 인 것을 알 수 있다. Kali Linux에서 실습을 위해 취약점 분석 도구인 metasploit을 실행해준다. 

 

2. Kali Linux에서 metasploit 도구를 실행하고 공격

- Kali에서 sudo msfconsole을 통해 mstasploit을 실행한다.

다음과 같이 나오면 실행이 정상적으로 된 것을 확인할 수 있다.

 

- 실행한 후에 앞서 취약점의 코드를 알았고 search 명령어를 통해 exploit을 할 모듈을 검색한다. 앞서 vsftpd로 검색해도 되고, 코드로 검색해도 된다. 나는 vsftpd의 이름으로 검색을 진행했다. 

다음과 같이 나오면 버전에 맞는 공격 모듈을 사용하기 위해 use 명령어를 사용한다. 

 

- 이 모듈에 대해서 확인하는 명령어는 info로 필요한 옵션이나 대상지정 등 알 수 있다. 

확인했을 때, RHOSTS가 비어있으므로 대상의 IP를 지정해준다. 

그리고 공격을 하기에 앞서 다른 공격에 경우 payload를 장착해야한다. 하지만 이 공격에 경우 따로 payload를 지정해주지는 않았다. show payloads로 페이로드를 확인했을 때, 1개 밖에 존재하지 않았기 때문이다. 

 

그런후에 exploit을 통해 공격을 진행하면 Command shell 1 session opend 라고 나오는데, 이 부분을 통해 대상의 커멘드 쉘을 탈취한 것을 알 수 있다.

 

다음과 같이 pwd라는 명령어를 수행해서 자신이 대상의 어느 폴더에 위치해있는지 알 수 있다.

 

또한, 대상의 쉘에서 index.html을 수정해 다음과 같이 수정할 수도 있다.

사용자의 커맨드 쉘에서 빠져나오기 위해서는 Ctrl+C를 누르면 빠져나올 수 있다.

 

2) UnrealIRCD 취약점 분석 

1. 앞서 포트스캔을 통해서 IRC의 버전이 Unreal 3.2.8.1인 것을 확인할 수 있고 이를 구글검색을 통해 발견된 취약점이 있는지 검색해서 확인한다. 

출처 : https://vk9-sec.com/cve-2010-2075command-execution-unrealircd-3-2-8-1-backdoor/

다음과 같이 앞 실습과 동일하게 Backdoor 취약점이 존재하는 것을 확인할 수 있고 취약점 코드가 CVE-2010-2075임을 확인할 수 있다. 

 

2. 취약점 존재를 확인했으니 동일하게 Kali에서 공격 모듈이 존재하는 지 확인한다.

만약 irc로 검색하면 여러가지가 존재하므로, 정확한 이름이나, 코드명으로 검색해야한다. 

 

- 맞는 버전의 공격모듈을 찾았으면 use를 통해 장착하고 rhost를 지정해주고, 페이로드를 확인한다.

페이로드가 여러가지 존재하는데, Perl은 HD Moore가 초기에 만들었고, Ruby는 Rapid7에서 새로 만든 것이기 때문에, Ruby가 더 안정적이라고 할 수 있다. 또, Bind는 Attacker가 Victim쪽으로 접근하는 것을 의미하고, Reverse는 Victim이 Attacker에게 접근함을 의미한다. 따라서 다음 실습에서는 3번을 사용한다. 

$ set payload 3을 통해 페이로드를 장착한다. 

그런 뒤에 exploit 을 진행하면 앞 선 실습과 동일하게 command shell session 1 opend 라고 메세지가 출력되며 대상의 커맨드 쉘을 탈취한 것을 확인할 수 있다.

'네트워크 및 시스템' 카테고리의 다른 글

HxD란?  (0) 2024.04.04
NMAP 스캔 실습 및 Metasploitabl2  (0) 2024.03.28
Wire shark 실습  (0) 2024.03.26
OSI 7 계층 및 TCP, UDP  (0) 2024.03.25
리눅스 명령어  (0) 2024.03.25