Penetration Testing Basics — Security

Apa itu Penetration Testing? Penetration testing (pentest) adalah simulasi serangan terhadap sistem untuk menemukan vulnerability sebelum penyerang yang…

Penetration testing (pentest) adalah pengujian keamanan yang dipesan pemilik sistem: seorang tester mencari celah dengan cara berpikir penyerang, dengan izin tertulis, di dalam batas yang disepakati, lalu menyerahkan laporan supaya celahnya bisa diperbaiki. Bayangin kamu menyewa tukang kunci untuk menguji toko. Ada surat yang kamu tanda tangani: pintu mana saja yang boleh dicoba, malam apa, dan apa yang dilarang (pintu toko tetangga jangan disentuh). Di akhir kamu dapat laporan: "pintu belakang bisa dibuka, ini fotonya, ganti kuncinya begini", lalu dia datang lagi untuk mengecek kunci barunya. Tanpa surat itu, perbuatan yang sama namanya pembobolan.

🧪 Tebakan cepat: scanner melaporkan "Possible SQL injection" di api.belajarweb.example/api/products?id=. Langsung masuk laporan sebagai temuan kritis? Tebak dulu, jawabannya ada di bagian "Triage laporan scanner".

Izin tertulis dan scope

Sebelum satu request pun dikirim, ada tahap pre-engagement: menyepakati aturan main lalu menandatanganinya. Engagement di Lab:

Bagian Isi
Izin ditandatangani pemilik sistem (CTO BelajarWeb)
In scope app.belajarweb.example, api.belajarweb.example
Out of scope pay.partner.example (penyedia pembayaran pihak ketiga)
Jendela waktu 6 sampai 10 Oktober 2026, pukul 22.00 sampai 04.00 WIB
Dilarang DoS dan uji beban, social engineering ke karyawan
Kontak darurat [email protected]

Fase-fase pentest

Standar yang banyak dirujuk, PTES (Penetration Testing Execution Standard), membagi pentest jadi tujuh fase:

  1. Pre-engagement Interactions: scope, aturan, izin.
  2. Intelligence Gathering (reconnaissance atau recon): mengumpulkan informasi tentang target, seperti subdomain, teknologi, dan endpoint publik. Ini fase teknis pertama.
  3. Threat Modeling: memetakan aset penting dan siapa yang mungkin menyerangnya.
  4. Vulnerability Analysis: mencari celah, termasuk lewat scanner, lalu memilah hasilnya.
  5. Exploitation: membuktikan dengan hati-hati bahwa celah memang bisa dipakai, di dalam scope.
  6. Post Exploitation: menilai dampaknya, misalnya data apa yang terjangkau.
  7. Reporting: menulis temuan dan rekomendasinya.

Alat yang sering muncul di laporan: Burp Suite dan ZAP, keduanya intercepting proxy. Proxy duduk di antara browser tester dan server, menangkap tiap request supaya bisa diperiksa dan diubah sebelum diteruskan.

Triage laporan scanner

Scanner otomatis cepat, tapi dia menebak dari tanda-tanda. Setiap temuannya harus dicek manusia dulu: valid, false positive, atau di luar scope. Laporan scanner di Lab punya empat temuan:

# Temuan scanner Host Hasil triage
1 Header HSTS gak ada app.belajarweb.example valid: response memang tanpa Strict-Transport-Security
2 Possible SQL injection di ?id= api.belajarweb.example false positive: query memakai prepared statement, status 500 muncul untuk input apa pun yang bukan angka
3 Library JavaScript versi lama pay.partner.example di luar scope: jangan diuji, kabari kontak klien
4 Directory listing aktif di /uploads/ app.belajarweb.example valid: halaman Index of /uploads/ menampilkan file pengguna

Jadi "Possible SQL injection" gak langsung masuk laporan sebagai temuan kritis. Kode yang memakai prepared statement gak bisa disuntik lewat id, jadi temuan itu false positive. Itu jawaban tebakannya. Status 500-nya tetap dicatat sebagai temuan kecil terpisah: id harus divalidasi dan dijawab 400.

Menulis temuan

Satu temuan yang baik bisa dipahami developer tanpa bertanya balik. Temuan #4 dari Lab:

## Directory listing aktif di /uploads/
Severity    : High (CVSS 3.1: 7,5)
Lokasi      : https://app.belajarweb.example/uploads/
Bukti       : response 200 berjudul "Index of /uploads/", berisi 1.284 file
              termasuk ktp-budi.jpg (tangkapan layar terlampir)
Reproduksi  : buka alamat itu di browser tanpa login; server menampilkan
              daftar file di folder itu
Dampak      : siapa pun bisa mengunduh foto KTP pengguna tanpa login
Rekomendasi : matikan autoindex untuk /uploads/ di Nginx, simpan upload di
              luar folder publik, sajikan lewat route yang mengecek hak akses
Status      : Open

Retest

Setelah developer men-deploy perbaikan, statusnya jadi Fixed (menunggu retest), belum selesai. Tester mengulang pengecekan yang sama dan mencatat hasilnya: kalau /uploads/ sekarang menjawab 403 Forbidden, temuan ditutup jadi Closed (verified) dengan bukti retest-nya. Kalau masih terbuka, temuan tetap Open.

⚠️ Jebakan yang sering ketemu

TL;DR: Pentest adalah pengujian keamanan dengan izin tertulis pemilik sistem, di dalam scope dan rules of engagement yang disepakati (jendela waktu, teknik terlarang, kontak darurat). PTES punya tujuh fase: Pre-engagement, Intelligence Gathering atau reconnaissance (fase teknis pertama), Threat Modeling, Vulnerability Analysis, Exploitation, Post Exploitation, Reporting. Burp Suite dan ZAP adalah intercepting proxy. Hasil scanner di-triage dulu: valid, false positive, atau di luar scope. Temuan ditulis dengan severity (skala CVSS), lokasi, bukti, langkah reproduksi sebagai deskripsi, dampak dan rekomendasi, lalu ditutup cuma setelah retest membuktikan perbaikannya.

Yang akan kamu pelajari