Atasi kelemahan file konfigurasi Joomla


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.

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.

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 :

Isi field Find & Replace

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

Folder find setting

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“.

Hasil find & replace

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 :

Isi field Find & Replace

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

Folder find setting

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“.

Hasil find & replace joomla 1.5.X

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 :

Isi field Find & Replace

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

Folder find setting

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“.

hasil find & replace joomla 1.6.x

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 :

Isi field Find & Replace

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

Folder find setting

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.

Semoga Bermanfaat
XNY

10 pemikiran pada “Atasi kelemahan file konfigurasi Joomla

    • Kalo’ error 404 biasanya berhubungan dengan lokasi file / folder yang tidak ditemukan,
      makanya saat melakukan “oprek / core edit”, selalu diperhatikan :
      – penamaan file
      – lokasi file & foldernya, biasanya butuh alamat dalam format URL relative, contoh :
      ../includes/[nama_file].php
      ../.. /includes/[nama_file].php

  1. Salam kenal mas,, salut untuk artikelnya . . .

    Btw, saya lagi punya masalah nich mas. Di localhost, website yg saya buat pake joomla bisa login user maupun admin. Gak ada masalah samasekali. Tapi setelah di hosting, admin dan user tidak bisa login. Hanya bisa melihat website tampa login. Setelah googling sech sepertinya ada masalah dengan folder session. Tapi saya msh blm mengerti. Mohon Bantuannya mas,, Thx b4

    • Kalo’ boleh tahu, anda pakai Joomla versi berapa ??

      perbedaan konfigurasi antara di PC lokal kita dengan di Server Web (Hosting),
      biasanya ada di dalam file “configuration.php”, khususnya yang berkaitan
      dengan lokasi folder / pathnya, seperti :

      $tmp_path
      $log_path
      $mosConfig_absolute_path
      $mosConfig_cachepath

      Antara PC Lokal dengan Server Web (Hosting),
      pastinya isi / nilai variabelnya berbeda, tidak mungkin sama.

      Kalau’ problemnya di Server Web (hosting),
      coba anda cek lagi isi variabel “$tmp_path”.
      Harusnya isinya disesuaikan dengan setting Server Web (hosting) anda.

  2. Tanya bro, saya sudah ikuti panduannya ngubah nama file & alamat configuration.php sebelum upload di web hosting. Semuanya berjalan lancar di localhost. Tapi setelah sy upload ke webhosting, gak bisa jalan. Cs mereka bilang katanya joomlanya harus standar. Apa memang begitu?

    • error yang muncul apa, mas ??
      caranya coba di telusuri satu-satu dahulu :
      a. Lewat Backend Control Panel CMS Joola, disable seluruh komponen / module / plugin yang bukan standard / bawaan Joomla-nya
      b. Lalu coba aktifkan satu-persatu kembali, mulai dari plugin, lalu module, terakhir komponen, sambil dicek kemungkinan tampilan error karena salah satunya.
      Jika errornya karena plugin / module / komponen, tinggal dicek aja isi file .php-nya jika ada yang masih pakai “configuration.php” standard, silahkan diedit.
      NB : ada kemungkinan cache content-nya belum sempat di clear / clean dari Backend Administrator Joomla-nya

  3. Maaf bro, tanya lagi tapi agak di luar topik sih. Error: “‘No configuration file…..” memang sudah beres, tapi sekarang kokwebsite saya tidak bisa muncul skin template-nya plus gambar2. halaman administrator juga jadi blank. Tapi yang bikin saya heran, kok di web server lokal saya tidak ada masalah seperti ini?

Tinggalkan komentar