Web Penetration Testing : Bug Price Dengan Burp Suite

Dalam era digital saat ini, keamanan aplikasi web telah menjadi prioritas utama bagi perusahaan di seluruh dunia. Serangan siber yang menargetkan aplikasi web semakin canggih, menuntut pendekatan yang lebih proaktif dalam menemukan dan mengatasi kerentanan. Salah satu alat yang paling efektif dan banyak digunakan dalam pengujian penetrasi web adalah Burp Suite, sebuah platform yang menawarkan berbagai fitur untuk mengidentifikasi dan mengeksploitasi celah keamanan dalam aplikasi web.

Salah satu skenario serangan yang sering diuji oleh peneliti keamanan adalah manipulasi harga produk atau layanan di situs e-commerce, yang dikenal dengan istilah "bug price." Dalam serangan ini, penyerang menggunakan alat seperti Burp Suite untuk mencegat dan memodifikasi data yang dikirimkan antara aplikasi web dan server, memungkinkan mereka untuk mengubah harga suatu produk menjadi lebih murah sebelum menyelesaikan pembelian.

Konsep Bug Price Pada Kerentanan Web

Bug price dalam konteks keamanan web merujuk pada kerentanan yang memungkinkan penyerang untuk memodifikasi harga produk atau layanan di situs web, biasanya melalui manipulasi data yang dikirimkan ke server. Misalnya, dalam aplikasi e-commerce, ketika pengguna memilih produk dan melanjutkan ke proses pembayaran, data harga dan detail transaksi biasanya dikirimkan dari klien (browser) ke server. Jika data ini tidak dilindungi dengan baik atau tidak divalidasi dengan benar di sisi server, penyerang dapat memanipulasi harga produk tersebut menggunakan alat seperti Burp Suite.

    Bagaimana Bug Price Bekerja:
  1. Intercepting Data: Penyerang menggunakan Burp Suite untuk mencegat lalu lintas HTTP antara browser dan server. Burp Suite memungkinkan penyerang untuk melihat dan mengedit data yang dikirimkan melalui permintaan HTTP.
  2. Modifikasi Harga: Setelah data yang relevan dicegat, penyerang dapat mencari parameter yang berhubungan dengan harga produk. Mereka kemudian dapat mengubah nilai harga tersebut menjadi angka yang lebih rendah.
  3. Pengiriman Ulang Permintaan: Setelah memodifikasi harga, penyerang mengirimkan ulang permintaan HTTP ke server dengan data yang telah diubah. Jika server tidak melakukan validasi yang memadai terhadap harga yang dikirimkan, transaksi dapat diselesaikan dengan harga yang salah, mengakibatkan kerugian finansial bagi perusahaan.

Dampak

Serangan bug price, di mana harga produk dapat dimanipulasi, dapat menimbulkan berbagai dampak negatif bagi perusahaan, termasuk kerugian finansial yang signifikan akibat penjualan produk di bawah harga sebenarnya dan potensi kehilangan barang tanpa kompensasi yang layak. Selain itu, serangan ini dapat merusak reputasi perusahaan, mengurangi kepercayaan pelanggan, dan memicu kritik publik.

Pencegahan

Untuk mencegah serangan bug price, di mana harga produk dapat dimanipulasi oleh penyerang menggunakan alat seperti Burp Suite, ada beberapa langkah pencegahan yang dapat diterapkan seperti validasi harga di sisi server merupakan langkah penting untuk mencegah manipulasi data harga yang dikirimkan dari klien (browser).

Sebaiknya, harga produk selalu diambil dari database server berdasarkan ID produk atau parameter lain yang aman, tanpa bergantung pada data yang dikirimkan oleh pengguna. Setiap kali permintaan transaksi diterima, server harus menghitung ulang total harga berdasarkan data yang tersimpan di server, memastikan bahwa harga yang digunakan dalam transaksi benar-benar valid dan tidak dimanipulasi.

Tutorial

  1. Pertama, di sini penulis telah membuat aplikasi web sederhana yang bernama seminar untuk proses pentest. Jadi, pembeli akan melakukan pembayaran seminar sebesar Rp 100.000 menggunakan payment gateway Midtrans. Jika berhasil, maka pembeli akan di alihkan ke halaman yang menampilkan detail transaksi. Tangkapan layar :
  2. Lalu, penulis akan melakukan proses reconnaissance dengan cara inspect element untuk mengetahui struktur HTML pada aplikasi tersebut :
  3. Pada gambar di atas, terdapat beberapa atribut name pada elemen HTML, seperti nama, email, alamat, dan biaya. Penulis akan fokus pada atribut name HTML yang bernama biaya untuk memodifikasi nilai tersebut menggunakan Burp Suite sebelum dikirim ke server.

  4. Sebelum itu, penulis akan menjelaskan bahwa ketika kita mengirimkan data ke server, maka data tersebut dikemas dalam bentuk parameter requests yang dikodekan menggunakan format URL. Format ini memastikan bahwa data dapat dikirimkan secara aman dan terstruktur melalui jaringan. Sebagai contoh, jika kita ingin mengirimkan data pengguna seperti nama, email, alamat, dan biaya, maka data tersebut akan dikodekan dalam bentuk string dengan format parameter URL seperti berikut:
  5. nama=Galih+Anggoro+Prasetya&email=galih%40mail.com&alamat=Dukuhwaru&biaya=100000
  6. Pada langkah ini, penulis melakukan pengisian data seminar tanpa menggunakan burp suite terlebih dahulu sebagai bentuk bahwa harga yang di kirimkan sah pada formulir yang tertera dan menggunakan burp suite pada menu proxy lalu menekan intercept is on untuk proses eksploitasi web untuk mengubah harga seminar. Bisa di lihat video di bawah ini :

  7. 1.

    Pada video ke satu terlihat sah harga yang di kirimkan. Namun apa jadi nya jika penulis menggunakan burp suite untuk mengubah harga seminar?


    2.

    Pada video kedua bahwa penulis berhasil mengubah harga seminar dan requests tersebut valid yang di proses oleh server.

  8. Seperti pada penjelasan di atas bahwa kerentanan tersebut tidak ada validasi di back end nya. Contoh kode PHP yang terdapat file proses.php :
  9. <?php
    // Load file koneksi.php
    include "koneksi.php";
    // 
    
    $nama = $_POST['nama'];
    $alamat = $_POST['alamat'];
    $email = $_POST['email'];
    $biaya = $_POST['biaya'];
    $order_id = rand();
    $transaction_status = 1;
    
    // menginput data ke database
    mysqli_query($koneksi, "INSERT INTO klien (nama, alamat, biaya, order_id, transaction_status, email) VALUES ('$nama', '$alamat', '$biaya', '$order_id', '$transaction_status', '$email')");
    
    // mengalihkan halaman kembali ke index.php
    header("Location: ./midtrans/examples/snap/checkout-process-simple-version.php?order_id=" . $order_id);
    

    Bagaimana jadi nya jika penulis memberikan validasi pada kode di atas, seperti ini :

    <?php
    // Load file koneksi.php
    include "koneksi.php";
    // 
    
    $nama = $_POST['nama'];
    $alamat = $_POST['alamat'];
    $email = $_POST['email'];
    $biaya = $_POST['biaya'];
    $order_id = rand();
    $transaction_status = 1;
    
    // Cek validasi harga jika harga tersebut sesuai Rp 100000
    if($biaya == 100000){
    
    	// menginput data ke database
    	mysqli_query($koneksi, "INSERT INTO klien (nama, alamat, biaya, order_id, transaction_status, email) VALUES ('$nama', '$alamat', '$biaya', '$order_id', '$transaction_status', '$email')");
    
    	// mengalihkan halaman kembali ke index.php
    	header("Location: ./midtrans/examples/snap/checkout-process-simple-version.php?order_id=" . $order_id);
    }else{
    echo "Oops, proses pembayaran seminar tidak valid!";
    }
    

    Kode di atas akan melakukan pengecekan. Jika biaya yang dikirimkan sama dengan Rp 100.000, maka proses requests akan diteruskan ke server. Namun, jika biaya tidak sesuai, akan ditampilkan pesan "Oops, proses pembayaran seminar tidak valid!". Di atas merupakan validasi sederhana untuk contoh. Best practice dalam melakukan validasi harga adalah memeriksa biaya seminar yang tersimpan pada database.

  10. Untuk percobaan sekali lagi, penulis akan menunjukkan bahwa validasi di atas sudah cukup aman pada aplikasi web seminar sederhana tersebut dan tidak masuk ke database server. Video :
  11. Selesai.

Penutup

Contoh di atas merupakan studi kasus pada aplikasi e-commerce yang tidak menerapkan validasi harga di back end. Pada studi kasus nyata nya, terkadang kita perlu melakukan lebih banyak reconnaissance bagaimana aplikasi web tersebut bekerja, agar seorang pentester bisa lebih mengetahui serangan yang pas untuk mengeksploitasi aplikasi web yang rentan.