A. CSRF Attack
- Untuk mencoba serangan, anda bisa mendownload project web yang sudah tersedia untuk penetrasi, download di sini -> https://github.com/raesene/bWAPP
- Kemudian download aplikasi sender penetrasi tambahan Burp Suite di sini -> https://portswigger.net/burp/communitydownload
- Setelah anda download, install pada localhost anda. Jika bingung, bisa lihat tutorial berikut -> https://www.youtube.com/watch?v=F3QcgmCuEC0
- Jika sudah terinstall, masuk ke halaman Login
http://localhost/bwapp/login.php
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/04/image-74-1024x671.png)
5. Kemudian login dengan Login : bee, Password : bug
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/04/image-75-1024x699.png)
6. Untuk serangan CSRF terbagi menjadi beberapa serangan, kita coba satu – persatu. Sekarang kita coba CSRF (Change Password) kemudian pilih Hack
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image.png)
7. Setelah masuk ke halaman yang di tuju, klik kanan -> View page source ( Google Chrome )
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-1-1024x576.png)
8. Kemdian block baris code seeperti gambar di bawah, copy + paste di editor anda.
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-2.png)
9. Buatlah sebuah file csrf.html simpan di lokasi yang anda inginkan. Paste code di atas.
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-3.png)
10. Sekarang copy + paste url pada halaman ganti password
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-4-1024x576.png)
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-5.png)
11. Sekarang kita akan mengganti password menggunakan file crsf.html yang dibuat, ubah code seperti gambar berikut
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-6.png)
12. untuk melakukan perubahan password, buka file csrf.html pada browser anda, klik Change
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-8.png)
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-9.png)
13. Kemudian coba anda login dengan password baru yang dibuat lewat file csrf.html
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-10.png)
B. Solution
- Untuk mengatasi serangan CSRF (Change Password) , pada bagian form input, tambahkan current password field seperti gambar di bawah
![](https://www.rumahcoding.co.id/wp-content/uploads/2019/05/image-12.png)
2. Pada saat handling request get password_curr , tambahkan code berikut ( Sesuaikan nama tabel dan kolom )
if(isset($_REQUEST["password_curr"]))
{
$password_curr = $_REQUEST["password_curr"];
$password_curr = mysqli_real_escape_string($link, $password_curr);
$password_curr = hash("sha1", $password_curr, false);
$sql = "SELECT password FROM users WHERE login = '" . $login . "' AND password = '" . $password_curr . "'";
// Debugging
// echo $sql;
$recordset = $link->query($sql);
if(!$recordset)
{
die("Connect Error: " . $link->error);
}
// Debugging
// echo "<br />Affected rows: ";
// printf($link->affected_rows);
$row = $recordset->fetch_object();
if($row)
{
// Debugging
// echo "<br />Row: ";
// print_r($row);
$sql = "UPDATE users SET password = '" . $password_new . "' WHERE login = '" . $login . "'";
// Debugging
// echo $sql;
$recordset = $link->query($sql);
if(!$recordset)
{
die("Connect Error: " . $link->error);
}
// Debugging
// echo "<br />Affected rows: ";
// printf($link->affected_rows);
$message = "<font color=\"green\">The password has been changed!</font>";
}
else
{
$message = "<font color=\"red\">The current password is not valid!</font>";
}
}