Difference between revisions of "Hands-on: Password Cracking dan Authentication Bypass"

From OnnoWiki
Jump to navigation Jump to search
(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...")
 
 
Line 1: Line 1:
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.
+
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.
  
### 1. **Setup DVWA di Kali Linux 2024.3**
+
==Setup DVWA di Server Ubuntu==
Sebelum memulai eksploitasi, pastikan DVWA sudah terinstal dan dijalankan di Kali Linux. Berikut adalah langkah-langkah untuk setup:
 
  
```bash
+
* 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:
+
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
  
```bash
+
* 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**.
+
mysql -u root -p
 +
CREATE DATABASE dvwa;
 +
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost' IDENTIFIED BY 'password';
 +
FLUSH PRIVILEGES;
 +
EXIT;
  
### 2. **Password Cracking (Brute Force)**
+
* 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'''.
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
+
==Password Cracking (Brute Force)==
Buka halaman login DVWA di browser dan lihat elemen-elemen HTML yang relevan. Misalnya, form login mungkin memiliki parameter berikut:
+
Untuk cracking password pada DVWA, kita akan menggunakan teknik brute force dengan bantuan '''Hydra''', yang merupakan tool di Kali Linux.
- **username**: input username
 
- **password**: input password
 
- **Login**: tombol untuk mengirimkan request
 
  
#### Langkah 2: Menjalankan Hydra untuk Brute Force
+
'''Langkah 1: Identifikasi Form Login'''
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.
+
* 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:
  
```bash
+
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"
 
```
 
  
- `-l admin`: mencoba username `admin`.
+
* Dimana
- `-P /usr/share/wordlists/rockyou.txt`: file wordlist untuk mencoba berbagai password.
+
** `-l admin`: mencoba username `admin`.
- `http-post-form`: format untuk mengirimkan form POST.
+
** `-P /usr/share/wordlists/rockyou.txt`: file wordlist untuk mencoba berbagai password.
- `/dvwa/login.php`: path ke form login.
+
** `http-post-form`: format untuk mengirimkan form POST.
- `username=^USER^&password=^PASS^&Login=Login`: parameter POST di form login.
+
** `/dvwa/login.php`: path ke form login.
- `Login failed`: string yang muncul saat login gagal.
+
** `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:
+
'''Output Contoh:'''
```
 
[80][http-post-form] host: 127.0.0.1  login: admin  password: 123456
 
```
 
  
### 3. **Authentication Bypass (SQL Injection)**
+
[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
+
'''Langkah 1: Mengidentifikasi SQL Injection di Form Login'''
Buka halaman login DVWA dan masukkan payload berikut di kolom **username** dan **password**:
+
* Buka halaman login DVWA dan masukkan payload berikut di kolom '''username''' dan '''password''':
 +
 
 +
  '''Username''': `' OR '1'='1`
 +
  '''Password''': `' OR '1'='1`
  
- **Username**: `' OR '1'='1`
+
* Payload ini mengeksploitasi kelemahan query SQL di backend dengan menambahkan kondisi `'1'='1`, yang selalu benar, sehingga bypass authentication terjadi.
- **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.
  
#### Langkah 2: Proses Eksploitasi
+
'''Penjelasan SQL Injection'''
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.
+
* Di backend, query SQL yang biasanya digunakan adalah:
  
#### Penjelasan SQL Injection
+
SELECT * FROM users WHERE username = 'input_username' AND password = 'input_password';
Di backend, query SQL yang biasanya digunakan adalah:
 
  
```sql
+
* Dengan payload `' OR '1'='1`, query menjadi:
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';
  
```sql
+
* Karena `'1'='1'` selalu bernilai benar, query ini akan mengembalikan semua record dari tabel `users`, dan aplikasi menganggap login berhasil.
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==
  
### 4. **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 password yang kuat dan mengimplementasikan rate-limiting''' pada login untuk mencegah brute force.
- **Menggunakan prepared statements (parameterized queries)** untuk menghindari SQL Injection.
+
* '''Menggunakan prepared statements (parameterized queries)''' untuk menghindari SQL Injection.
- Menyaring input dari pengguna dan melakukan validasi.
+
* Menyaring input dari pengguna dan melakukan validasi.
  
Dengan menggunakan teknik ini di kelas ethical hacking, siswa dapat belajar bagaimana penyerang dapat memanfaatkan celah keamanan dan bagaimana untuk melindungi sistem dari serangan tersebut.
+
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.


Pranala Menarik