Kopas
dari http:ketikspasi.blogspot.com/2011/10/kopas-dari-httpsonnysoleman.html yang membahas
mengenai pengamanan/ security pada joomla dengan mengkonfigurasi kembali
file “configuration.php” yang
terletak di root folder dari Joomla site kita menjadi target utama
Hacker untuk bisa akses masuk / login ke Control Panel / Backend
Administrator Joomla, juga ke isi perut joomla yaitu database MySQL.
Berikut ini tips ampuh untuk mengamankan file “configuration.php” tersebut.
Dengan
teknik RFI (Remote File Inclusion) hacker bisa menemukan celah /
lubang di Joomla site kita, jika celah / lubang ini tidak ditutup
(setting PHP.ini, baca artikel saya sebelumnya), maka hacker bisa
meletakkan Script Kiddies di salah satu sub folder dalam joomla site
kita, begitu Script Kiddies ini dijalankan oleh hacker, maka dengan
mudah file “configuration.php” ditemukan dan dibaca isinya oleh hacker.
File “configuration.php“,
dari versi awal CMS Joomla sampai ke versi terakhir tidak banyak
mengalami perubahan / kemajuan yang berarti, hanya berubah diisinya
saja. Hal ini telah saya amati sejak Joomla versi 1.0.X sampai versi
terbaru 1.7.0.
Kelemahan utama file “configuration.php” ini :
- nama filenya tidak pernah berubah
- Terletak (selalu) di root folder dari joomla sitenya
- isinya yang merupakan “text murni” sehingga bisa dibaca dengan mudah.
- nama filenya tidak pernah berubah
- Terletak (selalu) di root folder dari joomla sitenya
- isinya yang merupakan “text murni” sehingga bisa dibaca dengan mudah.
Tiga kelemahan ini, bisa dengan mudah dimanfaatkan oleh hacker, untuk menembus Joomla site kita.
Untuk mengatasi tiga kelemahan ini, saya coba melakukan sedikit riset terhadap file “configuration.php”
dari semua versi Joomla dan cara Joomla site mengaksesnya. Hasilnya
saya menemukan teknik pengamanan yang cukup efektif terkait file “configuration.php” ini.
Pengamanannya terdiri dari 2 bagian :
1. Mengubah nama file / rename file “configuration.php” dan memindahkan lokasinya.
2. Mengenkripsi variable nama database dan password akses ke database MySQL joomla site.
1. Mengubah nama file / rename file “configuration.php” dan memindahkan lokasinya.
2. Mengenkripsi variable nama database dan password akses ke database MySQL joomla site.
Berikut
ini langkah-langkahnya dalam berbagai versi Joomla, sesuaikan dengan
versi Joomla yang anda gunakan. Scroll ke bawah untuk melihat versi
yang sesuai.
Pengamanan di Joomla versi 1.0.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
- index.php - index2.php - globals.php - administrator/index.php - administrator/index2.php - administrator/index3.php - administrator/components/com_admin/admin.admin.html.php - administrator/components/com_config/admin.config.html.php - administrator/components/com_config/admin.config.php - administrator/components/com_config/config.class.php - administrator/components/com_languages/admin.languages.php - administrator/includes/auth.php - includes/database.mysql5.php - includes/database.mysqli.php - includes/database.php - includes/joomla.php - includes/sef.php |
2.
Letakkan file-file yang anda download tersebut sesuai dengan
subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda.
samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah
anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak
oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace” seperti gambar berikut :
10.
Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat
anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
11. Lalu klik tombol
. Jika muncul dialog konfirmasi seperti berikut.
Konfirmasi Replace
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php“
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
isi file includes/myset.php
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
Paste text nama database
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
hasil klik tombol encrypt
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database. pada file “includes/myset.php“
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
nama database & password terenkripsi
21. Masih dari dalam editor Dreamweaver, buka / open file “includes/database.php“
22. Scroll / temukan syntax berikut :
function database( $host=’localhost’, $user, $pass, $db=”, $table_prefix=”, $goOffline=true ) { |
Tepat sesudahnya tambahkan syntax berikut :
$db = base64_decode($db); $pass = base64_decode($pass); |
23. Buka / open file “includes/database.mysql5.php“
24. Scroll / temukan syntax berikut :
function database( $host=’localhost’, $user, $pass, $db=”, $table_prefix=”, $goOffline=true ) { |
25. Tepat sesudahnya tambahkan syntax berikut :
$db = base64_decode($db); $pass = base64_decode($pass); |
26.
Simpan / save semua perubahan / editing yang telah kita lakukan,
sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi
FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.).
termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda. Silahkan scroll ke bagian Penutup (paling bawah) di artikel ini.
Pengamanan di Joomla versi 1.5.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
- administrator/components/com_admin/tmpl/sysinfo_config.php - administrator/components/com_config/controllers/application.php - administrator/includes/framework.php - libraries/joomla/application/application.php - libraries/joomla/database/database/mysql.php - libraries/joomla/database/database/mysqli.php - plugins/editors/xstandard/attachmentlibrary.php - plugins/editors/xstandard/imagelibrary.php - xmlrpc/includes/framework.php |
2.
Letakkan file-file yang anda download tersebut sesuai dengan
subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda.
samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah
anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak
oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace seperti gambar berikut :
10.
Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat
anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
misalnya : C:\download\joomla
11. Lalu klik tombol
. Jika muncul dialog konfirmasi seperti berikut
Konfirmasi Replace
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php“
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
Nama database & password di file "configuration.php"
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
Paste text nama database
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
hasil klik tombol encrypt
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database.
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
Nama database & password terenkripsi
21. Dari editor Dreamweaver, open / buka file “libraries/joomla/database/database/mysql.php“.
22. Scroll / temukan syntax seperti berikut ini :
// perform a number of fatality checks, then return gracefully if (!function_exists( ‘mysql_connect’ )) { |
23. Tepat sebelumnya, tambahkan syntax berikut ini :
$password = base64_decode($password); $database = base64_decode($database); |
24. Open / buka file “libraries/joomla/database/database/mysqli.php“
25. Scroll / temukan syntax berikut ini :
// Unlike mysql_connect(), mysqli_connect() takes the port and socket |
26. Tepat sebelumnya, tambahkan syntax berikut ini :
$password = base64_decode($password); $database = base64_decode($database); |
27.
Simpan / save semua perubahan / editing yang telah kita lakukan,
sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi
FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.).
termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda. Silahkan scroll ke bagian Penutup (paling bawah) di artikel ini.
Pengamanan di Joomla versi 1.6.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
- administrator/components/com_config/models/application.php - administrator/includes/framework.php - libraries/joomla/database/database/mysql.php - libraries/joomla/database/database/mysqli.php |
2.
Letakkan file-file yang anda download tersebut sesuai dengan
subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda.
samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah
anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak
oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace seperti gambar berikut :
10.
Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat
anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
misalnya : C:\download\joomla
11. Lalu klik tombol
. Jika muncul dialog konfirmasi seperti berikut
Konfirmasi Replace
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php“
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
isi file "includes/myset.php"
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
Paste text nama database
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
hasil klik tombol encrypt
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database.
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
Nama database & password terenkripsi
21. Dari editor Dreamweaver, open / buka file “libraries/joomla/database/database/mysql.php“.
22. Scroll / temukan syntax berikut ini :
// Perform a number of fatality checks, then return gracefully |
23. Tepat sebelumnya tambahkan syntax berikut ini :
$password = base64_decode($password); $database = base64_decode($database); |
24. Open / buka file “libraries/joomla/database/database/mysqli.php“.
25. Scroll / temukan syntax berikut ini :
// Unlike mysql_connect(), mysqli_connect() takes the port and socket |
26. Tepat sebelumnya, tambahkan syntax berikut :
$password = base64_decode($password); $database = base64_decode($database); |
27.
Simpan / save semua perubahan / editing yang telah kita lakukan,
sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi
FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.).
termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda. Silahkan scroll ke bagian Penutup (paling bawah) di artikel ini.
Pengamanan di Joomla versi 1.7.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
- administrator/components/com_admin/models/sysinfo.php - administrator/components/com_config/models/application.php - administrator/includes/framework.php - libraries/joomla/database/database/mysql.php - libraries/joomla/database/database/mysqli.php |
2.
Letakkan file-file yang anda download tersebut sesuai dengan
subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda.
samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah
anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak
oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace seperti gambar berikut :
10.
Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat
anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
misalnya : C:\download\joomla
11. Lalu klik tombol
. Jika muncul dialog konfirmasi seperti berikut
Konfirmasi Replace
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php“
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
Isi file "includes/myset.php"
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
Paste text nama database
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
hasil klik tombol encrypt
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database.
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
Nama database & password terenkripsi
21. Dari editor Dreamweaver, open / buka file “libraries/joomla/database/database/mysql.php“.
23. Scroll / temukan syntax berikut ini :
// Make sure the MySQL extension for PHP is installed and enabled. |
24. Tepat sebelumnya tambahkan syntax berikut ini :
$options['password'] = base64_decode($options['password']); $options['database'] = base64_decode($options['database']); |
25. Open / buka file “libraries/joomla/database/database/mysqli.php“.
26. Scroll / temukan syntax berikut ini :
$options['socket'] = null; |
27. Tepat sesudahnya, tambahkan syntax berikut :
$options['password'] = base64_decode($options['password']); $options['database'] = base64_decode($options['database']); |
28.
Simpan / save semua perubahan / editing yang telah kita lakukan,
sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi
FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.).
termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda.
Penutup
Dengan
pengamanan yang telah kita lakukan, maka tingkat keamanan Joomla site
kita menjadi naik satu level lagi, karena hacker menjadi susah mencari
file konfigurasi joomla dan tidak mudah memecahkan nama database dan
password akses ke database MySQL-nya.
Guna
hasil lebih baik pada bagian enkripsi nama database dan passwordnya,
kita bisa buat fungsi Encrypt / Decrypt buatan kita sendiri yang tidak
mengikuti fungsi enkripsi / dekripsi kepunyaan PHP standard. Sisipkan
fungsinya di dalam file-file :
- includes/database.php - includes/database.mysql5.php - includes/database.mysqli.php - libraries/joomla/database/database/mysql.php - libraries/joomla/database/database/mysqli.php |
Sesuai dengan versi Joomla yang kita gunakan.
0 komentar:
Posting Komentar