SQL Injection
sering terjadi karena para developer tidak
memastikan nilai-nilai input yang
diterima dari form web, cookie, parameter
input agar divalidasi sebelum
perintah query SQL dieksekusi oleh database server.
Untuk menguji sebuah aplikasi apakah rentan terhadap serangan SQL injection
atau tidak, diuji berdasarkan ada tidaknya error
SQL ketika diberikan URL sebuah web yang telah dimanipulasi.
Adapun untuk lebih jelasnya tahapan proses dalam menguji aplikasi web rentan
atau tidak terhadap serangan SQL
injection direpresentasikan pada Gambar 1.
Gambar 1 Flowchart Testing SQL Injection
Proses dari diagram
alir pada Gambar 1 dapat diperjelas
sebagai berikut :
1. Pengguna
memberikan input berupa URL, seperti
:
http://www.sample.com/
2. Setelah
URL di-input, maka dilanjutkan dengan proses crawling untuk mengumpulkan daftar URL navigasi dari website tersebut.
Adapun sampel dari hasil crawling,
misalnya :
http://www.sample.com/show.php?id=1
3. Pengguna
memilih salah satu dari dua teknik SQL
injection yang ada yaitu uji basic error atau
blind SQL Injection.
4. Setelah
teknik dipilih maka daftar dari URL
hasil crawling akan dimanipulasi.
Misalnya sebagai berikut:
· Jika
pengguna memilih basic SQL injection
maka URL dimanipulasi dengan menambah
tanda kutip satu (‘) seperti:
http://www.sample.com/show.php?id=1’
atau
dengan tanda kutip yang telah ter-encoding
menjadi karakater untuk menguji apakah tingkatan filter hanya sebatas
pembatasan karakter tanda kutip satu seperti:
http://www.sample.com/show.php?id=1%27
·
Jika pengguna memilih blind SQL injection maka URL dimanipulasi dengan menambahkan
kondisi true dan false seperti :
http://www.sample.com/show.php?id=1+and+1=1-- (Kondisi true)
http://www.sample.com/show.php?id=1+and+1=0-- (Kondisi false)
atau
dengan meng-encoding URL kondisi true dan false ke dalam karakter ASCII
untuk apakah melewati filtering yang dibuat developer :
http://www.sample.com/show.php?id=1%20and%201%3D1-- (Kondisi true)
http://www.sample.com/show.php?id=1%20and%201%3D0-- (Kondisi false)
5.
Setiap URL yang telah dimanipulasi, dilakukan request ke web server,
kemudian hasil respon request akan di-scanning apakah memiliki konten yang diinginkan. Misalnya sebagai
berikut :
· Jika
pengguna memilih basic SQL injection dan
URL
telah dimanipulasi dengan menambah tanda kutip satu (‘) :
http://www.sample.com/show.php?id=1’
memiliki error default database seperti berikut :
You
have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
Maka aplikasi web tersebut disimpulkan rentan
terhadap serangan SQL injection. Jika
tidak memiliki error default database
atau halaman web normal maka aplikasi web tersebut tidak rentan terhadap
serangan SQL injection.
atau dengan tanda kutip
yang telah ter-encoding :
http://www.sample.com/show.php?id=1%27
memiliki error default database seperti berikut :
You
have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
Maka aplikasi web
tersebut disimpulkan rentan terhadap serangan SQL injection hanya dengan meng-encode
injeksi. Jika tidak memiliki error database atau halaman web normal maka aplikasi
web tersebut tidak rentan terhadap serangan SQL
injection.
· Jika
pengguna memilih blind SQL injection maka
URL dimanipulasi dengan menambahkan
kondisi true dan false, hasilnya yaitu:
http://www.sample.com/show.php?id=1+and+1=1-- (Kondisi true)
size :
1245 character
http://www.sample.com/show.php?id=1+and+1=0-- (Kondisi false)
size :
1248 character
Memiliki jumlah
karakter yang berbeda dan isi halaman web tersebut tidak sama maka
kesimpulannya aplikasi web tersebut rentan diserang blind SQL injection. Jika sebaliknya maka aplikasi web tersebut
tidak rentan diserang blind SQL.
atau dengan meng-encoding kondisi true dan false seperti :
http://www.sample.com/show.php?id=1%20and%201%3D1-- (Kondisi true)
size : 1245 character
http://www.sample.com/show.php?id=1%20and%201%3D0-- (Kondisi false)
size
: 1248 character
Memiliki jumlah karakter yang
berbeda dan isi halaman web tersebut tidak sama maka kesimpulannya aplikasi web
tersebut rentan diserang blind SQL
injection dengan meng-encode injeksi. Jika sebaliknya maka
aplikasi web tersebut tidak rentan diserang blind
SQL.
0 komentar:
Posting Komentar