Research Documentation

Security Write-up

Dokumentasi temuan kerentanan keamanan dan analisis teknis

2024 High Severity Information Disclosure

Penemuan .env File Exposure di Universitas Dirgantara Marsekal Suryadarma

Ringkasan

Penemuan file .env yang dapat diakses publik berisi konfigurasi database sensitif di website universitas.

Temuan

Saya menemukan sebuah direktori .env yang dapat diakses publik pada website kampus. File ini berisi konfigurasi database yang sangat sensitif:

.env file content
# Database Configuration
DB_HOSTNAME=[sensitive]
DB_USERNAME=[sensitive]
DB_PASSWORD=[sensitive]
DB_NAME=[sensitive]

Dengan kredensial tersebut, saya berhasil melakukan koneksi ke database menggunakan DBeaver dan mengonfirmasi akses penuh ke sistem database.

Bukti koneksi database berhasil

Bukti berhasil terkoneksi ke database menggunakan kredensial yang ditemukan

Dampak

  • Full Database Access: Akses penuh ke seluruh data mahasiswa, dosen, dan sistem akademik
  • Data Breach Potential: Data sensitif seperti informasi pribadi, nilai, dan administrasi terancam
  • Privilege Escalation: Potensi untuk mendapatkan akses lebih tinggi ke sistem

Resolusi

Laporan segera dikirimkan ke tim IT universitas melalui saluran yang tepat. Dalam waktu singkat, file .env telah diamankan dan tidak lagi dapat diakses publik.

2024 High Severity IDOR Vulnerability

Identifikasi IDOR (Insecure Direct Object Reference) di Sistem Akademik Universitas

Ringkasan

Temuan kerentanan IDOR yang memungkinkan akses tidak sah ke data mahasiswa dengan memanipulasi parameter NIM.

Temuan

Pada halaman aktivitas mahasiswa, sistem menerima parameter NIM tanpa validasi akses yang memadai. Dengan hanya memasukkan NIM, sistem menampilkan data lengkap mahasiswa:

Contoh IDOR vulnerability

Sistem menampilkan data mahasiswa berdasarkan NIM yang dimasukkan

Saya mengembangkan script Python untuk melakukan automated testing dan mengumpulkan data dalam jumlah besar:

Python automation script
import requests

def fetch_student_data(nim_list):
    base_url = "https://university-system/student/"
    results = []
    
    for nim in nim_list:
        response = requests.get(f"{base_url}?nim={nim}")
        if response.status_code == 200:
            data = response.json()
            results.append({
                'nim': data['nim'],
                'name': data['name'],
                'email': data['email']
            })
    return results

# Read NIMs from file
with open('nim_list.txt', 'r') as f:
    nim_list = f.read().splitlines()

student_data = fetch_student_data(nim_list)
Hasil automated testing

Hasil mass data collection menggunakan script automation

Dampak

  • Data Exposure: Informasi pribadi mahasiswa dapat diakses tanpa otorisasi
  • Mass Data Collection: Kemungkinan pengumpulan data dalam skala besar
  • Privacy Violation: Pelanggaran privasi data sensitif

Resolusi

Setelah melaporkan temuan ini, tim pengembang menambahkan validasi akses dan otorisasi yang tepat. Sistem sekarang memverifikasi hak akses pengguna sebelum menampilkan data mahasiswa.

2026 Critical Severity Secrets Exposure via docker-compose.yml

Identifikasi Secrets Exposure via docker-compose.yml

Ringkasan

File docker-compose.yml dapat diakses secara publik tanpa autentikasi pada web root aplikasi (redacted).co.id. File ini memuat kredensial MinIO/Maxio Object Storage (Access Key & Secret Key) dalam bentuk plaintext, serta konfigurasi container yang berjalan dengan hak akses berlebih (cap_add: SYS_ADMIN, security_opt: apparmor:unconfined, akses /dev/fuse).

Temuan

Pada halaman menampilkan, version: '3.8' services: web: build: . ports: - "8101:80" environment: - MINIO_BUCKET=[REDACTED] - MINIO_URL=https://maxio.[REDACTED].id - MINIO_ACCESS_KEY=[REDACTED] - MINIO_SECRET_KEY=[REDACTED] cap_add: - SYS_ADMIN devices: - /dev/fuse security_opt: - apparmor:unconfined restart: unless-stopped

File docker-compose.yml memuat kredensial dalam bentuk plaintext

Saya command ./mc alias set TARGET;

Terminal Command
./mc alias set MINIO_BUCKET MINIO_URL MINIO_ACCESS_KEY MINIO_SECRET_KEY

Hasil command

Jika sudah berhasil dibuat. Output: Added `MINIO_BUCKET` successfully.

Terminal Command untuk menampilkan informasi detail mengenai status, kesehatan, dan penggunaan sumber daya dari server atau kluster MinIO. Perintah ini bagian dari MinIO Client (mc) yang difungsikan khusus bagi administrator sistem untuk melakukan pemantauan (monitoring).
./mc admin info MINIO_BUCKET

Hasil command

Dampak

  • Credential Exposure & Data Access: Bocornya Kunci Akses (Access Key) dan Kunci Rahasia (Secret Key) MinIO memungkinkan pihak luar mengakses penyimpanan cloud (S3 bucket) "[REDACTED]" secara langsung tanpa otorisasi.
  • Risk of Data Tampering / Loss: Pihak yang tidak berwenang dapat membaca, mengunggah, mengubah, atau menghapus berkas dan dokumen yang tersimpan di dalam bucket S3 perusahaan.
  • Privilege Escalation Risk: Penggunaan kapabilitas `SYS_ADMIN`, perangkat `/dev/fuse`, serta penonaktifan AppArmor (`apparmor:unconfined`) pada container meningkatkan risiko *container escape* jika aplikasi berhasil dikompromikan.

Resolusi

Setelah temuan ini dilaporkan, kredensial yang bocor disarankan untuk segera dirotasi (revoke & re-generate secret key). Konfigurasi `docker-compose.yml` diperbaiki dengan memindahkan variabel sensitif ke dalam file lingkungan tertutup (`.env`) atau Secret Manager, serta memperketat hak akses (least privilege) pada container Docker.