Suryadi Kurniawan Suryadi is a digital content writer at Niagahoster. He keeps on pursuing opportunities to engage with more people through articles about WordPress, Internet Marketing and other IT-related issues. During his free time, he enjoys playing Clash Royale a lot.

Celah Keamanan di Themegrill Demo Importer Plugin WordPress

5 min read

themegrill demo importer plugin

Bagaimana jika semua konten di website Anda tiba-tiba hilang? Anda tentu akan panik dan kecewa, bukan? Sayangnya, hal itu bisa saja terjadi akibat penggunaan plugin WordPress yang tidak aman.

Artikel kami kali ini akan membahas sebuah plugin yang sempat membuat geger pengguna WordPress di seluruh dunia. Plugin bernama ThemeGrill Demo Importer ternyata memiliki celah keamanan yang mengakibatkan konten website terhapus dan mengembalikan website ke pengaturan default.

Celah Keamanan ThemeGrill Demo Importer

Ketika celah keamanan pada Themegrill Demo Importer ditemukan, hampir semua pengguna WordPress pasti terkejut.

Plugin WordPress ThemeGril Demo Importer

Plugin ini memiliki lebih dari 200.000 pengguna aktif dan mendapatkan review sempurna, bintang 5. Singkatnya, plugin ini masuk dalam salah satu plugin WordPress terbaik.

Cara kerja Themegrill Demo Importer ini pun cukup sederhana. Anda bisa melakukan import semua aset demo ke website Anda dengan sekali klik. Jadi, setelah memasang salah satu tema ThemeGrill, Anda tak perlu repot melakukan kustomisasi tampilan dari nol. 

Sayangnya, setelah versi 1.3.4 dan sebelum versi 1.6.1, ada celah keamanan serius. Plugin ini memperbolehkan user yang tidak terautentikasi untuk menghapus semua database dan mengembalikan website WordPress Anda ke pengaturan default. 

Hal ini bisa terjadi karena semua pengguna menjadi administrator secara otomatis. 

Pun tanpa adanya user admin di database, semua data di website masih dapat dihapus dan dikembalikan ke pengaturan default.

Masalah ini sudah ada selama hampir 3 tahun (sejak versi 1.3.4). Karenanya, dampak yang ditimbulkan pasti cukup besar. 

Meskipun belum ada review negatif di direktori WordPress mereka, jumlah pengguna plugin ini langsung anjlok ke angka 100.000 pengguna per 18 Februari 2020. Penurunan pengguna hingga separuhnya terjadi hanya dalam waktu tiga hari.

Jumlah Pengguna Themegrill Demo Importer

Baca juga: Apa Itu Spamhaus Block List dan Mengapa Berbahaya?

Bagaimana Masalah Ini Bisa Terjadi?

Plugin Themegrill Demo Importer memang digunakan berdampingan dengan sebuah tema dari ThemeGrill. 

Jadi, setelah dipasang dan diaktifkan, plugin akan memuat file /includes/class-demo-importer.php yang akan mengarahkan reset_wizard_actions ke admin_init.

Inilah sumber masalahnya. admin_init ternyata tidak hanya berjalan di ranah admin saja, tetapi juga dapat dipanggil oleh /wp-admin/admin-ajax.php yang tidak mengharuskan autentikasi.

Berikut ini adalah script plugin tersebut:

public function reset_wizard_actions() {

  global $wpdb, $current_user;

  if ( ! empty( $_GET['do_reset_wordpress'] ) ) {

   ///

   if ( 'admin' != $current_user->user_login ) {

    $user = get_user_by( 'login', 'admin' );

   }

   if ( empty( $user->user_level ) || $user->user_level < 10 ) {

    $user = $current_user;

   }

   // Drop tables.

   $drop_tables = $wpdb->get_col( sprintf( "SHOW TABLES LIKE '%s%%'", str_replace( '_', '\_', $wpdb->prefix ) ) );

   foreach ( $drop_tables as $table ) {

    $wpdb->query( "DROP TABLE IF EXISTS $table" );

   }

   // Installs the site.

   $result = wp_install( $blogname, $user->user_login, $user->user_email, $blog_public );

   // Updates the user password with a old one.

   $wpdb->update(

    $wpdb->users,

    array(

     'user_pass'           => $user->user_pass,

     'user_activation_key' => '',

    ),

    array( 'ID' => $result['user_id'] )

   );

   // Set up the Password change nag.

   $default_password_nag = get_user_option( 'default_password_nag', $result['user_id'] );

   if ( $default_password_nag ) {

    update_user_option( $result['user_id'], 'default_password_nag', false, true );

   }

   ///

   // Update the cookies.

   wp_clear_auth_cookie();

   wp_set_auth_cookie( $result['user_id'] );

   // Redirect to demo importer page to display reset success notice.

   wp_safe_redirect( admin_url( 'themes.php?page=demo-importer&browse=all&reset=true' ) );

   exit();

  }

 }

Script di atas menunjukkan tidak adanya permintaan autentikasi. Hanya parameter do_reset_wordpress saja yang harus ada pada URL di semua halaman WordPress yang membutuhkan hak admin, termasuk /wp-admin/admin-ajax.php.

Artinya, jika pengguna tidak login, plugin akan mengembalikan user admin dari WordPress. Lalu, menaruh semua tabel WordPress yang dimulai prefix database tertentu. 

Setelah semua tabel data ditaruh, maka WordPress akan memuat database dengan data dan pengaturan default. Setelah itu, password user admin akan dikembalikan ke password yang terakhir digunakan.

Intinya, celah keamanan yang ada adalah siapapun yang login ke website Anda bisa menjadi user admin secara otomatis dan dapat menghapus database serta konten website dengan mudah. 

Hal ini tentu merupakan celah keamanan serius yang tidak seharusnya terjadi.  

Namun, menurut Webarx, selama tidak ada pengguna admin di database, table pengguna akan tetap kosong. Jadi tidak akan mengarahkan pengguna untuk login otomatis.  

Keamanan Website itu Jelas Penting!

Telah banyak waktu dan tenaga yang Anda curahkan untuk membangun website. Mulai dari membuat konten, menata tampilan, promosi, hingga upaya optimasi lain. 

Namun, akibat satu saja celah keamanan yang tidak disadari, website Anda bisa yang menjadi korbannya.

Sayangnya, ada banyak cara yang dilakukan oleh peretas untuk dapat mengganggu keamanan sebuah website. Mulai dari dengan menyebar malware hingga melakukan phising.

Apapun caranya, bisa dipastikan Anda lah yang dirugikan.

Apa yang Perlu Anda Lakukan?

Selalu waspada itu penting. Maka dari itu, Anda perlu terus update informasi mengenai celah keamanan di website. Anda bisa mendapatkan informasi tersebut di WPScan Vulnerabilities Database.

Halaman depan WPScan Vulnerabilities Database

Tidak hanya daftar plugin dan tema apa saja yang sedang bermasalah, website tersebut juga memberikan update celah keamanan mana saja yang telah berhasil diatasi. 

Untuk memudahkan, Anda bisa saja melakukan registrasi ke layanan tersebut. Sebab, Anda bisa mendapatkan update langsung dari email. Tidak hanya pada update harian saja, update instan pada saat bug ditemukan juga bisa Anda terima. 

Selain langkah di atas, inilah beberapa hal preventif yang perlu Anda lakukan untuk menjaga website Anda:

1. Selalu Lakukan Update

WordPress adalah platform dengan tingkat keamanan tinggi dan sering merilis update. Namun, langkah peretas tak pernah berhenti untuk mencari celah.

Oleh karena itu, Anda harus rajin melakukan update WordPress, baik core update, pembaruan tema atau plugin. Anda bisa melakukannya secara otomatis dari menu dashboard atau bisa menggunakan cara update WordPress manual.  

Bagi pengguna Niagahoster, langkah update WordPress dapat dilakukan melalui Member Area dengan lebih mudah.

Pada tab WordPress Management, Anda akan melihat ikon update jika masih menggunakan versi WordPress lawas untuk website Anda. Cukup klik pada ikon tersebut dan lakukan konfirmasi, maka proses upgrade akan berlangsung otomatis.

Untuk lebih lengkapnya, silakan baca panduan berikut.

2. Gunakan Tema dan Plugin Resmi

Banyak tema dan plugin di direktori WordPress yang bisa Anda gunakan secara gratis. 

Akan tetapi, Anda juga bisa menggunakan tema dan plugin dari pihak ketiga. Selama berasal dari pengembang resmi, kualitasnya dapat dipercaya ditambah dengan adanya layanan support.

Namun, tak jarang pengguna WordPress menggunakan tema dan plugin bukan dari website resmi. Bahkan, ada yang nekat memasang nulled theme dan plugin. Hal ini tentu berbahaya karena Anda tidak tahu script apa yang ditanamkan di dalamnya.

3. Jangan Gunakan Username Admin

Teknik peretasan yang paling umum adalah brute-force attack alias tebak-tebak buah manggis. Jika Anda masih menggunakan username “admin”, tak perlu lama untuk mengetahui username WordPress dan meretas website Anda. 

Jadi, mengganti username default adalah hal wajib yang perlu dilakukan. Anda bisa lakukan hal tersebut dengan menginstall plugin ataupun menggunakan phpMyAdmin. Untuk panduan lengkapnya, silakan baca → Cara mengganti username WordPress.

Plugin WordPress Username Changer

Jika menggunakan plugin, pasang dan aktifkan Username Changer. Lalu, masuk ke menu Users -> All Users -> Edit -> Change Username

Jika menggunakan phpMyAdmin, akseslah control panel Hosting Anda. Pilih menu phpMyAdmin -> wp_users. Pilih user Anda, kemudian klik edit untuk melakukan perubahan.

4. Ganti Password secara Berkala

Seperti halnya username, password yang Anda gunakan harus unik. Jangan lagi gunakan 1234, 1998, atau nama Anda. Sebab, mudah ditebak. 

Selain itu, gantilah password Anda secara berkala. Hal ini untuk mencegah orang lain yang terlanjur mengetahui password tersebut menggunakannya untuk hal tidak bertanggung jawab. 

WordPress memudahkan Anda mengubah password melalui menu profile di dashboard WordPress. Cukup melakukan generate password dan mengisikan password yang Anda inginkan, lalu save. Selanjutnya, cukup update profile.

5. Ubah Default Tabel Prefix

Belajar dari apa yang terjadi pada Themegrill Demo Importer, Anda jelas perlu lindungi akses database Anda. Caranya, ubah default tabel prefix database WordPress Anda. 

Seperti Anda tahu, default table prefix adalah wp_. Peretas bisa menggunakan script SQL untuk membobol website. Namun, jika tabel prefix Anda sudah berubah menjadi wp_123_a misalnya, upaya peretasan akan lebih sulit. 

Untuk melakukannya, Anda bisa akses ke File Manager. Lalu, edit file wp-config.php dan simpan perubahan tersebut. Selanjutnya, ubah database default melalui phpMyAdmin. 

6. Aktifkan Firewall

Firewall adalah proteksi keamanan terkait transfer data yang menggunakan jaringan internet. Firewall bertugas mengatur lalu lintas data. Semua data yang aman bisa lewat, data yang mencurigakan akan diblokir.

Mengaktifkan firewall sangat disarankan. Tujuannya, untuk perlindungan data dari peretas, pemblokiran konten tertentu hingga monitoring bandwidth. 

7. Pasang Plugin Keamanan

Perlindungan website WordPress Anda kurang lengkap tanpa adanya plugin security. Tentu harus dipastikan plugin tersebut dari pengembang yang terpercaya seperti Wordfence, SecuPress dan iThemes Security

Plugin Keamanan WordPress SecuPress

Baca juga: 10+ Plugin Security WordPress Terbaik dan Gratis

Alasan penggunaan plugin keamanan adalah memudahkan Anda dalam menemukan ancaman di website Anda dan memblokirnya. Beberapa plugin mampu mendeteksi adanya bug dari plugin dan tema yang Anda gunakan. 

Selain itu, Anda akan mendapatkan rekomendasi keamanan yang belum optimal. Misalnya password yang lemah, URL login default, hingga berapa kali salah login bisa dilakukan. 

Jaga Selalu Website Anda

Keamanan website harus selalu menjadi prioritas dan tak bisa ditawar lagi.  

Kami baru saja mengulas bagaimana celah keamanan sebuah plugin bisa menimbulkan dampak yang cukup besar dan merugikan. Padahal, plugin seharusnya membantu Anda mengelola website dengan lebih mudah.

Pelajaran yang bisa kita petik adalah selalu lakukan yang terbaik untuk melindungi website dan semua aset konten Anda. Selalu gunakan tema dan plugin yang memiliki keamanan tinggi dan periksa performa website secara berkala. 

ebook keamanan website

Niagahoster blog selalu mengupdate tips dan trik untuk menjaga keamanan website WordPress Anda. Rangkumannya bisa Anda baca pada ebook 25 Langkah Ampuh Mengamankan Website yang bisa Anda download secara gratis

Jadi, jaga selalu website Anda dan Stay Secure Online

4
Suryadi Kurniawan Suryadi is a digital content writer at Niagahoster. He keeps on pursuing opportunities to engage with more people through articles about WordPress, Internet Marketing and other IT-related issues. During his free time, he enjoys playing Clash Royale a lot.

Leave a Reply

Your email address will not be published. Required fields are marked *

ten + 12 =

[{"code":""
[{"code":""
"label":"Coba Lagi"
"label":"Coba Lagi"
"win":false}
"win":false}
{"code":"HOSTING50"
{"code":"HOSTING50"
"label":"Extra Diskon 50rb "
"label":"Extra Diskon 50rb "
"win":true}
"win":true}
{"code":"HOSTING20"
{"code":"HOSTING20"
"label":"Extra Diskon 20rb "
"label":"Extra Diskon 20rb "
"win":true}
"win":true}
{"code":"HOSTING100"
{"code":"HOSTING100"
"label":"Extra Diskon 100rb "
"label":"Extra Diskon 100rb "
"win":true}
"win":true}
{"code":""
{"code":""
"label":"Belum Beruntung"
"label":"Belum Beruntung"
"win":false}
"win":false}
{"code":"HOSTING20"
{"code":"HOSTING20"
"label":"Extra Diskon 20rb "
"label":"Extra Diskon 20rb "
"win":true}
"win":true}
{"code":""
{"code":""
"label":"Coba Lagi"
"label":"Coba Lagi"
"win":false}
"win":false}
{"code":"HOSTING50"
{"code":"HOSTING50"
"label":"Extra Diskon 50rb "
"label":"Extra Diskon 50rb "
"win":true}
"win":true}
{"code":"HOSTING20"
{"code":"HOSTING20"
"label":"Extra Diskon 20rb "
"label":"Extra Diskon 20rb "
"win":true}
"win":true}
{"code":"FREESHIPPING"
{"code":"FREESHIPPING"
"label":"Coba Lagi"
"label":"Coba Lagi"
"win":false}
"win":false}
{"code":""
{"code":""
"label":"Sedikit Lagi! "
"label":"Sedikit Lagi! "
"win":false}
"win":false}
{"code":"HOSTING50"
{"code":"HOSTING50"
"label":"Extra Diskon 50rb "
"label":"Extra Diskon 50rb "
"win":true}]
"win":true}]