Сразу опубликую решение проблемы, если уже взломали.

Открываем базу данных сайта через phpMyAdmin. Находим таблицу wp_options. Первая опция — siteurl будет изменена, там будет проставлен линк на другой сайт. Просто меняем адрес на свой. Все, у вас есть доступ к сайту. Не забудьте удалить созданного пользователя!Это можно сделать как средствами WP, также можно удалить через БД. Заходим в таблицу wp_users, удаляем запись с ненужным пользователем. Готово. Кстати, если заменяли префикс wp_ на другой, то у вас будет выглядеть название таблицы несколько иначе.

Недавно один из сайтов, которые я веду, был взломан. Я задался вопросом, где же уязвимость, через которую меня ломанули и сумел найти ответы на зарубежных форумах. Оказалось, что в плагине Easy WP SMTP была обнаружена уязвимость, через которую злоумышленник способен получить доступ к сайту через нее.

Быстрее обновитесь!

На данный момент уязвимость обнаружена в версии плагина 1.3.9, конечно же, сразу же выпустили обновление, которое закрывает сию дыру. Так что рекомендуется немедленно обновить версию плагина, дабы не рисковать сайтом.

На данный момент сайты находятся под массированной атакой злоумышленников. Лично у меня ничего серьезного не произошло. Эксплоит в Easy WP SMTP привел всего лишь к установке редиректа на другой сайт. В базе данных заменил ссылку, зашел на сайт, проверил веб-антивирусами, дополнительно проверил с помощью антивируса, предназначенного специально для проверки сайтов, AI-Bolit. Все в порядке.

Но стоит быть бдительными и закрыть все возможные дыры обновлением. Учтите, спрятанный адрес админки, блокировка IP не особо помогают, несмотря на предпринятые меры защиты, сайт был взломан. Так что, либо избавляться от плагина, либо обновляться.

На всякий случай

Уязвимость была обнаружена на выходных, в эти же выходные и исправлена. У плагина Easy WP SMTP. В случае взлома вас переадресует на сайт https://getmyfreetraffic.com

А также появится новый зарегистрированный пользователь:

  • имя пользователя: devidpentesting99
  • электронная почта: devidpentesting@yandex.ru

Отключенная регистрация пользователей тоже не поможет.

Уязвимость Easy WP SMTP
Он говорит о том, что пришлось восстанавливать сайт из бэкапа, отключенная регистрация не защитила.

Не нужно восстанавливать из бэкапа. Есть вариант проще! Открываем свою БД через phpMyAdmin. Находим таблицу wp_options. Первая опция — siteurl будет изменена. Просто меняем адрес на свой. Все, у вас есть доступ к сайту.

Структура эксплойта

В файле easy-wp-smtp.php есть функция admin_init(), которая запускается через хук, при входе в панель администратора. Применяется для работы с журналом, импорта и экспорта конфигураций плагина и обновления параметров БД. Собственно, код:

add_action( 'admin_init', array( $this, 'admin_init' ) );
...
...
function admin_init() {
  if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
     add_action( 'wp_ajax_swpsmtp_clear_log', array( $this, 'clear_log' ) );
     add_action( 'wp_ajax_swpsmtp_self_destruct', array( $this, 'self_destruct_handler' ) );
  }
  //view log file
  if ( isset( $_GET[ 'swpsmtp_action' ] ) ) {
      if ( $_GET[ 'swpsmtp_action' ] === 'view_log' ) {
    $log_file_name = $this->opts[ 'smtp_settings' ][ 'log_file_name' ];
    if ( ! file_exists( plugin_dir_path( __FILE__ ) . $log_file_name ) ) {
        if ( $this->log( "Easy WP SMTP debug log file\r\n\r\n" ) === false ) {
      wp_die( 'Can\'t write to log file. Check if plugin directory  (' . plugin_dir_path( __FILE__ ) . ') is writeable.' );
        };
    }
    $logfile = fopen( plugin_dir_path( __FILE__ ) . $log_file_name, 'rb' );
    if ( ! $logfile ) {
        wp_die( 'Can\'t open log file.' );
    }
    header( 'Content-Type: text/plain' );
    fpassthru( $logfile );
    die;
      }
  }
  //check if this is export settings request
  $is_export_settings = filter_input( INPUT_POST, 'swpsmtp_export_settings', FILTER_SANITIZE_NUMBER_INT );
  if ( $is_export_settings ) {
      $data           = array();
      $opts           = get_option( 'swpsmtp_options', array() );
      $data[ 'swpsmtp_options' ]     = $opts;
      $swpsmtp_pass_encrypted       = get_option( 'swpsmtp_pass_encrypted', false );
      $data[ 'swpsmtp_pass_encrypted' ]   = $swpsmtp_pass_encrypted;
      if ( $swpsmtp_pass_encrypted ) {
    $swpsmtp_enc_key     = get_option( 'swpsmtp_enc_key', false );
    $data[ 'swpsmtp_enc_key' ]   = $swpsmtp_enc_key;
      }
      $smtp_test_mail       = get_option( 'smtp_test_mail', array() );
      $data[ 'smtp_test_mail' ]   = $smtp_test_mail;
      $out         = array();
      $out[ 'data' ]       = serialize( $data );
      $out[ 'ver' ]       = 1;
      $out[ 'checksum' ]     = md5( $out[ 'data' ] );
      $filename = 'easy_wp_smtp_settings.txt';
      header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
      header( 'Content-Type: text/plain' );
      echo serialize( $out );
      exit;
  }
  $is_import_settings = filter_input( INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT );
  if ( $is_import_settings ) {
     $err_msg = __( 'Error occurred during settings import', 'easy-wp-smtp' );
     if ( empty( $_FILES[ 'swpsmtp_import_settings_file' ] ) ) {
      echo $err_msg;
      wp_die();
    }
    $in_raw = file_get_contents( $_FILES[ 'swpsmtp_import_settings_file' ][ 'tmp_name' ] );
    try {
      $in = unserialize( $in_raw );
      if ( empty( $in[ 'data' ] ) ) {
         echo $err_msg;
         wp_die();
      }
      if ( empty( $in[ 'checksum' ] ) ) {
         echo $err_msg;
         wp_die();
      }
      if ( md5( $in[ 'data' ] ) !== $in[ 'checksum' ] ) {
         echo $err_msg;
         wp_die();
      }
      $data = unserialize( $in[ 'data' ] );
      foreach ( $data as $key => $value ) {
         update_option( $key, $value );
      }
      set_transient( 'easy_wp_smtp_settings_import_success', true, 60 * 60 );
      $url = admin_url() . 'options-general.php?page=swpsmtp_settings';
      wp_safe_redirect( $url );
      exit;
    } catch ( Exception $ex ) {
      echo $err_msg;
      wp_die();
    }
  }
}

Хватит запуска определенного AJAX-запроса для получения доступа к БД и админки, например:

action=swpsmtp_clear_log

Точнее сказать, как сие дело работает, не могу, мало понимаю в данной теме. Но примерно объяснил, каких проблем следует ждать. Всего доброго, защитите свой сайт.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Если материалы с данного сайта были полезны, и вы желаете поддержать блог, то можете воспользоваться формой по ссылке: Донат на поддержку блога