Pertengahan tahun lalu saya sudah mendapatkan sertifikasi Offensive Security Certified Professional (OSCP) dan ceritanya sudah saya tuliskan di sini. Sampai saat ini saya masih tetap bekerja full time sebagai programmer dan pekerjaan security tetap hanya pekerjaan part time bagi saya, jadi sebenarnya saya tidak perlu mengambil sertifikasi lagi.
Tapi karena faktor diskon, saya jadi mengambil Offensive Security Web Expert (OSWE). Di akhir tahun 2019 ada diskon besar untuk sertifikasi OSWE, tadinya harganya 1400 USD (kurs saat ini: 21 juta kalau dirupiahkan), tapi menjadi 999 USD saja. Kebetulan saya juga punya voucher 50 USD dari offsensive security dan vouchernya bisa dipakai di atas diskonnya, jadi biayanya bisa berkurang hingga menjadi 949 USD (saat ini: 14 juta kalau dirupiahkan). Seperti ketika OSCP, Xynexis mendukung saya dalam pembiayaan sertifikasi ini. Biaya OSWE saat ini adalah 1400 USD untuk akses lab 30 hari.
Untuk memperjelas: nama sertifikasinya adalah Offensive Security Web Expert (OSWE) dan nama course yang diperlukan adalah Advanced Web Attacks And Exploitation (AWAE). Dulu pelatihan AWAE ini hanya diberikan offline saja, tapi sejak tahun lalu bisa diambil online. Dulu pelatihan offline AWAE di Blackhat 2018 di Singapore harganya 5000-5500 SGD atau sekitar 53-58 juta rupiah dengan kurs saat ini, yang hanya beda tipis dengan kurs 2018.
Lab
Saya mendaftar tanggal 19 Desember 2019, dan mendapatkan akses lab mulai 12 Januari 2020. Saya sama sekali tidak ingat mengenai sertifikasi ini. Sampai mendapatkan peringatan tanggal 14 Januari bahwa akses akan segera ditutup jika saya tidak mendownload materinya.
Sebenarnya Offsensive security mengirim email di tanggal 12, tapi karena sebelumnya ada beberapa email dari Offensive security dan isinya tidak penting, saya jadi terlewat membaca email bahwa lab sudah mulai. Untungnya saya membaca email tanggal 14 , jadi saya segera mendownload materi dan mengakses labnya.
Ternyata labnya hanya sekedar jadi tempat latihan untuk mepraktikkan isi materi PDF, jadi kurang berguna untuk saya. Tadinya saya sudah mulai mengcopy file-file dari labnya, tapi saya segera sadar bahwa produknya semuanya open source, jadi bisa dicari di internet. Dan ternyata sudah ada yang meletakkannya di github.
Jadi singkatnya:
- Materi PDF saya baca, isinya cukup baik dan detail, memberi gambaran kira-kira seperti apa nanti ujiannya
- Extra mile (latihan ekstra) di PDF tidak saya kerjakan
- Materi video tidak saya tonton (sekilas isinya sama dengan materi PDF)
- Lab tidak saya akses (hanya sekali untuk mengecek seperti apa)
Saya langsung memilih jadwal ujian, tapi ternyata sertifikasi ini sangat populer sehingga sampai beberapa bulan kemudian jadwalnya penuh. Akhirnya saya mendapatkan jadwal tanggal 24 April 2020, mulai jam 7 malam. Ini pun saya sempat hampir lupa, jadi harus chat lagi dengan support untuk menanyakan jadwal ujian.
OSCP vs OSWE
Materi OSCP banyak berkutat di pemakaian tool (scanning dengan nmap, dirbuster, eksploitasi dengan metasploit), sedangkan OSWE berkaitan dengan membaca kode program dan mencari kelemahannya. OSCP sekedar memanfaatkan bug yang sudah ada, sedangkan OSWE mencari bug baru. Di OSCP, Anda akan banyak Googling untuk mencari bug dan exploit system sedangkan di OSWE bugnya di sistem yang custom yang tidak akan ketemu dicari dengan Google.
Dalam pentesting, saya sering mendapatkan remote code execution atau arbitrary file read dan kemudian bisa mendownload source code, dari source code tersebut saya bisa menemukan banyak bug lain. Kadang saya juga mendapatkan source code dari file version control yang bisa diakses via web. Di kesempatan lain, saya mendapatkan source code karena source codenya memang terbuka di github.
Lab OSCP lebih menarik: kita diberi target untuk dijebol, kita harus mencari sendiri jalan masuknya. Lab OSWE adalah tempat praktik, jadi bugnya sudah diberitahu di diktat PDF, kita tinggal mencoba-coba. Ada juga latihan “extra mile”, di mana kita cuma diberitahu “ada bug lain”, silakan dicari sendiri. Cukup mudah mensetup lab sendiri di virtual machine di PC sendiri tanpa harus terkoneksi ke lab, jadi lab 30 hari seharusnya lebih dari cukup (daripada mengambil 60 atau 90 hari dan harus bayar ekstra 200 USD/bulan).
Bagi saya yang pekerjaan pentestingnya hanya remote, OSCP lebih menantang bagi saya karena saya harus berlatih memakai banyak tool. Ketika mengambil sertifikasi OSCP, sebagai programmer saya sering tidak sabar dan ingin menulis tool/exploit sendiri (padahal menulis tool sendiri biasanya akan butuh waktu lebih lama).
OSWE terasa lebih mudah untuk saya karena sebagai programmer multi bahasa, saya membaca kode program setiap hari. Saya juga sudah sering menemukan bug-bug dari hasil membaca kode program, misalnya yang pernah saya tulis di sini dan di sini. Sebaliknya, bagi non programmer, OSWE ini akan terasa lebih sulit. Beberapa orang di berbagai forum bahkan mengeluh betapa sulitnya belajar banyak bahasa pemrograman (meski hanya di permukaan) hanya untuk lulus ini.
Materi
Silabus lengkap AWAE bisa dibaca di web resmi mereka:
https://www.offensive-security.com/documentation/awae-syllabus.pdf
Terlihat dari judul-judulnya: pelajaran diberikan dalam bentuk contoh kasus nyata.
Materi OSWE mencakup membaca program dalam Java, PHP, C# dan JavaScript (serverside). Sebagai orang yang suka programming dan membahas banyak bahasa pemrograman di situs saya Cinta Programming, saya sudah cukup nyaman membaca dan juga menulis program dalam berbagai bahasa, jadi ini bukan kendala buat saya.
Jika Anda adalah programmer yang minimal bisa membaca kode dalam bahasa yang saya sebutkan di atas, maka Anda cuma perlu belajar berbagai bug yang umum saja (SQL injection, path validation, dsb) dan juga bug khusus di bahasa tertentu. Contoh bug khusus ini misalnya type juggling di PHP, dan masalah strict comparison di PHP dan JavaScript.
Jika Anda belum lancar membaca berbagai kode program, sebaiknya belajar dulu dasar-dasarnya. Belajar memakai debugger juga penting dan bisa membantu memahami kode yang rumit. Hal yang perlu dipahami ketika memakai debugger untuk mereview kode hanya yang dasar sekali: breakpoint dan melihat isi variabel.
Di materi PDF diajarkan mengenai cara melakukan otomasi attack menggunakan scripting (dalam Python). Bagian ini perlu diperhatikan karena sangat penting untuk ujian. Jika sudah yakin bisa memahami extra mile, maka tidak perlu dikerjakan, jika belum yakin maka coba kerjakan.
Ujian
Saya tidak bisa memberikan detail ujian karena sifatnya rahasia dan berisiko sertifikasi saya dicabut. Dari berbagai posting orang lain di internet, saya bisa sharing mengenai jumlah soal. Misalnya dari artikel ini di medium:
Ujian OSWE sama seperti OSCP: proctored. Artinya ujiannya diawasi dengan kamera. Waktunya 47 jam 45 menit plus 24 jam untuk menulis laporan. Saya mulai ujian jam 7 malam, dan sebelum jam 12 sudah menyelesaikan setengah dari seluruh target. Saya masak mie instan, lalu meneruskan tanpa progress sampai jam 2 malam. Saya tidur dulu sampai jam 6 pagi, dan setelah bangun, saya sudah menyelesaikan semuanya jam 8 pagi di hari Sabtu.
Dari pagi sampai sore, saya mulai menyelesaikan laporan sementara masih terhubung ke VPN ujian (saya istirahat sarapan, makan siang, dan istirahat sore). Belajar dari kesalahan OSCP dulu: saya lupa membuat beberapa screenshot, jadi sambil menulis laporan saya bisa yakin semua screenshot saya dapatkan.
Sebelum jam 5 sore saya sudah selesai laporannya, dan menghentikan ujiannya. Saya tidak ingin terlalu buru-buru, jadi saya biarkan dulu laporannya semalam supaya bisa direview kembali dengan pikiran yang jernih di pagi hari. Minggu pagi saya kirimkan laporannya.
Seminggu kemudian hasilnya dikirimkan via email.
Penutup
Saya tahu ada banyak pentester yang kesulitan membaca kode hasil reverse engineering (karena memang relatif sulit) dan kodenya sering sudah obfuscated. Membaca kode program seharusnya jauh lebih mudah, karena ada komentar dan nama yang jelas. Tapi sering saya temui pentester yang tidak bisa membaca kode dengan baik ketika sudah berhasil mengekstrak source code dari target.
Kemampuan mendapatkan source code akan membuat pentest blackbox menjadi jauh lebih cepat selesai. Dengan membaca kode, saya bisa menskip atau mengurangi berbagai test yang berhubungan dengan SQL injection atau XSS jika memang sudah divalidasi/escape/filter dan bisa dipikirkan apakah validasi/escaping/filtering nya sudah cukup. Berbagai fungsi yang tersembunyi yang tidak ketemu di test blackbox juga lebih mudah ditemukan. Berbagai kesalahan logika bisa dilihat.
Jika Anda ingin belajar lebih banyak mengenai membaca source code, coba ambil sertifikasi ini. Jika ingin menguji apakah kemampuan Anda memang sudah cukup baik, silakan ambil sertifikasi ini. Kalau Anda sudah sering menemukan bug di aplikasi real-world, sertifikasi ini tidak banyak membantu.