Difference between revisions of "Hands-on: Password Cracking dan Authentication Bypass"
Onnowpurbo (talk | contribs) (Created page with "Berikut adalah penjelasan lengkap dengan contoh menggunakan **KALI Linux 2024.3** untuk menyerang **DVWA** (Damn Vulnerable Web Application) dengan fokus pada **Password Crack...") |
Onnowpurbo (talk | contribs) |
||
Line 1: | Line 1: | ||
− | Berikut adalah penjelasan lengkap dengan contoh menggunakan | + | Berikut adalah penjelasan lengkap dengan contoh menggunakan '''KALI Linux 2024.3''' untuk menyerang '''DVWA''' (Damn Vulnerable Web Application) dengan fokus pada '''Password Cracking''' dan '''Authentication Bypass''' untuk keperluan kuliah ethical hacking. |
− | + | ==Setup DVWA di Server Ubuntu== | |
− | |||
− | + | * Sebelum memulai eksploitasi, pastikan DVWA sudah terinstal dan dijalankan di Server Ubuntu. Berikut adalah langkah-langkah untuk setup: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | sudo apt update | |
+ | sudo apt install apache2 mysql-server php php-mysqli php-gd libapache2-mod-php | ||
+ | git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa | ||
+ | cd /var/www/html/dvwa | ||
+ | sudo cp config/config.inc.php.dist config/config.inc.php | ||
+ | sudo service apache2 start | ||
+ | sudo service mysql start | ||
− | + | * Setelah itu, buat database untuk DVWA: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | mysql -u root -p | |
+ | CREATE DATABASE dvwa; | ||
+ | GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost' IDENTIFIED BY 'password'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | EXIT; | ||
− | + | * Terakhir, buka browser dan akses DVWA melalui `http://localhost/dvwa`, kemudian login dengan username `admin` dan password `password`. Pastikan security level DVWA diatur ke '''Low''' di menu '''DVWA Security'''. | |
− | |||
− | + | ==Password Cracking (Brute Force)== | |
− | + | Untuk cracking password pada DVWA, kita akan menggunakan teknik brute force dengan bantuan '''Hydra''', yang merupakan tool di Kali Linux. | |
− | |||
− | |||
− | |||
− | + | '''Langkah 1: Identifikasi Form Login''' | |
− | + | * Buka halaman login DVWA di browser dan lihat elemen-elemen HTML yang relevan. Misalnya, form login mungkin memiliki parameter berikut: | |
+ | ** '''username''': input username | ||
+ | ** '''password''': input password | ||
+ | ** '''Login''': tombol untuk mengirimkan request | ||
− | Berikut contoh perintah Hydra untuk brute force: | + | '''Langkah 2: Menjalankan Hydra untuk Brute Force''' |
+ | * Dalam contoh ini, kita akan menggunakan daftar kata (wordlist) untuk mencoba menebak password. Hydra mendukung serangan brute force dengan memanfaatkan berbagai metode seperti form login POST. | ||
+ | * Berikut contoh perintah Hydra untuk brute force: | ||
− | + | hydra -l admin -P /usr/share/wordlists/rockyou.txt 127.0.0.1 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" | |
− | hydra -l admin -P /usr/share/wordlists/rockyou.txt 127.0.0.1 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" | ||
− | |||
− | + | * Dimana | |
− | + | ** `-l admin`: mencoba username `admin`. | |
− | + | ** `-P /usr/share/wordlists/rockyou.txt`: file wordlist untuk mencoba berbagai password. | |
− | + | ** `http-post-form`: format untuk mengirimkan form POST. | |
− | + | ** `/dvwa/login.php`: path ke form login. | |
− | + | ** `username=^USER^&password=^PASS^&Login=Login`: parameter POST di form login. | |
+ | ** `Login failed`: string yang muncul saat login gagal. | ||
− | Jika password ditemukan, Hydra akan menampilkan output dengan password yang benar. | + | * Jika password ditemukan, Hydra akan menampilkan output dengan password yang benar. |
− | + | '''Output Contoh:''' | |
− | |||
− | |||
− | |||
− | + | [80][http-post-form] host: 127.0.0.1 login: admin password: 123456 | |
+ | |||
+ | |||
+ | ==Authentication Bypass (SQL Injection)== | ||
SQL Injection adalah teknik yang memanfaatkan kelemahan dalam query SQL yang digunakan aplikasi web. Dalam kasus authentication bypass, kita bisa menyuntikkan query SQL ke dalam form login untuk mengakses akun tanpa mengetahui password. | SQL Injection adalah teknik yang memanfaatkan kelemahan dalam query SQL yang digunakan aplikasi web. Dalam kasus authentication bypass, kita bisa menyuntikkan query SQL ke dalam form login untuk mengakses akun tanpa mengetahui password. | ||
− | + | '''Langkah 1: Mengidentifikasi SQL Injection di Form Login''' | |
− | Buka halaman login DVWA dan masukkan payload berikut di kolom | + | * Buka halaman login DVWA dan masukkan payload berikut di kolom '''username''' dan '''password''': |
+ | |||
+ | '''Username''': `' OR '1'='1` | ||
+ | '''Password''': `' OR '1'='1` | ||
− | + | * Payload ini mengeksploitasi kelemahan query SQL di backend dengan menambahkan kondisi `'1'='1`, yang selalu benar, sehingga bypass authentication terjadi. | |
− | |||
− | + | '''Langkah 2: Proses Eksploitasi''' | |
+ | * Setelah memasukkan payload di atas, klik '''Login'''. Jika aplikasi rentan terhadap SQL Injection, Anda akan berhasil login sebagai administrator atau pengguna lain tanpa memasukkan password yang benar. | ||
− | + | '''Penjelasan SQL Injection''' | |
− | + | * Di backend, query SQL yang biasanya digunakan adalah: | |
− | + | SELECT * FROM users WHERE username = 'input_username' AND password = 'input_password'; | |
− | |||
− | ` | + | * Dengan payload `' OR '1'='1`, query menjadi: |
− | |||
− | |||
− | + | SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1'; | |
− | ` | + | * Karena `'1'='1'` selalu bernilai benar, query ini akan mengembalikan semua record dari tabel `users`, dan aplikasi menganggap login berhasil. |
− | |||
− | ``` | ||
− | + | ==Langkah Pencegahan== | |
− | |||
Untuk mencegah serangan password cracking dan SQL injection, langkah-langkah yang bisa diambil adalah: | Untuk mencegah serangan password cracking dan SQL injection, langkah-langkah yang bisa diambil adalah: | ||
− | + | * '''Menggunakan password yang kuat dan mengimplementasikan rate-limiting''' pada login untuk mencegah brute force. | |
− | + | * '''Menggunakan prepared statements (parameterized queries)''' untuk menghindari SQL Injection. | |
− | + | * Menyaring input dari pengguna dan melakukan validasi. | |
− | Dengan menggunakan teknik ini di kelas ethical hacking, | + | Dengan menggunakan teknik ini di kelas ethical hacking, kita dapat belajar bagaimana penyerang dapat memanfaatkan celah keamanan dan bagaimana untuk melindungi sistem dari serangan tersebut. |
Latest revision as of 05:17, 29 October 2024
Berikut adalah penjelasan lengkap dengan contoh menggunakan KALI Linux 2024.3 untuk menyerang DVWA (Damn Vulnerable Web Application) dengan fokus pada Password Cracking dan Authentication Bypass untuk keperluan kuliah ethical hacking.
Setup DVWA di Server Ubuntu
- Sebelum memulai eksploitasi, pastikan DVWA sudah terinstal dan dijalankan di Server Ubuntu. Berikut adalah langkah-langkah untuk setup:
sudo apt update sudo apt install apache2 mysql-server php php-mysqli php-gd libapache2-mod-php git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa cd /var/www/html/dvwa sudo cp config/config.inc.php.dist config/config.inc.php sudo service apache2 start sudo service mysql start
- Setelah itu, buat database untuk DVWA:
mysql -u root -p CREATE DATABASE dvwa; GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT;
- Terakhir, buka browser dan akses DVWA melalui `http://localhost/dvwa`, kemudian login dengan username `admin` dan password `password`. Pastikan security level DVWA diatur ke Low di menu DVWA Security.
Password Cracking (Brute Force)
Untuk cracking password pada DVWA, kita akan menggunakan teknik brute force dengan bantuan Hydra, yang merupakan tool di Kali Linux.
Langkah 1: Identifikasi Form Login
- Buka halaman login DVWA di browser dan lihat elemen-elemen HTML yang relevan. Misalnya, form login mungkin memiliki parameter berikut:
- username: input username
- password: input password
- Login: tombol untuk mengirimkan request
Langkah 2: Menjalankan Hydra untuk Brute Force
- Dalam contoh ini, kita akan menggunakan daftar kata (wordlist) untuk mencoba menebak password. Hydra mendukung serangan brute force dengan memanfaatkan berbagai metode seperti form login POST.
- Berikut contoh perintah Hydra untuk brute force:
hydra -l admin -P /usr/share/wordlists/rockyou.txt 127.0.0.1 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
- Dimana
- `-l admin`: mencoba username `admin`.
- `-P /usr/share/wordlists/rockyou.txt`: file wordlist untuk mencoba berbagai password.
- `http-post-form`: format untuk mengirimkan form POST.
- `/dvwa/login.php`: path ke form login.
- `username=^USER^&password=^PASS^&Login=Login`: parameter POST di form login.
- `Login failed`: string yang muncul saat login gagal.
- Jika password ditemukan, Hydra akan menampilkan output dengan password yang benar.
Output Contoh:
[80][http-post-form] host: 127.0.0.1 login: admin password: 123456
Authentication Bypass (SQL Injection)
SQL Injection adalah teknik yang memanfaatkan kelemahan dalam query SQL yang digunakan aplikasi web. Dalam kasus authentication bypass, kita bisa menyuntikkan query SQL ke dalam form login untuk mengakses akun tanpa mengetahui password.
Langkah 1: Mengidentifikasi SQL Injection di Form Login
- Buka halaman login DVWA dan masukkan payload berikut di kolom username dan password:
Username: `' OR '1'='1` Password: `' OR '1'='1`
- Payload ini mengeksploitasi kelemahan query SQL di backend dengan menambahkan kondisi `'1'='1`, yang selalu benar, sehingga bypass authentication terjadi.
Langkah 2: Proses Eksploitasi
- Setelah memasukkan payload di atas, klik Login. Jika aplikasi rentan terhadap SQL Injection, Anda akan berhasil login sebagai administrator atau pengguna lain tanpa memasukkan password yang benar.
Penjelasan SQL Injection
- Di backend, query SQL yang biasanya digunakan adalah:
SELECT * FROM users WHERE username = 'input_username' AND password = 'input_password';
- Dengan payload `' OR '1'='1`, query menjadi:
SELECT * FROM users WHERE username = OR '1'='1' AND password = OR '1'='1';
- Karena `'1'='1'` selalu bernilai benar, query ini akan mengembalikan semua record dari tabel `users`, dan aplikasi menganggap login berhasil.
Langkah Pencegahan
Untuk mencegah serangan password cracking dan SQL injection, langkah-langkah yang bisa diambil adalah:
- Menggunakan password yang kuat dan mengimplementasikan rate-limiting pada login untuk mencegah brute force.
- Menggunakan prepared statements (parameterized queries) untuk menghindari SQL Injection.
- Menyaring input dari pengguna dan melakukan validasi.
Dengan menggunakan teknik ini di kelas ethical hacking, kita dapat belajar bagaimana penyerang dapat memanfaatkan celah keamanan dan bagaimana untuk melindungi sistem dari serangan tersebut.