Saya rasa sampai
sejauh ini, perjalanan anda untuk memahami SQL Injection terus bertambah. Saya
harap sesampainya anda pada bab ini, sudah bisa memahami dan menggunakan SQL
Injection. Dalam bab ini, kita akan mengulas SQL Injection. Jika dari teknik
SQL Injection sebelumnya, kita berfokus untuk menemukan username dan password
sebuah situs web. Lain halnya dengan Advanced SQL Injection, pada Advanced SQL
Injection ini, yang kita lakukan tidak hanya mengakses database. Pada teknik
ini, kita juga bisa membaca atau melihat file yang ada pada komputer target,
bahkan lebih dari itukita juga bisa memasukkan file ke dalamnya.
Dalam bab
ini,, kita akan menggunakan perintah
LOAD_FILE dan INTO OUTFILE.
·
LOAD
FILE berguna untuk membuka isi file
·
INTO
OUTFILE berfungsi untuk menulis isi file
Perintah
tersebut kita masukkan pada angka error yang ditemukan sewaktu anda melakukan
SQL Injection dari bab-bab terdahulu. Ingat, perintah INTO OUTFILE hanya bisa
membuat sebuah file baru, tidak digunakan untuk mengubah isi file yang sudah
ada.
Sekarang kita
akan mencari tahu Privileges seorang user terlebih dahulu.
Informasi yang
dihasilkan adalah nama user yang digunakan beserta informasi privileges.
Apabila di sebelah nama user terdapat huruf ‘Y’ berarti user tersebut punya
privileges file, yang artinya memiliki akses untuk melakukan Load and write
sebuah file.
Melakukan
pemeriksaan file_priv ini sangat penting karena jika kita punya tidak punya
akses write maka kita hanya bisa membaca sebuah file, namun tidak bisa membuat
file baru.
Sebagai contoh,
saya membuat terlebih dahulu sebuah file dengan nama test.txt menggunakan
sebuah Notepad. File tersebut saya taruh di C:.
Pada bab ini,
saya tidak akan melakukan proses SQL Injection dari awal lagi. Ita gunakan saja
kasus dari Bab 4 perintah untuk membaca isi sebuah file LOAD_FILE (nama_file),
berikut contoh pemakaiannya:
Tidak hanya itu
saja, perintah LOAD_FILE ini bahkan juga bisa membaca file yang ditempatkan dalam sebuah folder.
Misalnya, saya menyalin file test.txt di atas dan membuat sebuah folder baru
dengan nama contoh pada C:\contoh. Maka perintah di URL-nya adalah:
Bahkan file yang
terdapat dalam folder C:\Windows pun sebenarnya juga dapat dibaca.
Perlu juga anda
ketahui, apabila ada masalah sewaktu anda menggunakan perintah di atas, seperti
file yang anda ingin lihat tidak tampil. Kemungkinan fitur magic_quotes telah
diaktifkan. Untuk mengatasi hal ini, anda harus mengubah nama file menjadi Hexa
atau Decimal.
Apabila file yang ingin
anda lihat berada dalam drive C: langsung, maka anda cukup mengonversi
\namafile, dalam hal ini ‘\test.txt’.
Tanda kutip
tunggal juga ikut anda konversi.
Sehingga
perintah yang dimasukkan dalam bentuk Hexa menjadi:
Untuk membaca file dalam
linx, perintah yang digunakan adalah:
LOAD_FILE(‘/etc/passwd’).
Atau menggunakan
kode hexa: 0x2f6574632f706173737764.
Berikut contoh
hasil pemakaian LOAD_FILE(‘/etc/passwd’).
Apabila sewaktu
anda menggunakan perintah LOAD_FILE di atas, tidak menampilkan isi file,
kemungkinan besar file atau direktori tersebut tidak ada, atau menggunakan nama
lainnya. Dalam menampilkan file, hal yang perlu dicermati adalah ukuran file
harus kurang dari max_allowed_packet. Dimana ukuran default
@@max_allowed_packet adalah 1047552 bytes.
Sampai di sini
anda telah bisa membaca isi sebuah file menggunakan browser. Kita akan mencoba
manuver lain, dengan membuat sebuah file karya anda sendiri. Pada bagian ini
barulah kita menggunakan perintah INTO OUTFILE.
Perintah yang
digunakan adalah:
UNION SELECT
1,2,3,*isi file*,5,6,7 INTO OUTFILE ‘ /nama-file--
Langsung saja
pada contoh penerapannya.
Sewaktu anda
menjalankan perintah di atas maka akan tampil halaman error seperti gambar di
bawah ini.
Pada beberapa
kasus, pesan error yang tampil adalah:
Warning:
mysql_fetch_object() expects parameter 1 to be
Mysql_result, boolean given in
C:\xampp\htdocs\joomla\libraries\joomla\database\mysqli.php
on line 462
Baiklah,
sekarang kita akan melihat hasil yang kita kerjakan di atas, dengan membuka
drive C:, ternyata di dalamnya muncul sebuah file baru dengan nama ‘abc.txt’.
Dan isi file tersebut bertuliskan ‘Hacking is Creativity’.
Dalam kondisi
online, kita perlu tahu direktori yang digunakan untuk menyimpan file atau
data. Untuk mengetahui path tersebut, bisa kita lihat dari pesan error yang
tampil. Misalnya, pada pesan error di bawah ini:
Warning: mysql_num_rows():
supplied argument is not a valid
MySQL result resource in
/home2/abc/public_html/situswebku/functionFiles\
/filenya.php on
line 69
Dari pesan error
di atas di ketahui path untuk memasukkan file adalah: home2/abc/public_html/situswebku/.
Jika diperlukan, anda bisa
memasukkan teks yang anda inginkan menggunakan kode hex. Misalnya, pada kasus,
untuk memasukkan ‘</include($_GET”]);/>’, yang muncul hanyalah halaman
kosong. Oleh karena itu, anda harus mengakali dengan kode hexa:
Ox273c3f696e636c75646528245f4745545b225d293b3f3e27.
Selain itu,
untuk melakukan write kita juga harus tahu directory mana yang writable.
Biasanya sebuah situs web memiliki folder /tmp, dan biasanya folder ini pasti
writable. Alternatif lain adalah folder image, atau seperti daftar berikut ini:
·
/var/www/html/
·
/var/www/web1/html/
·
/var/www/sitename/htdocs/
·
/var/www/localhost/htdocs
·
/var/www/vhosts/sitename/httpdocs//etc/init.d/apache
·
/etc/init.d/apache2
·
/etc/httpd/httpd.conf
·
/etc/apache/apache.conf
·
/etc/apache/httpd.conf
·
/etc/apache2/apache2.conf
·
/etc/apache2/httpd.conf
·
/usr/local/apache2/conf/httpd.conf
·
/usr/local/apache/conf/httpd.conf
·
/opt/apache/conf/httpd.conf
·
/home/apache/httpd.conf
·
/home/apache/conf/httpd.conf
·
/etc/apache2/sites-available/default
·
/etc/apache2/vhosts.d/default_vhosts.include
·
/templates_compiled/
·
/templates_c/
·
Templates/
·
Temporary/
·
/images/
·
/cache/
·
/temp/
·
/files/
Pada dasarnya
ketika anda bisa memasukkan sebuah file maka anda juga bisa memasang webshell
pada situs web target. Efeknya anda bisa mengendalikan komputer orang lain
hanya melalui sebuah browser. Namun, pembahasan mengenai webshell ini butuh
penjelasan tersendiri, jadi tidak saya bahas di sini. Untuk Joomla, anda bisa
memasang webshell dengan membaca buku Hacking Joomla.
ConversionConversion EmoticonEmoticon