Як сказати, чи міститься мій сайт Drupal з експлуатації березня SA-CORE-2018-002 - 2018?


9

Щойно випущений експлойт: https://www.drupal.org/sa-core-2018-002 --- Drupal core - високо критичний - віддалене виконання коду - SA-CORE-2018-002

  • Як я можу дізнатися, чи хтось використовував цей подвиг для злому мого сайту?
  • Що вони можуть зробити з цим подвигом, якщо виконано правильно?
  • Я не можу зараз оновити свої сайти Drupal, що є хорошою альтернативою, щоб легко заклеїти цю дірку?

1
Я хотів , щоб зв'язати це на свій пост про останньому великому використовувати в разі , якщо це корисно для тих , хто: drupal.stackexchange.com/questions/133996 / ...
Крістен

2
Це простежується у ваших журналах доступу. Віддалене виконання коду робить це дуже критичним. Будь-який код PHP може бути виконаний !. Нанесіть патчі якнайшвидше - див. Відповідь від
Крістіа

1
To our knowledge the issue is not currently being exploited.шанси у кожного низькі.
Без розмивання

1
Шанси дуже низькі, що це вже було використано до виходу повідомлення про безпеку, але не все так низько, що воно не буде експлуатуватися дуже скоро.
рубін

4
Це банально. Не чекайте, чи не експлуатується він, просто наклейте його.
Кевін

Відповіді:


8

Що могло статися

Під час Drupalgeddon у мене був зламаний персональний сайт Drupal, експлуатування подібної тяжкості (правда, іншого типу). З точки зору "що може статися", у цьому випадку хакер помістив декілька файлів "задньої двері" у мою кодову базу (я дуже мало знав про розробку в той час і не мав сховища Git), з якого він міг би надсилати спам електронною поштою . Домен, що займається, потрапив у чорний список у спам-фільтрах, і це було великим безладом, коли я можу надсилати електронну пошту з цього домену протягом кількох місяців, які я зберігав після цього.

Оскільки ця вразливість дозволяє віддалене виконання коду, зловмисник, ймовірно, може встановлювати модулі для фішинг-атак, виконувати команди в командному рядку за допомогою php exec (), красти паролі і тим самим компрометувати велику частину вашого сервера. Пошкодження може варіюватися від чогось простого, як набирання вашої машини як спам-механізму або ботнет-вузла, або якщо у вас є конфіденційна інформація, зловмисник може її викрасти і або перепродати, або шантажувати вас, залежно від інформації та мотивів зловмисника.

Як сказати, чи вас зламали

Більшу частину часу ваш сайт не буде налаштовано. Коли дві групи 14-річних дітей-скриптів ходять один на одного, ви можете побачити сайт, на якому розміщені зображення Goatse (NSFW), але, якщо хакер має щось проти вас особисто, він цього не збирається робити. Мета для хакера - це гроші або можливість вчиняти злочини за допомогою чужого комп’ютера.

Тепер, маючи на увазі, загальними є те, що створюються нові користувачі (особливо користувачі адміністратора), і в журналах ви можете бачити певний IP, що надсилає лише один тип (ненормальний) запит. У випадку з Drupalgeddon мені вдалося це зрозуміти, побачивши запити POST до файлу php у моєму журналі доступу.

Якщо ви не можете одразу виправити сайт

Якщо ви не можете виправити сайт зараз, я рекомендую вирізати сервер apache / nginx, щоб ніхто не міг потрапити на ваш сайт. Або попросіть сервер спрямувати весь трафік на сторінку HTML, пояснюючи, що ви перебуваєте на технічному обслуговуванні, також "жорсткий режим обслуговування". У всіх випадках ви не хочете, щоб відвідувач міг зніматись під час завантаження Drupal, поки ви не зможете отримати оновлення чи виправлення.

І, думаючи про те, що мій сайт зламався, пам’ятайте, що перші напади Drupalgeddon почалися через 7 годин після виходу, і це було у формі сценарію, який автоматично зламав тисячі сайтів. Рухайтеся швидко!

Якщо вас зламали

Будемо сподіватися, що у вас є резервна копія, і в цьому випадку найкраща ставка - "вивести з орбіти весь сайт" і почати спочатку з нового сервера. Я зробив один раз вручну аудит БД і файлів, тому що у мене не було Git і регулярних резервних копій - це займає дуже багато часу, але якщо це трапиться, зробіть глибокий вдих і вивчіть Git та дізнайтеся, як налаштувати належне резервне середовище. Якщо у вас є бізнес та його клієнтський сайт, розкажіть їм правду наперед. Ви, ймовірно, їх втратите, але краще втратити клієнта (ви можете отримати нових), ніж вашу репутацію.


10

Як я можу дізнатися, чи хтось використовував цей подвиг для злому мого сайту?

Ваш сайт Drupal 7 або 8 може зазнати втрати або крадіжки даних, дані можна видалити, видалити або змінити, спричиняючи хаос на сайті різними способами.

Дивіться цю статтю обміну стеками, щоб отримати загальну інформацію про перевірку, чи перевірили ваш сайт.

Що вони можуть зробити з цим подвигом, якщо виконано правильно?

Експлоатація - це вразливе виконання коду віддаленим виконанням коду, що означає, що будь-які дані можуть зазнати впливу.

Цей подвиг отримав оцінку ризику 21/25, що є майже найвищим показником, який він отримує. Цей показник ризику також визначає такі вразливості, серед інших:

  • AC (складність доступу): легкий (без навичок) доступ та експлуатація
  • A (Автентифікація): спеціальна автентифікація не потрібна
  • Cl (вплив конфіденційності): всі непублічні дані доступні
  • II (Вплив цілісності): Всі дані можуть бути змінені або видалені

Детальніше про оцінку та визначення ризиків читайте тут .

Я не можу зараз оновити свої сайти Drupal, що є хорошою альтернативою, щоб легко заклеїти цю дірку?

Є виправлення, якщо ви не можете оновлювати ядро ​​відразу. З Drupal.org:

Якщо у вас працює 7.x, перейдіть до Drupal 7.58 . (Якщо ви не можете одразу оновити, ви можете спробувати застосувати цей виправлення, щоб виправити вразливість до тих пір, поки ви не зможете повністю оновити.)

Якщо у вас працює 8.5.x, перейдіть до Drupal 8.5.1 . (Якщо ви не можете одразу оновити, ви можете спробувати застосувати цей виправлення, щоб виправити вразливість до тих пір, поки ви не зможете повністю оновити.)

Щоб прочитати більше, тут є поширені запитання про подвиг


2
Я також хотів би додати посилання до цього оголошення про державну службу від 21 березня. Проломи можуть очікувати в протягом декількох годин або днів. Тож оновіть якомога швидше.
Neograph734

Ось посібник Drupal для зламаних сайтів, якщо комусь це потрібно: drupal.org/drupal-security-team/…
Christia

1
Я б сказав, що найкращий спосіб дії - негайно застосувати виправлення, а потім оновити свої веб-сайти до останньої версії. Причина полягає в тому, що, якщо ваш веб-сайт завжди не оновлюється надзвичайно актуальним, цілий цикл оновлень безпеки модуля потребує більше часу, щоб дати належну кількість тестування, а також, ймовірно, потребує більш активного розгортання. Таким чином, найкращим підходом має бути отримання найважливішого виправлення.
рубін

1

Як обклеїти Drupal 7.x вручну проти ядра Drupal - Високо критичний - Віддалене виконання коду - SA-CORE-2018-00

Якщо ви перебуваєте на Drupal 7.x і не можете оновити свій веб-сайт на рівні до 7,58, не знайомі із застосуванням патчів або ви користуєтеся версією Drupal, для якої патч не вдається зробити наступне:

1> Завантажте та витягніть Drupal 7.58.

2> Скопіюйте файл /includes/request-sanitizer.inc з дистрибутива 7,58 у каталог / включає ваш веб-сайт (найпростіше через FTP або менеджер файлів керування панелі хостингу).

3> Відредагуйте версію /includes/bootstrap.inc на своєму веб-сайті в реальному часі (спочатку створюйте резервну копію!). Знайдіть функцію _drupal_bootstrap_configuration (). Додайте наступні 3 рядки після виступу drupal_settings_initialize (); :

// Sanitize unsafe keys from the request.
require_once DRUPAL_ROOT . '/includes/request-sanitizer.inc';
DrupalRequestSanitizer::sanitize();

Зберегти.

Розслабтесь.


0

Ось простий 1-2-3 процес все тут:

  1. Скопіюйте код у буфер обміну звідси https://cgit.drupalcode.org/drupal/rawdiff/?h=7.x&id=2266d2a83db50e2f97682d9a0fb8a18e2722cba5 або як зазначено нижче.
  2. створіть порожній файл під назвою 2018march.patch файл у кореневій папці вашого drupal каталогу.
  3. Вставте код у файл
  4. Виконайте команду в терміналі: patch -p1 <2018march.patch

Якщо у вас немає доступу до SSH або терміналу. Вам потрібно буде це зробити вручну вручну за допомогою рішення @elb користувача.

diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 655db6d..880557e 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -2632,6 +2632,10 @@ function _drupal_bootstrap_configuration() {
   timer_start('page');
   // Initialize the configuration, including variables from settings.php.
   drupal_settings_initialize();
+
+  // Sanitize unsafe keys from the request.
+  require_once DRUPAL_ROOT . '/includes/request-sanitizer.inc';
+  DrupalRequestSanitizer::sanitize();
 }

 /**
diff --git a/includes/request-sanitizer.inc b/includes/request-sanitizer.inc
new file mode 100644
index 0000000..1daa6b5
--- /dev/null
+++ b/includes/request-sanitizer.inc
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains code for sanitizing user input from the request.
+ */
+
+/**
+ * Sanitizes user input from the request.
+ */
+class DrupalRequestSanitizer {
+
+  /**
+   * Tracks whether the request was already sanitized.
+   */
+  protected static $sanitized = FALSE;
+
+  /**
+   * Modifies the request to strip dangerous keys from user input.
+   */
+  public static function sanitize() {
+    if (!self::$sanitized) {
+      $whitelist = variable_get('sanitize_input_whitelist', array());
+      $log_sanitized_keys = variable_get('sanitize_input_logging', FALSE);
+
+      // Process query string parameters.
+      $get_sanitized_keys = array();
+      $_GET = self::stripDangerousValues($_GET, $whitelist, $get_sanitized_keys);
+      if ($log_sanitized_keys && $get_sanitized_keys) {
+        _drupal_trigger_error_with_delayed_logging(format_string('Potentially unsafe keys removed from query string parameters (GET): @keys', array('@keys' => implode(', ', $get_sanitized_keys))), E_USER_NOTICE);
+      }
+
+      // Process request body parameters.
+      $post_sanitized_keys = array();
+      $_POST = self::stripDangerousValues($_POST, $whitelist, $post_sanitized_keys);
+      if ($log_sanitized_keys && $post_sanitized_keys) {
+        _drupal_trigger_error_with_delayed_logging(format_string('Potentially unsafe keys removed from request body parameters (POST): @keys', array('@keys' => implode(', ', $post_sanitized_keys))), E_USER_NOTICE);
+      }
+
+      // Process cookie parameters.
+      $cookie_sanitized_keys = array();
+      $_COOKIE = self::stripDangerousValues($_COOKIE, $whitelist, $cookie_sanitized_keys);
+      if ($log_sanitized_keys && $cookie_sanitized_keys) {
+        _drupal_trigger_error_with_delayed_logging(format_string('Potentially unsafe keys removed from cookie parameters (COOKIE): @keys', array('@keys' => implode(', ', $cookie_sanitized_keys))), E_USER_NOTICE);
+      }
+
+      $request_sanitized_keys = array();
+      $_REQUEST = self::stripDangerousValues($_REQUEST, $whitelist, $request_sanitized_keys);
+
+      self::$sanitized = TRUE;
+    }
+  }
+
+  /**
+   * Strips dangerous keys from the provided input.
+   *
+   * @param mixed $input
+   *   The input to sanitize.
+   * @param string[] $whitelist
+   *   An array of keys to whitelist as safe.
+   * @param string[] $sanitized_keys
+   *   An array of keys that have been removed.
+   *
+   * @return mixed
+   *   The sanitized input.
+   */
+  protected static function stripDangerousValues($input, array $whitelist, array &$sanitized_keys) {
+    if (is_array($input)) {
+      foreach ($input as $key => $value) {
+        if ($key !== '' && $key[0] === '#' && !in_array($key, $whitelist, TRUE)) {
+          unset($input[$key]);
+          $sanitized_keys[] = $key;
+        }
+        else {
+          $input[$key] = self::stripDangerousValues($input[$key], $whitelist, $sanitized_keys);
+        }
+      }
+    }
+    return $input;
+  }
+
+}

Для цього вам потрібно встановити git.
користувач2924019
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.