कैसे बताएं कि क्या मेरी ड्रुपल साइट 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 कोड निष्पादित किया जा सकता है! पैच asap लागू करें - क्रिस्टिया से जवाब देखें
rémy

1
To our knowledge the issue is not currently being exploited.संभावनाएं कम हैं।
कोई Sssweat

1
संभावना बहुत कम है कि पहले से ही इसका उपयोग सुरक्षा नोटिस जारी करने से पहले किया गया है, लेकिन यह सब कम नहीं है कि यह बहुत जल्द शोषण नहीं होगा।
rooby

4
यह तुच्छ है। यह देखने के लिए इंतजार न करें कि क्या यह शोषण है, बस इसे पैच करें।
केविन

जवाबों:


8

क्या हो सकता है

मेरे पास एक निजी ड्रुपल साइट थी जिसे ड्रुपाल्डडन के दौरान हैक किया गया था, इसी तरह की गंभीरता (हालांकि एक अलग प्रकार का) का शोषण। "क्या हो सकता है" के संदर्भ में, उस स्थिति में हैकर ने कई "बैक डोर" फाइलें मेरे कोडबेस में डाल दीं (मैं उस समय विकास के बारे में बहुत कम जानता था, और कोई गैट भंडार नहीं था), जिससे वह स्पैम ईमेल भेज सके। । शामिल डोमेन को स्पैम फ़िल्टर में ब्लैकलिस्ट किया गया था, और यह उस डोमेन से ईमेल भेजने में सक्षम होने के लिए कई महीनों तक एक बड़ी गड़बड़ी थी जिसे मैंने बाद में रखा था।

चूंकि यह भेद्यता दूरस्थ कोड निष्पादन की अनुमति देती है, हमलावर संभवतः फ़िशिंग हमलों को करने के लिए मॉड्यूल स्थापित कर सकता है, कमांड लाइन पर कमांडों को php निष्पादन () के साथ ले जाता है, पासवर्ड चुराता है, और इस तरह आपके सर्वर से बहुत समझौता करता है। नुकसान कुछ हद तक हो सकता है क्योंकि आपकी मशीन स्पैम इंजन या बॉटनेट नोड के रूप में भर्ती की जा रही है, या यदि आपके पास संवेदनशील जानकारी है, तो हमलावर इसे चुरा सकता है और या तो इसे फिर से बेचना या आपको ब्लैकमेल कर सकता है, जो जानकारी और हमलावर के उद्देश्यों पर निर्भर करता है।

अगर आपको हैक किया गया है तो कैसे बताएं

अधिकांश समय, आपकी साइट को ख़राब नहीं किया जाएगा। जब 14 साल की स्क्रिप्ट किडिज़ के दो समूह एक-दूसरे के पास जाते हैं, तो आप एक साइट को Goatse इमेजेस (NSFW) के साथ डिफाइंड कर सकते हैं, लेकिन जब तक हैकर के पास आपके खिलाफ कुछ न हो जाए, वह व्यक्तिगत रूप से ऐसा करने वाला नहीं है। हैकर के लिए लक्ष्य या तो पैसा है या किसी और के कंप्यूटर के साथ अपराध करने की क्षमता है।

अब उस बात को ध्यान में रखते हुए, आपके द्वारा देखी जाने वाली सामान्य चीजें नए उपयोगकर्ता (विशेष रूप से व्यवस्थापक उपयोगकर्ता) बनाई जा रही हैं, और लॉग में आप एक विशेष आईपी को केवल एक प्रकार का (असामान्य) अनुरोध भेजते हुए देख सकते हैं। Drupalgeddon मामले में, मैं अपने एक्सेस लॉग में एक php फ़ाइल के लिए POST अनुरोधों को देखकर यह पता लगाने में सक्षम था।

यदि आप अपनी साइट को तुरंत पैच नहीं कर सकते हैं

यदि आप अब साइट को पैच नहीं कर सकते हैं, तो मैं Apache / nginx सर्वर को काटने की सलाह दूंगा ताकि कोई भी आपकी साइट पर न आ सके। या, सर्वर को एक HTML पृष्ठ पर सभी ट्रैफ़िक को निर्देशित करने के लिए समझाएं कि आप रखरखाव के लिए नीचे हैं, उर्फ ​​"हार्ड रखरखाव मोड।" सभी मामलों में, आप बूटस्ट्रैपिंग ड्रुपल पर किसी भी शॉट को रखने की अनुमति नहीं देना चाहते हैं, जब तक कि आप एक अपग्रेड या पैच प्राप्त नहीं कर सकते।

और मेरी साइट को हैक करने के बारे में सोचते हुए, याद रखें कि रिलीज़ होने के 7 घंटे बाद पहले Drupalgeddon हमले शुरू हुए , और यह एक स्क्रिप्ट के रूप में था जिसने हजारों साइटों को ऑटो-हैक किया था। जल्दी चलो!

अगर आपको हैक किया जाता है

उम्मीद है कि आपके पास एक बैकअप होगा, जिसमें सबसे अच्छी शर्त "ऑर्बिट से पूरी साइट को न्यूड" करना है और एक नए सर्वर के साथ शुरू करना है। मैंने एक मैनुअल DB किया और एक बार ऑडिट किया क्योंकि मेरे पास जगह में Git और नियमित बैकअप नहीं था - इसमें बहुत लंबा समय लगता है , लेकिन अगर ऐसा होता है, तो एक गहरी सांस लें, और Git सीखें और सीखें कि कैसे एक सेट अप करें उचित बैकअप वातावरण। यदि आपके पास एक व्यवसाय और इसकी ग्राहक साइट है, तो उन्हें सच्चाई सामने बताएं। आप शायद उन्हें खो देंगे, लेकिन अपनी प्रतिष्ठा की तुलना में ग्राहक को खोने के लिए बेहतर (आप नए प्राप्त कर सकते हैं)।


10

मैं कैसे बता सकता हूं कि किसी ने मेरी साइट को हैक करने के लिए इस शोषण का इस्तेमाल किया है?

आपका Drupal 7 या 8 साइट डेटा की हानि या चोरी का अनुभव कर सकती है, डेटा को कई अलग-अलग तरीकों से साइट पर कहर बरपाते हुए, हटाया या बदला जा सकता है।

यह देखने के लिए कि आपकी वेबसाइट हैक हो गई है या नहीं, इसकी सामान्य जानकारी के लिए स्टैक एक्सचेंज पोस्ट देखें।

अगर वे सही तरीके से निष्पादित होते हैं तो वे इस शोषण का क्या कर सकते हैं?

शोषण एक दूरस्थ कोड निष्पादन भेद्यता है, जिसका अर्थ है कि किसी भी डेटा के प्रभावित होने की संभावना है।

इस कारनामे को 21/25 का जोखिम अंक दिया गया है, जो इसे प्राप्त होने वाला लगभग उच्चतम है। यह जोखिम स्कोर अन्य लोगों में भी निम्न कमजोरियों को परिभाषित करता है:

  • एसी (एक्सेस जटिलता): उपयोग और शोषण करने के लिए आसान (कोई कौशल नहीं)
  • A (प्रमाणीकरण): किसी विशेष प्रमाणीकरण की आवश्यकता नहीं है
  • Cl (गोपनीयता प्रभाव): सभी गैर-सार्वजनिक डेटा सुलभ है
  • II (अखंडता प्रभाव): सभी डेटा को संशोधित या हटाया जा सकता है

रिस्क स्कोरिंग और परिभाषाओं के बारे में यहाँ और पढ़ें

मैं अब अपने Drupal साइट्स को अपडेट नहीं कर सकता, इस छेद को आसानी से पैच करने के लिए एक अच्छा विकल्प क्या है?

यदि आप कोर को तुरंत अपडेट करने में असमर्थ हैं तो एक पैच उपलब्ध है। Drupal.org से:

यदि आप 7.x चला रहे हैं, तो Drupal 7.58 में अपग्रेड करें । (यदि आप तुरंत अपडेट करने में असमर्थ हैं, तो आप इस पैच को भेद्यता को ठीक करने के लिए लागू करने का प्रयास कर सकते हैं जब तक कि आप पूरी तरह से अपडेट करने में सक्षम नहीं हो जाते।)

यदि आप 8.5.x चला रहे हैं, तो Drupal 8.5.1 में अपग्रेड करें । (यदि आप तुरंत अपडेट करने में असमर्थ हैं, तो आप इस पैच को भेद्यता को ठीक करने के लिए लागू करने का प्रयास कर सकते हैं जब तक कि आप पूरी तरह से अपडेट करने में सक्षम नहीं हो जाते।)

अधिक पढ़ने के लिए, यहाँ शोषण के बारे में एक FAQ है


2
मैं 21 मार्च की इस सार्वजनिक सेवा घोषणा की एक कड़ी जोड़ना चाहूंगा । शोषण की उम्मीद घंटों या दिनों के भीतर की जा सकती है। इसलिए ASAP को अपडेट करें।
२०:४० पर नेओगोर ३४

यहाँ हैक की गई साइटों के लिए Drupal गाइड है, अगर किसी को इसकी आवश्यकता है: drupal.org/drupal-security-team/…
क्रिस्टिया

1
मैं कहूंगा कि कार्रवाई का सबसे अच्छा तरीका पैच को तुरंत लागू करना है, फिर अपनी साइटों को नवीनतम संस्करण में अपडेट करें। इसका कारण यह है कि, जब तक आपकी साइट को हमेशा अद्यतित नहीं रखा जाता है, तब तक मॉड्यूल सुरक्षा अद्यतनों का एक दौर परीक्षण की उचित मात्रा देने के लिए अधिक समय लेने वाला है और संभावित रूप से इसमें अधिक तैनाती की आवश्यकता होती है। इसलिए जितनी जल्दी हो सके सबसे महत्वपूर्ण फिक्स आउट करना पसंदीदा दृष्टिकोण होना चाहिए।
रौबी

1

Drupal कोर के खिलाफ हाथ से Drupal 7.x को कैसे पैच करें - अत्यधिक महत्वपूर्ण - रिमोट कोड निष्पादन - SA-CORE-2018-00

यदि आप Drupal 7.x पर हैं और अपनी लाइव साइट को 7.58 में अपडेट करने में असमर्थ हैं, तो पैच लगाने से परिचित नहीं हैं, या एक Drupal संस्करण पर हैं, जिसके लिए पैच निम्न कार्य नहीं करता है:

1> Drupal 7.58 डाउनलोड करें और निकालें।

2> अपनी वेबसाइट के / / निर्देशिका (FTP या अपने होस्टिंग नियंत्रण कक्ष फ़ाइल प्रबंधक के माध्यम से सबसे आसान) / में शामिल 7.58 वितरण से /includes/request-sanitizer.inc फ़ाइल की प्रतिलिपि बनाएँ।

3> अपनी लाइव वेबसाइट (पहले बैकअप!) पर /includes/bootstrap.inc का संस्करण संपादित करें। फ़ंक्शन का पता लगाएं _drupal_bootstrap_configuration ()। विवरण drupal_settings_initialize () के बाद निम्नलिखित 3 पंक्तियों को जोड़ें; :

// 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=2266d2a83db50e2f97682d9a0fb8h18e2722cba5 या नीचे बताए अनुसार।
  2. अपने ड्रुपल डायरेक्टरी के रूट फोल्डर में 2018march.patch फाइल नामक एक खाली फाइल बनाएं।
  3. फ़ाइल में कोड पेस्ट करें
  4. टर्मिनल में कमांड चलाएँ: पैच -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 इंस्टॉल करना होगा।
user2924019
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.