Computer >> कंप्यूटर ट्यूटोरियल >  >> नेटवर्किंग >> नेटवर्क सुरक्षा

Magento कार्ड स्किमिंग समझाया गया: आपके ऑनलाइन स्टोर के लिए रोकथाम और सुरक्षा

Magento कार्ड स्किमिंग, 'स्किमर्स' नामक दुर्भावनापूर्ण स्क्रिप्ट्स को Magento वेबसाइट पर इंजेक्ट करके क्रेडिट/डेबिट जानकारी को अवैध रूप से चुराने का अभ्यास है। यदि आप Magento-संचालित वेबसाइट के मालिक हैं तो यह लेख आपके लिए है। यहां, हम आपके लिए लाए हैं Magento कार्ड स्किमिंग सुरक्षा मुद्दे के आसपास घूमने वाले सभी आवश्यक विवरणों के साथ एक अच्छा संसाधन।

इस लेख में, हम चर्चा करेंगे कि Magento कार्ड स्किमिंग क्या है और यह Magento वेबसाइटों को कैसे प्रभावित करता है (अवधारणा के प्रमाण के साथ)। इसके अलावा, हम आपकी वेबसाइट को इस मुद्दे से प्रतिरक्षित करने के कुछ कार्यशील सुझाव सीखेंगे। तो, चलिए सीधे अंदर कूदते हैं।

संबंधित लेख – Magento स्टोर पर Magecart हमले क्या हैं और उन्हें कैसे रोकें

Magento कार्ड स्किमिंग क्या है?

Magento एक PHP-आधारित ओपन-सोर्स ई-कॉमर्स प्लेटफॉर्म है। यह वर्तमान में Adobe के स्वामित्व वाला एक सेल्फ-होस्टेड कंटेंट मैनेजमेंट सिस्टम है। लगभग 250,000+ वेबसाइटें अपनी ई-कॉमर्स वेबसाइट को शक्ति प्रदान करने के लिए Magento का उपयोग करती हैं। इनमें से अधिकांश वेबसाइटें यूएस-आधारित ई-कॉमर्स दिग्गजों की हैं। इस प्रकार, Magento पर ग्राहक अनुभव को सुरक्षित करने की भारी जिम्मेदारी है।

दूसरी ओर, कार्ड स्किमिंग, भौतिक कार्ड स्किमिंग डिवाइस द्वारा क्रेडिट कार्ड और डेबिट कार्ड से जानकारी को अवैध रूप से कॉपी करने का अभ्यास है। यहां बताया गया है कि Magento और कार्ड स्किमिंग एक दूसरे से कैसे जुड़े।

Magento कार्ड स्किमिंग वेब स्किमिंग का एक रूप है जिसमें हैकर्स थर्ड-पार्टी स्क्रिप्ट के माध्यम से Magento पर भुगतान जानकारी चुराते हैं। यह स्क्रिप्ट उन्हें मालिक का नाम, क्रेडिट कार्ड/डेबिट कार्ड नंबर, CVV नंबर और समाप्ति तिथि जैसी महत्वपूर्ण बैंकिंग जानकारी चुराने में सक्षम बनाती है। हैकर्स आमतौर पर इस जानकारी को ब्लैक मार्केट में बेचकर मुद्रीकृत करते हैं।

PRODSECBUG-2198 एक्सप्लॉइट के बारे में

PRODSECBUG-2198 मुद्दे की सूचना पहली बार 9 नवंबर 2018 को Bugcrowd पर दी गई थी। मूल रूप से, PRODSECBUG-2198 एक कमजोर कोड है जो Magento में SQL इंजेक्शन की अनुमति देता है। यह भेद्यता एक अनधिकृत उपयोगकर्ता को मनमाना कोड निष्पादित करने की अनुमति देती है जिससे संवेदनशील जानकारी का रिसाव हो सकता है।

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

  • Magento Commerce < 1.14.4.1
  • Magento Open Source < 1.9.4.1
  • Magento < 2.1.17
  • Magento < 2.2.8
  • Magento < 2.3.1

Google के नाम से स्किमर

Magento स्किमिंग के एक बहुत हालिया मामले में, हमने हैकर्स को भुगतान विवरण चुराने के लिए एक नकली Google डोमेन का उपयोग करते देखा। इस हमले में, दुर्भावनापूर्ण जावास्क्रिप्ट को google-analytîcs.com या xn--google-analytcs-xpb.com नामक डोमेन से लोड किया जा रहा था।

यदि आप ध्यान से देखेंगे, तो यह मूल Google डोमेन पर एक नाम का खेल है। इस प्रकार, यह स्किमिंग हमला संवेदनशील भुगतान जानकारी प्राप्त करने के लिए फ़िशिंग को एक विधि के रूप में उपयोग करता है। स्क्रिप्ट कुछ इस तरह दिखती है –

<script type="text/javascript" src="//google-analytîcs.com/www.[redacted].com/3f5cf4657d5d9.js"></script>

आगे, यह स्किमर लोडेड जावास्क्रिप्ट्स और document.getElementsByTagName के उपयोग से डेटा कैप्चर करता है। यदि कोई डेवलपर टूल्स खुले नहीं हैं, तो यह स्किमर चुराए गए डेटा को नकली Google डोमेन – google-analytîcs.com या xn--google-analytcs-xpb.com पर भेजता है।

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

Magento कार्ड स्किमिंग: अवधारणा का प्रमाण

इस सुरक्षा भेद्यता के बारे में अवधारणा का प्रमाण निम्नानुसार उल्लिखित है। यह पायथन में लिखा गया है और मुख्य चीज जो Magento कार्ड स्किमिंग मुद्दे का कारण बनती है।

  • यह कोड मूल रूप से कुछ रैंडम URL और सत्र डेटा के साथ एक डमी ब्राउज़र सत्र बनाता है। यह ब्राउज़र क्लास और सत्र प्राप्त करने वाले फ़ंक्शन का उपयोग करके किया जाता है।
  • सत्र विवरण के साथ ब्राउज़र क्लास का एक ऑब्जेक्ट SQL इंजेक्शन क्लास को पास किया जाता है।
  • SQL इंजेक्शन अब सत्र URL में कुछ पेलोड डेटा जोड़ता है, एक उत्पाद बनाता है और फिर वेबसाइट के डेटाबेस से महत्वपूर्ण विवरण प्राप्त करता है। SQL इंजेक्शन पेलोड को बैकएंड डेटा तक विशेषाधिकार प्राप्त पहुंच प्राप्त करने के लिए भी संशोधित किया जा सकता है।
  • हमलावर को उपयोगकर्ता के हाल के लेनदेन और बैंकिंग जानकारी के बारे में जानकारी प्राप्त होती है।

एक्सप्लॉइट आपके Magento वेबसाइट को कैसे संक्रमित करता है?

Magento में लगभग 2 मिलियन PHP लाइनों का एक विशाल कोडबेस है। इससे एक्सप्लॉइट का ऑडिट करना और खोजना एक बोझिल कार्य बन जाता है। हालांकि, जब हमारी एथिकल हैकर्स की टीम ने कोड की जांच की, तो उन्होंने ORM और DB प्रबंधन के लिए जिम्मेदार कोड पर अपने लक्ष्यों को सीमित कर दिया।

वे क्षेत्र जहां Magento कार्ड स्किमिंग के बग मौजूद थे:

1. prepareSQLCondition फ़ंक्शन में

यह पब्लिक फ़ंक्शन डेटाबेस को संभालने वाली मुख्य क्लासेस में से एक में समाहित है और इसे यहां स्थित किया जा सकता है

MagentoFrameworkDBAdapterPdoMysql

फ़ंक्शन कोड इस प्रकार है:

एक्सप्लॉइट को समझना

आइए अब चिह्नित लाइनों पर अपना ध्यान केंद्रित करके एक्सप्लॉइट के कामकाज को समझते हैं। लाइन [1] में चिह्नित, एक कंडीशन एलियास को $conditionKeyMap का उपयोग करके एक पैटर्न से जोड़ा जाता है। यह दिए गए मान के उद्धृत संस्करण का उपयोग करके _prepareQuotedSqlCondition() फ़ंक्शन में लाइन नंबर 33 के आधार पर एलियास के अंदर हर '?' वर्ण को प्रतिस्थापित करता है जो लाइनों 30-35 में लिखे तर्क पर आधारित है। अब निम्नलिखित कोड उदाहरण पर विचार करें:

<?php $db->prepareSqlCondition('username', ['regexp' => 'my_value']); => $conditionKeyMap['regexp'] = "{{fieldName}} REGEXP ?"; => $query = "username REGEXP 'my_value'";

अब एक समस्या तब उत्पन्न होती है जब "from" और "to" कंडीशन का उपयोग लाइन नंबर 30 में संयोजन में किया जाता है। उस कोड में तर्क यह सुनिश्चित करता है कि एक फ़ील्ड एक रेंज के भीतर समाहित है। बेहतर समझ के लिए, आइए इस कोड स्निपेट को देखें:

<?php $db->prepareSqlCondition('price', [ 'from' => '100' 'to' => '1000' ]); $query = "price >= '100' AND price <= '1000'";

निष्पादन तर्क के अनुसार, जब भी दोनों कंडीशन मौजूद होती हैं, पहले "from" को संभाला जाता है और फिर "to" को संभाला जाता है। लेकिन लाइन नंबर 38 पर एक महत्वपूर्ण गलती की जाती है। "from" द्वारा उत्पन्न क्वेरी का उपयोग आगे फॉर्मेटिंग के लिए किया जाता है।

अब चूंकि हर "?" को दिए गए मान द्वारा प्रतिस्थापित किया जाएगा, यदि "from" के मान में एक प्रश्न चिह्न होता है, तो इसे "to" को सौंपे गए मान के उद्धृत संस्करण द्वारा प्रतिस्थापित किया जाएगा। एक वैध SQL इंजेक्शन हमला करने के लिए, हमलावर निम्नलिखित एक्सप्लॉइट कोड तैनात कर सकता है:

<?php $db->prepareSqlCondition('price',[ 'from' => 'x?' 'to' => ' OR 1=1 -- -' ]); -> $query = "price >= 'x' OR 1=1 -- -'' AND price <= ' OR 1=1 -- -'"

गलती, मामूली पैमाने की होने के बावजूद, बहुत प्रभावशाली साबित हो सकती है। आश्चर्यजनक तथ्य यह है कि कोड का यह टुकड़ा Magento संस्करण 1.x से मौजूद है।

2. Synchronize क्लास के execute फ़ंक्शन में

एक और भेद्यता निम्न स्थान पर execute फ़ंक्शन में पाई गई:

MagentoCatalogControllerProductFrontendActionSynchronize

PHP सोर्स कोड जहां सुरक्षा मुद्दा सामने आया था वह इस प्रकार है:

<?php public function execute() { $resultJson = $this->jsonFactory->create(); try { $productsData = $this->getRequest()->getParam('ids',[]); $typeId = $this->getRequest()->getParam('type_id',null); $this->synchronizer->syncActions($productsData, $typeId); } catch (Exception $e) { $resultsJson->setStatusHeader( ZendHttpResponse::STATUS_CODE_400, ZendHttpAbstractMessage::VERSION_11, 'Bad Request' ); } return $resultsJson->setData([]);

कॉल स्टैक जो अंततः बग की ओर ले जाता है:

<?php $productsData = $this->getRequest()->getParam('ids', []); $this->synchronizer->syncActions($productsData, $typeId);   $collection->addFieldToFilter('product_id', $this->getProductIdsByActions($productsData));   $this->_translateCondition($field, $condition);   $this->_getConditionSql($this->getConnection()->quoteIdentifier($field), $condition);   $this->getConnection()->prepareSqlCondition($fieldName, $condition);  

कमजोर कोड का यह टुकड़ा Magento के v2.2.0 से मौजूद है। एक नमूना URL जो Magento कार्ड स्किमिंग से जुड़े इस अनधिकृत ब्लाइंड SQL इंजेक्शन का कारण बन सकता है वह इस प्रकार है:

https://magento2website.com/catalog/product_frontend_action/synchronize?   type_id=recently_products&   ids[0][added_at]=&   ids[0][product_id][from]=?&   ids[0][product_id][to]=))) OR (SELECT 1 UNION SELECT 2 FROM DUAL WHERE 1=1) -- -

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

अपनी वेबसाइट को Magento कार्ड स्किमिंग से कैसे बचाएं?

अब जब हमने Magento कार्ड स्किमिंग के कामकाज को विस्तार से समझ लिया है, तो आइए समझते हैं कि हम इसे भविष्य में ऐसे हमलों से कैसे बचा सकते हैं।

  1. prepareSqlInjection फ़ंक्शन को सैनिटाइज़ करना

    prepareSqlInjection फ़ंक्शन में सुरक्षा बग को हटाने के लिए, कोड इस प्रकार लिखा जाना चाहिए:

    $query = $query . $this->_prepareQuotedSqlCondition($conditionKeyMap['to'], $to, $fieldName);

    'this' पॉइंटर का उपयोग करके पास किए गए मान का संदर्भ हमलावर को बैकएंड डेटा तक सीधी पहुंच रखने से रोकेगा। पॉइंटर वेरिएबल का उपयोग डेटा एब्सट्रैक्शन और केवल अधिकृत फ़ंक्शन तक पहुंच को भी सक्षम बनाता है।

  2. इनपुट डेटा का सत्यापन

    आपकी Magento-आधारित वेबसाइट के किसी भी पृष्ठ पर इनपुट के रूप में लिए जा रहे मानों को बैकएंड प्रोसेसिंग के लिए पास करने से पहले सत्यापित किया जाना चाहिए। सत्यापन उचित फ़ंक्शन या उपयुक्त तर्क का उपयोग करके किया जा सकता है। यह फुलप्रूफ होना चाहिए। वेबसाइट एडमिनिस्ट्रेटर को वेबसाइट डेवलपर्स के लिए कोड लिखना अनिवार्य करना चाहिए जो सुरक्षित और कम कमजोर हों।

  3. सुरक्षित करने के लिए अपडेट करें

    आपकी Magento-आधारित वेबसाइट द्वारा उपयोग किए जा रहे सभी प्लगइन्स को नवीनतम संस्करण तक अपडेट किया जाना चाहिए। यह आपके ग्राहकों और उपयोगकर्ताओं के लिए एक सुरक्षित अनुभव सुनिश्चित करेगा। हैकर्स आमतौर पर उन वेबसाइटों को लक्षित करते हैं जो पुराने प्लगइन्स पर चल रही हैं और वे मैलवेयर होस्ट कर सकते हैं जो आपकी वेबसाइट को धीमा कर सकते हैं और आपकी Magento वेबसाइट को ब्लैकलिस्ट कर सकते हैं।

  4. सुरक्षा ऑडिट

    यह सुनिश्चित करने के लिए साइट का गहन सुरक्षा ऑडिट करें कि आपकी वेबसाइट में पहले से कोई सुरक्षा खामी तो नहीं है। सभी Magento यूज़र्स का रिवीजन करें और जिसे आप नहीं पहचानते उसे हटाएं। अपनी वेबसाइट पर सभी खामियों और कोडिंग कमजोरियों को उजागर करने के लिए, आप अपनी वेबसाइट पर एक पेशेवर VAPT (भेद्यता मूल्यांकन और पेनेट्रेशन टेस्टिंग) करवा सकते हैं।

  5. किसी भी सुरक्षा विसंगति की रिपोर्ट करें

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

  6. शेयर्ड होस्टिंग सुरक्षा जोखिमों के प्रति सतर्क रहें

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

  7. डेटा एन्क्रिप्शन

    अपनी वेबसाइट डेटाबेस पर संग्रहीत डेटा को एक मजबूत एन्क्रिप्शन तंत्र के साथ एन्क्रिप्ट करें। यह हमलावर को आपके उपयोगकर्ताओं के व्यक्तिगत डेटा या आपके संगठन की रणनीतिक जानकारी में सेंध लगाने के लिए कठिन समय देगा।

  8. XSS हमले के रास्ते ठीक करें

    हालांकि, इस लेख में हम XSS पर चर्चा नहीं कर रहे हैं क्योंकि Magento के भुगतान गेटवे पेज PHP-आधारित फॉर्म्स का उपयोग करके बनाए गए हैं, यह महत्वपूर्ण है कि वे $_SERVER["PHP_SELF"] हमलों को रोकने के लिए htmlspecialchars() फ़ंक्शन का उपयोग करें।

  9. फ़ायरवॉल इंस्टॉल करें

    वेब एप्लिकेशन फ़ायरवॉल इंस्टॉल करना आपकी वेबसाइट की सुरक्षा बढ़ाने का एक और तरीका है। एस्ट्रा का फ़ायरवॉल आपकी वेबसाइट के लिए एक निरंतर निगरानी प्रणाली है। यह आने वाले खतरों की पहचान करता है और उन्हें 24*7 ब्लॉक करता है। इसके अलावा, यह प्रत्येक प्रयास किए गए हमले के साथ विकसित होता रहता है और अगले के लिए बेहतर कॉन्फ़िगर हो जाता है।

Magento सुरक्षा मुद्दों पर अधिक लेखों के लिए, यहां क्लिक करें।

लेख उपयोगी लगा? फेसबुक, ट्विटर, लिंक्डइन पर अपने दोस्तों के साथ शेयर करें।

  1. Signal क्या है और यह कैसे काम करता है? Signal क्या है और यह कैसे काम करता है?

    संभावना है कि आप कम से कम एक लोकप्रिय मैसेजिंग ऐप का उपयोग करते हैं: WhatsApp, Telegram, Facebook Messenger, या इसी तरह के। और जबकि ये सभी अपने कारणों से व्यापक रूप से उपयोग किए जाते हैं, इनका उपयोग कुछ गोपनीयता चिंताओं के साथ आता है (विशेष रूप से Facebook के स्वामित्व वाले ऐप्स के लिए)। Signal एक ग

  1. Magento किलर एक्सप्लॉइट: यह Magento साइट्स को कैसे लक्षित करता है और इसका प्रभाव Magento किलर एक्सप्लॉइट: यह Magento साइट्स को कैसे लक्षित करता है और इसका प्रभाव

    Magento किलर नामक एक नई स्क्रिप्ट हाल ही में Magento वेबसाइटों को लक्षित कर रही है। स्क्रिप्ट $ConfKiller वेबसाइट में सबसे महत्वपूर्ण फ़ाइल यानी कॉन्फिग फ़ाइल (कॉन्फ़िगरेशन फ़ाइल) को लक्षित करती है। इसके अलावा, यदि $ConfKiller स्क्रिप्ट सफलतापूर्वक निष्पादित होती है तो यह हमले वाले Magento डेटाबेस क

  1. स्नैपचैट का अनावरण: कैसे ऐप मैसेजिंग को बदल देता है स्नैपचैट का अनावरण: कैसे ऐप मैसेजिंग को बदल देता है

    यह अतिशयोक्ति नहीं होगी अगर हम कहें कि स्नैपचैट ने मोबाइल मैसेजिंग ऐप्स की दुनिया में क्रांति ला दी है। स्नैपचैट की शुरुआत से पहले, किसी ने भी दोस्तों के साथ संवाद करने के लिए इस तरह के अनूठे तरीके का सपना भी नहीं देखा था। स्नैपचैट जो अवधारणा लाता है वह है सेल्फ-डिस्ट्रक्टिंग इमेज और वीडियो जो इसे न