Bypass Login dengan SQL Injection

Demo ini akan menunjukkan bagaimana seorang penyerang dapat mengakses akun pengguna tanpa kredensial yang valid dengan mengeksploitasi kerentanan SQL Injection dalam aplikasi web. Berikut adalah langkah-langkah lengkap untuk membuat demo serangan bypass login menggunakan SQL Injection. 

1. Setup Web Server dan Database

Anda memerlukan server lokal seperti XAMPP atau Laragon untuk menjalankan aplikasi web dan database MySQL.

2. Database Setup
 
- Buat database bernama ‘demo_db’. 


- Buat tabel `users` dengan kolom `id`, `username`, dan `password` atau dengan command berikut: CREATE DATABASE demo_db; USE demo_db; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); INSERT INTO users (username, password) VALUES ('admin', 'adminpass'); INSERT INTO users (username, password) VALUES ('user', 'userpass');





Langkah-langkah Demo:

1. Buat Formulir Login Buat file `login.html` untuk menampilkan formulir login sederhana.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Login Page</title>
</head>
<body>
 <h2>Login</h2>
 <form action="login.php" method="post">
 <label for="username">Username:</label>
 <input type="text" id="username" name="username"><br><br>
 <label for="password">Password:</label>
 <input type="password" id="password" name="password"><br><br>
 <input type="submit" value="Login">
 </form>
</body>
</html>

2. Buat Skrip Login yang Rentan

Buat file `login.php` yang mengandung kerentanan SQL Injection.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "demo_db";
// Membuat koneksi ke database
$conn = new mysqli($servername, $username, $password, $dbname);
// Mengecek koneksi
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
   }
   // Mengambil input dari formulir
   $user = $_POST['username'];
   $pass = $_POST['password'];
   // Query yang rentan terhadap SQL Injection
   $sql = "SELECT * FROM users WHERE username='$user' AND password='$pass'";
   $result = $conn->query($sql);
   if ($result->num_rows > 0) {
    echo "Login berhasil!";
   } else {
    echo "Login gagal!";
   }
   $conn->close();
   ?>


3. Menunjukkan Kerentanan Jalankan aplikasi dan buka `login.html` di browser. 


Masukkan input berikut untuk melakukan serangan bypass login: 
- Username: ' OR '1'='1 
- Password: ' OR '1'='1 




4. Hasil Eksploitasi Setelah mengklik tombol login, Anda akan melihat pesan "Login berhasil!" meskipun tidak memasukkan kredensial yang valid. 


Hal ini terjadi karena query SQL menjadi:
SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1' Query ini selalu benar dan mengembalikan semua baris dalam tabel `users`. 

5. Tugas 
• Buat script tambahan agar serangan SQL Injection pada kasus diatas tidak dapat di jalankan 

Maka tampilannya: 






• Jelaskan dampak dari serangan SQL Injection 
Injeksi SQL  memiliki efek berbahaya berikut: 
1. Validasi login mungkin terganggu. 
Injeksi SQL memungkinkan penyerang mengakses situs web/aplikasi tanpa nama pengguna dan kata sandi yang valid. Artinya, peran autentikasi pengguna dalam memfilter akses ke situs web dapat dengan mudah diakali. Kondisi ini tentu sangat berbahaya bagi website yang dituju.
2. Privasi pengguna situs web terancam. 
Selain bisa mengakses website tanpa login, pelaku SQL injection juga bisa login sebagai pengguna lain tergantung teknik yang digunakan. Dalam situasi seperti ini, peretas dapat memperoleh informasi pengguna dan menggunakannya untuk aktivitas ilegal. Termasuk aktivitas penipuan yang mengatasnamakan pengguna. 
3. Basis data telah dimodifikasi. 
Teknik injeksi SQL  juga memungkinkan peretas untuk  mengubah data transaksi pelanggan dan menambahkan data baru ke database. Konten dari akun pelanggan juga bisa dipindahkan ke akun lain milik peretas. 
4. Data historis telah dihapus dari database. Penyerang dengan akses administratif tidak ingin tindakannya dilacak dan dapat menghapus semua data di database. 
5. Pelanggaran firewall. 
Beberapa server database menyediakan akses ke sistem operasi "OS". Jika serangan injeksi SQL  berhasil mendapatkan akses ke sistem operasi, berarti peretas dapat menggunakan eksekusi perintah OS untuk menyerang jaringan internal  di belakang firewall.












Komentar

Postingan Populer