700.000 Pengguna WordPress Dipengaruhi oleh Kerentanan Zero-Day di Plugin File Manager

Pagi ini, pada 1 September 2020, tim Wordfence Threat Intelligence diberitahu tentang adanya kerentanan yang secara aktif dieksploitasi di File Manager , plugin WordPress dengan lebih dari 700.000 instalasi aktif. Kerentanan ini memungkinkan pengguna yang tidak diautentikasi menjalankan perintah dan mengunggah file berbahaya di situs target.


Sebuah patch dirilis pagi ini pada tanggal 1 September 2020. Kami melihat kerentanan ini dieksploitasi secara aktif di alam liar, oleh karena itu, kami mendorong pengguna untuk memperbarui ke versi terbaru, 6.9, segera karena berisi patch untuk kerentanan ini dan akan terus Anda terlindungi.

Pengguna Wordfence Premium serta mereka yang masih menggunakan versi Gratis dilindungi dari kampanye serangan ini oleh perlindungan unggahan file bawaan firewall Wordfence, meskipun firewall Wordfence perlu dioptimalkan untuk melindungi situs Anda dari kerentanan ini.

Saat menganalisis kerentanan, kami menemukan bahwa perlindungan unggahan file yang ada di dalamnya dapat dilewati, jadi kami menerapkan aturan firewall tambahan untuk cakupan maksimum. Pelanggan Wordfence Premium menerima aturan firewall baru ini hari ini, 1 September 2020, pukul 14.56 UTC. Pengguna Wordfence gratis akan menerima aturan setelah tiga puluh hari pada tanggal 1 Oktober 2020.
Deskripsi:Plugin Terpengaruh Eksekusi Kode Jarak Jauh : File Manager
Plugin Slug: wp-file-manager
Versi Terpengaruh: 6.0-6.8
Nilai CVSS: 10.00 (Kritis)
CVSS Vektor: CVSS: 3.0 / AV: N / AC: L / PR: N / UI: N / S: C / C: H / I: H / A: H
Versi yang Ditambal: 6.9
File Manager adalah plugin yang dirancang untuk membantu administrator WordPress mengelola file di situs mereka. Plugin berisi pustaka tambahan, elFinder, yang merupakan pengelola file sumber terbuka yang dirancang untuk membuat antarmuka manajemen file sederhana dan menyediakan fungsionalitas inti di balik pengelola file. Plugin File Manager menggunakan pustaka ini dengan cara yang menyebabkan kerentanan.

Inti dari masalah ini dimulai dengan pengaya File Manager yang mengganti nama ekstensi pada file perpustakaan elFinder connector.minimal.php.dist menjadi .php sehingga bisa dijalankan secara langsung, meskipun file konektor tidak digunakan oleh File Manager itu sendiri. Pustaka semacam itu sering kali menyertakan file contoh yang tidak dimaksudkan untuk digunakan "sebagaimana adanya" tanpa menambahkan kontrol akses, dan file ini tidak memiliki batasan akses langsung, yang berarti file tersebut dapat diakses oleh siapa saja. File ini dapat digunakan untuk memulai perintah elFinder dan dikaitkan ke elFinderConnector.class.php file tersebut.
149 // run elFinder
150 $connector = new elFinderConnector(new elFinder($opts));
151 $connector->run();
Parameter apa pun yang dikirim dalam permintaan ke connector.minimal.php akan diproses oleh run() fungsi di elFinderConnector.class.php file, termasuk perintah yang disediakan di cmd parameter.


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public function run()
 {
     $isPost = $this->reqMethod === 'POST';
     $src = $isPost ? array_merge($_GET, $_POST) : $_GET;
     $maxInputVars = (!$src || isset($src['targets'])) ? ini_get('max_input_vars') : null;
     if ((!$src || $maxInputVars) && $rawPostData = file_get_contents('php://input')) {
         // for max_input_vars and supports IE XDomainRequest()
         $parts = explode('&', $rawPostData);
         if (!$src || $maxInputVars < count($parts)) {
             $src = array();
             foreach ($parts as $part) {
                 list($key, $value) = array_pad(explode('=', $part), 2, '');
                 $key = rawurldecode($key);
                 if (preg_match('/^(.+?)\[([^\[\]]*)\]$/', $key, $m)) {
                     $key = $m[1];
                     $idx = $m[2];
                     if (!isset($src[$key])) {
                         $src[$key] = array();
                     }
                     if ($idx) {
                         $src[$key][$idx] = rawurldecode($value);
                     } else {
                         $src[$key][] = rawurldecode($value);
                     }
                 } else {
                     $src[$key] = rawurldecode($value);
                 }
             }
             $_POST = $this->input_filter($src);
             $_REQUEST = $this->input_filter(array_merge_recursive($src, $_REQUEST));
         }
     }
     if (isset($src['targets']) && $this->elFinder->maxTargets && count($src['targets']) > $this->elFinder->maxTargets) {
         $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_MAX_TARGTES)));
     }
     $cmd = isset($src['cmd']) ? $src['cmd'] : '';
     $args = array();


Daftar perintah yang tersedia di elFinder adalah sebagai berikut.
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/**
  * Commands and required arguments list
  *
  * @var array
  **/
 protected $commands = array(
     'abort' => array('id' => true),
     'archive' => array('targets' => true, 'type' => true, 'mimes' => false, 'name' => false),
     'callback' => array('node' => true, 'json' => false, 'bind' => false, 'done' => false),
     'chmod' => array('targets' => true, 'mode' => true),
     'dim' => array('target' => true, 'substitute' => false),
     'duplicate' => array('targets' => true, 'suffix' => false),
     'editor' => array('name' => true, 'method' => true, 'args' => false),
     'extract' => array('target' => true, 'mimes' => false, 'makedir' => false),
     'file' => array('target' => true, 'download' => false, 'cpath' => false, 'onetime' => false),
     'get' => array('target' => true, 'conv' => false),
     'info' => array('targets' => true, 'compare' => false),
     'ls' => array('target' => true, 'mimes' => false, 'intersect' => false),
     'mkdir' => array('target' => true, 'name' => false, 'dirs' => false),
     'mkfile' => array('target' => true, 'name' => true, 'mimes' => false),
     'netmount' => array('protocol' => true, 'host' => true, 'path' => false, 'port' => false, 'user' => false, 'pass' => false, 'alias' => false, 'options' => false),
     'open' => array('target' => false, 'tree' => false, 'init' => false, 'mimes' => false, 'compare' => false),
     'parents' => array('target' => true, 'until' => false),
     'paste' => array('dst' => true, 'targets' => true, 'cut' => false, 'mimes' => false, 'renames' => false, 'hashes' => false, 'suffix' => false),
     'put' => array('target' => true, 'content' => '', 'mimes' => false, 'encoding' => false),
     'rename' => array('target' => true, 'name' => true, 'mimes' => false, 'targets' => false, 'q' => false),
     'resize' => array('target' => true, 'width' => false, 'height' => false, 'mode' => false, 'x' => false, 'y' => false, 'degree' => false, 'quality' => false, 'bg' => false),
     'rm' => array('targets' => true),
     'search' => array('q' => true, 'mimes' => false, 'target' => false, 'type' => false),
     'size' => array('targets' => true),
     'subdirs' => array('targets' => true),
     'tmb' => array('targets' => true),
     'tree' => array('target' => true),
     'upload' => array('target' => true, 'FILES' => true, 'mimes' => false, 'html' => false, 'upload' => false, 'name' => false, 'upload_path' => false, 'chunk' => false, 'cid' => false, 'node' => false, 'renames' => false, 'hashes' => false, 'suffix' => false, 'mtime' => false, 'overwrite' => false, 'contentSaveId' => false),
     'url' => array('target' => true, 'options' => false),
     'zipdl' => array('targets' => true, 'download' => false)
 );

Kabar baiknya adalah elFinder memiliki perlindungan bawaan terhadap traversal direktori, sehingga penyerang tidak dapat menggunakan perintah ini pada file mana pun di luar plugins/wp-file-manager/lib/files/ direktori.

Serangan yang kita lihat di alam liar menggunakan upload perintah untuk mengupload file PHP yang berisi webshell yang disembunyikan dalam gambar ke wp-content/plugins/wp-file-manager/lib/files/ direktori.

Untungnya, Wordfence Premium dan pengguna gratis telah dilindungi dari kampanye yang menargetkan kerentanan ini. Namun, untuk perlindungan optimal kami membuat aturan firewall tambahan.

Mengapa Kami Membuat Aturan Firewall Tambahan

Meskipun perlindungan bawaan firewall kami mencegah pengunggahan file langsung, kami memutuskan bahwa mengirim permintaan yang dibuat secara khusus dapat dilakukan yang akan membuat file PHP kosong dengan menggunakan mkfile perintah dalam cmd parameter. Penyerang kemudian dapat mengirim permintaan terpisah untuk menyimpan kode berbahaya ke file itu dengan mengirim permintaan dengan cmd parameter disetel ke put. Selain itu, bypass lain mungkin saja dilakukan, jadi kami membuat aturan firewall untuk sepenuhnya memblokir setiap dan semua akses ke connector.minimal.php file.

Plugin File Manager memperbaiki masalah dengan menghapus lib/php/connector.minimal.php file dari plugin secara keseluruhan, dan menghapus file ini secara manual juga akan mencegah penyerang mengeksploitasi kerentanan ini tanpa memengaruhi fungsionalitas normal. Jalan pintas ini belum ditargetkan di alam liar.

Catatan Kecil Dari Tim di Wordfence
Saat menggunakan plugin utilitas seperti plugin pengelola file ini, kami sarankan untuk berhati-hati. Plugin seperti ini berisi beberapa fitur yang jika terbuka di dalam area admin instalasi WordPress Anda, dapat menyebabkan masalah serius.

Plugin pengelola file seperti ini akan memungkinkan penyerang untuk memanipulasi atau mengunggah file apa pun yang mereka pilih langsung dari dasbor WordPress, berpotensi memungkinkan mereka untuk meningkatkan hak istimewa sekali di area admin situs. Misalnya, penyerang dapat memperoleh akses ke area admin situs menggunakan sandi yang disusupi, kemudian mengakses plugin ini dan mengunggah webshell untuk melakukan pencacahan lebih lanjut dari server dan berpotensi meningkatkan serangan mereka menggunakan exploit lain.

Untuk alasan ini, kami merekomendasikan untuk menghapus plugin utilitas, seperti plugin manajemen file, saat tidak digunakan, sehingga mereka tidak membuat vektor intrusi yang mudah bagi penyerang untuk meningkatkan hak istimewanya.

Indikator Kompromi
Firewall Wordfence telah memblokir lebih dari 450.000 upaya eksploitasi yang menargetkan kerentanan ini selama beberapa hari terakhir. Kami melihat penyerang mencoba memasukkan file acak, yang semuanya dimulai dengan kata "hard" atau "x". Dari data serangan firewall kami, tampaknya penyerang sedang menyelidiki kerentanan dengan file kosong dan jika berhasil, mungkin mencoba memasukkan file berbahaya.

Berikut adalah daftar dari beberapa file yang kami lihat diunggah:
  • hardfork.php
  • hardfind.php
  • x.php
Silakan cari file-file ini di /wp-content/plugins/wp-file-manager/lib/files direktori situs Anda.

6 alamat IP penyerang teratas yang kami lihat adalah sebagai berikut.
  • 185.222.57.183
  • 185.81.157.132
  • 185.81.157.112
  • 185.222.57.93
  • 185.81.157.177
  • 185.81.157.133
Harap cari Alamat IP yang melanggar ini di file log situs Anda.

Source: wordfence.com
Disclaimer: Images, articles or videos that exist on the web sometimes come from various sources of other media. Copyright is fully owned by the source. If there is a problem with this matter, you can contact here.

0 Response to "700.000 Pengguna WordPress Dipengaruhi oleh Kerentanan Zero-Day di Plugin File Manager"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel

Loading...