Observasi

Pada tahap awal pentest, penulis melakukan pemindaian port pada IP target menggunakan Nmap dengan perintah nmap -sT -sV alamat-target-ctf. Dari hasil scan, terdeteksi ada tiga port yang terbuka, yaitu port 22 (SSH), port 80 (HTTP), dan port 443 (HTTPS).

Untuk menggali direktori yang tersembunyi di web server, eksplorasi dilanjutkan dengan teknik directory fuzzing menggunakan FFUF. Menjalankan perintah ffuf -u http://alamat-target-ctf/gallery/FUZZ -w ./raft-small-directories.txt yang menghasilkan beberapa lokasi direktori menarik yang potensial untuk dianalisis lebih jauh

Uji Penetrasi

Bypass Via SQL Injection

Halaman awal menunjukkan bahwa aplikasi ini menggunakan CMS Simple Image Gallery, yang dari referensi tersebut diketahui memiliki celah kerentanan RCE pada parameter username. Berangkat dari info tersebut, penulis mencoba melakukan pengujian awal pada form login menggunakan teknik SQL Injection. Dengan memasukkan payload admin ' or 1=1 limit 1-- + pada kolom username, autentikasi berhasil di-bypass dan masuk ke dalam dasbor admin.

Arbitrary File Upload

Setelah berhasil mengakses dasbor admin, ditemukan fitur pengunggahan file (upload). Berdasarkan pengujian, fitur ini tidak memiliki mekanisme validasi maupun penyaringan (filtering) terhadap ekstensi file yang diunggah. Sebagai contoh, kita bisa mengunggah file jenis PHP yang bisa gunakan sebagai payload reverse shell. Langkah selanjutnya adalah melakukan koneksi dengan komputer server dengan menggunakan shell yang sebelumnya sudah kita unggah pada halaman upload gambar. Command yang digunakan adalah ncat -lvnp 4444

Mengakses Database Aplikasi

Melalui akses reverse shell tadi, kita melanjutkan eksplorasi komputer server. Salah satu direktori yang menarik untuk diperhatikan adalah /var/www/html/gallery. Isi dari direktori tersebut terdapat file yang bernama initialize.php yang berisi konfigurasi database.

Isi file Initialize.php

Diketahui DBMS yang digunakan oleh aplikasi ini adalah MySQL, untuk mengakses DBMS tersebut, dan mengekstrak hash password untuk akun admin bisa kita gunakan command berikut: mysql -u gallery_user -ppassw0rd321 gallery_db -e "SELECT * FROM users;"

Hash Pass Admin

Take Over Akun Mike dan Flag Seksi Pertama

Pada room ini, terdapat objektif lain selain mengetahui hash password admin web. Objektif tersebut adalah mendapatkan flag untuk seksi pertama dengan cara mengakses akun komputer server yang bernama Mike.

Akses direktori /var/backups/mike_home_backup kemudian akses .bash_history dengan menggunakan command cat .bash_history. Kita akan mendapatkan password untuk akun Mike.

Direktori Pass Mike

Ganti pengguna dengan akun milik Mike dengan command su mike dan masukan password yang sebelumnya sudah kita dapatkan. Setelah berhasil mengakses akun milik Mike langkah selanjutnya adalah mendapatkan flag pertama yang disimpan pada home direktori dengan nama file user.txt. Kita cukup mengaksesnya dengan command cat user.txt

Flag Pertama