Sabtu, 11 Oktober 2014

Proses menguji serangan SQL Injection



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.
Categories: ,

0 komentar:

Posting Komentar