ফাইল ইনক্লুजन ও আর্বিট্রারি কোড এক্সিকিউশন: এই মাসের শুরুতে, ওয়ার্ডপ্রেস-তে নির্মিত একটি বিমান টিকিট ওয়েবসাইট হ্যাক করা হয়েছিল, যার ফলে লাখ লাখ দর্শকদের ব্যক্তিগত ডেটা এক্সপোজ হয়ে গিয়েছিল। হ্যাকাররা কেন হ্যাক করে সে সম্পর্কে আগের একটি পোস্টে আমরা আলোচনা করেছিলাম, যেখানে ডেটা চুরি, স্প্যাম ইমেইল পাঠানো, ব্ল্যাক হ্যাট এসইও টেকনিক ব্যবহার করে নিজেদের পণ্য র্যাঙ্ক করা (প্রস্তাবিত পাঠ্য - ফার্মা হ্যাক) ইত্যাদি কারণগুলো ছিল।
ওয়েবসাইট কীভাবে হ্যাক করা হয় সেটা বোঝা হ্যাকিং রোধের চাবিকাঠি, তাই ওয়ার্ডপ্রেস ওয়েবসাইটে করা সবচেয়ে সাধারণ হ্যাক আক্রমণগুলো একটি আগের আর্টিকেলে তালিকাভুক্ত করেছিলাম।
সাধারণ হ্যাক আক্রমণ নিয়ে কথা বললে ব্রুট ফোর্স আক্রমণই প্রথমে মনে পড়ে। কিন্তু কি আপনি জানেন যে ফাইল ইনক্লুژن ও আর্বিট্রারি কোড এক্সিকিউশন ও ওয়ার্ডপ্রেস ওয়েবসাইটে করা সবচেয়ে সাধারণ হ্যাক আক্রমণের একটি? এই পোস্টে আমরা এই আক্রমণগুলো নিয়ে গভীরে যাবো যাতে এগুলো ভালোভাবে বোঝা যায়।
এই আক্রমণগুলো কীভাবে কাজ করে সেটা বোঝার জন্য প্রথমে জানতে হবে যে এতে PHP ফাইল জড়িত। কেন? কারণ ফাইল ইনক্লুژن ও আর্বিট্রারি কোড এক্সিকিউশন উভয় আক্রমণই PHP ফাইল ব্যবহার করে।
PHP ফাইল কী? একটি রান্নাঘরের আলমারি কল্পনা করুন। আলমারির ভিতরে চিনি, লবণ, মশলা, রান্নার সামগ্রী ইত্যাদি অনেক জিনিস থাকে। প্রতিটি জিনিস রান্নাঘরে নির্দিষ্ট কাজ করে। PHP ফাইল হলো সেই আলমারি, আর ফাইলের ভিতরের কোডগুলো হলো হ্যাকারর ইচ্ছামতো ফাংশন এক্সিকিউট করার জন্য জরুরি জিনিসপত্র। এই কারণে হ্যাকাররা JPEG বা PDF ফাইলের চেয়ে PHP ফাইল আপলোড করা পছন্দ করে। JPEG এবং PDF ফাইল এক্সিকিউটেবল নয়, অর্থাৎ হ্যাকাররা এই ফাইলগুলো ব্যবহার করে কোনো ফাংশন চালাতে পারে না। সেগুলো শুধু পড়া (দেখা) যায়। হ্যাক করা সাইটে কোনো পরিবর্তন আনার জন্য এগুলো ব্যবহার করা যায় না।
যে হ্যাকার আপনার ওয়েবসাইটের সার্ভারে PHP ফাইল আপলোড করতে সফল হয়েছে, সে আপনার ওয়েবসাইটে যা ইচ্ছে করতে পারে। এবং এই কারণেই PHP ফাইল ব্যবহার করা হয় ফাইল ইনক্লুژن ও আর্বিট্রারি কোড এক্সিকিউশন আক্রমণ চালানোর জন্য।
ফাইল ইনক্লুژن আক্রমণ কী?
এই ধরনের জটিল ওয়েবসাইট আক্রমণ বোঝার সবচেয়ে ভালো উপায় হলো একটি বাস্তব পরিস্থিতির উদাহরণ দেওয়া। ধরুন আপনি আপনার প্রতিষ্ঠানের জন্য একটি ওয়েবসাইট চালাচ্ছেন যার নাম college.com। কিছু ছাত্রকে সাইটে অ্যাক্সেস দিয়েছেন যাতে একдаগে কলেজের ইভেন্টের ছবি পোস্ট করতে পারেন। কেউ সেই অ্যাক্সেসের দুরുപযোগ করলো এবং একটি ম্যালিশিয়াস PHP ফাইল (নাম: hack.php) ওয়েবসাইটে আপলোড করলো। লক্ষ্য ছিল কলেজের ওয়েবসাইটে নিয়ন্ত্রণ পেতে। ছাত্র যখন ম্যালিশিয়াস PHP ফাইল আপলোড করলো, ডিফল্টভাবে সেটি আপলোড ফোল্ডারে সংরক্ষিত হলো। যে কেউ ওয়ার্ডপ্রেসের বেসিক কাঠামো জানেন, সে জানেন আপলোড করা ফাইল কোথায় যায়।
ফাইলটি একটি দরজার মতো কাজ করে যা হ্যাকারকে দূর থেকে ফাইলটির সাথে ইন্টারঅ্যাক্ট করতে দেয়। মনে রাখবেন হ্যাকারকে এখনো সাইটের নিয়ন্ত্রণ নেই, শুধু যোগাযোগের একটি জানালা পেয়েছে। সহজে বোঝার জন্য কল্পনা করুন - ব্যক্তি A একটি দেশে যেতে চান যেখানে তার প্রবেশ নিষিদ্ধ। তাই সে একজন এজেন্ট, ব্যক্তি B-কে পাঠালো। ব্যক্তি A হলো হ্যাকার, দেশটি হলো কলেজের ওয়েবসাইট এবং ব্যক্তি B হলো hack.php ফাইল।
কলেজের ওয়েবসাইটে PHP ফাইল আপলোড করা ----> ফাইলটি ওয়েবসাইট সার্ভারে সংরক্ষিত
ব্যক্তি B শুধু কিছু কাজে প্রশিক্ষিত, তাই সে বেশি কিছু করতে পারে না। তাই ব্যক্তি A-কে তাকে নির্দেশনা দিতে হবে। একইভাবে, PHP ফাইল যোগাযোগের জানালা তৈরি করে এবং হ্যাকারের আরও কমান্ডের জন্য অপেক্ষা করে।
ধরুন hack.php এমনভাবে তৈরি করা হয়েছে যাতে ওয়েবসাইটে আরও ফাইল আপলোড করা যায়। হ্যাকার একটি ফাইল তৈরি করলো (নাম: control.php) যা সে ইতিমধ্যে সার্ভারে থাকা hack.php ব্যবহার করে আপলোড করবে। নতুন ফাইল control.php হ্যাকারকে ওয়েবসাইটে পুরো অ্যাক্সেস দেবে। সে hack.php ফাইল tarafından প্রদত্ত জানালা ব্যবহার করে control.php ফাইল সাইটে আপলোড করলো। ওয়েবসাইট সার্ভারে ইতিমধ্যে থাকা একটি ফাইল (hack.php) ব্যবহার করে control.php ফাইল আপলোড করার এই প্রক্রিয়াকে Local File Inclusion বলা হয়।
Local File Execution-এর একটি চমৎকার উদাহরণ হলো Easy Forms for MailChimp ওয়ার্ডপ্রেস প্লাগইন (v 6.0.5.5)-এ পাওয়া বালনারেবিলিটি। MailChimp প্লাগইন ব্যবহার করে ওয়ার্ডপ্রেস সাইটে বিভিন্ন ধরনের ফর্ম যোগ করা যায়। একটি বালনারেবিলিটির কারণে হ্যাকাররা MailChimp ফর্ম ব্যবহার করে একটি PHP ফাইল ওয়েবসাইট সার্ভারে আপলোড করতে পারত। একবার ফাইল সার্ভারে সংরক্ষিত হলে, হ্যাকাররা সেগুলোর সাথে যোগাযোগ করে এমন কোড এক্সিকিউট করতে পারত যা সার্ভার নিয়ন্ত্রণ বা সাইটকে বিভিন্নভাবে ক্ষতিগ্রস্ত করতে সক্ষম।
একটি পরিস্থিতি কল্পনা করুন: কলেজের ওয়েবসাইটে ফায়ারওয়াল ইনস্টল করা থাকায় হ্যাকার control.php আপলোড করতে পারলো না। আলাদা ফাইল আপলোড করতে না পারলেও সে 'ইনক্লুড' করতে পারে। অর্থাৎ hack.php ফাইলের ভিতরে (যা ইতিমধ্যে কলেজের ওয়েবসাইট সার্ভারে আছে) একটি ফাইল ইনসার্ট করতে পারে। যদি হ্যাকার control.php আপলোড করতে পারত, তবে ওয়েবসাইট সার্ভার ফাইলটি পড়ে কোড এক্সিকিউট করত এবং হ্যাকার সাইটে যেকোনো কাজ করতে পারত। কিন্তু যেহেতু সে ফাইল আপলোড করতে পারছে না, সে সার্ভারকে control.php ফাইল পড়ানোর অন্য উপায় খুঁজে বের করবে। হ্যাকার তৈরি একটি পাথ অনলাইনে উপলব্ধ থাকলে এবং কলেজের ওয়েবসাইট সার্ভার সেটি পড়তে পারলে, সার্ভার সেই পাথ থেকে কোড পেয়ে এক্সিকিউট করা শুরু করবে। যেহেতু কোডটি হ্যাকারকে সাইটের পুরো নিয়ন্ত্রণ দেওয়ার জন্য লেখা, হ্যাকার এখন কলেজের ওয়েবসাইট নিয়ন্ত্রণ করছে। সার্ভারকে একটি রিমোট ফাইল পড়ানোর এই প্রক্রিয়াকে Remote File Inclusion বলা হয়।
TimThumb বালনারেবিলিটি কেস Remote File Inclusion-এর একটি জনপ্রিয় উদাহরণ। TimThumb ছিল একটি ওয়ার্ডপ্রেস প্লাগইন যা ওয়ার্ডপ্রেস সাইটে ছবি সহজে এডিট করার সুবিধা দিত। এর মাধ্যমে imgur.com এবং flickr.com-এর মতো ইমেজ শেয়ারিং ওয়েবসাইট থেকে ছবি ব্যবহার করা যেত। TimThumb imgur কে বৈধ সাইট (whitelisted) হিসেবে চিনত। হ্যাকাররা এই সুযোগ নেয় এবং https://www.imgur.com.badsite.com-এর মতো URL সহ ফাইল তৈরি করে। যখন তারা উপরে উল্লিখিত URL-এর মতো একটি ম্যালিশিয়াস ফাইল আপলোড করে, প্লাগইনটি ঠಗিয়ে যায় এবং মনে করে ফাইলটি একটি বৈধ ওয়েবসাইট থেকে আসছে। ফলে ম্যালিশিয়াস ফাইলটি ওয়েবসাইটের সার্ভারে আপলোড হতে দেয়। প্লাগইনের একটি বালনারেবিলিটির সুযোগ নিয়ে ওয়েবসাইট সার্ভারের বাইরে থেকে একটি ম্যালিশিয়াস ফাইল ইনক্লুড করার এই পুরো প্রক্রিয়াকেই Remote File Inclusion বলা হয়। ম্যালিশিয়াস PHP ফাইল সার্ভারে সংরক্ষিত হওয়ার পর হ্যাকাররা সেটির সাথে যোগাযোগ করে তাদের ইচ্ছামতো অ্যাকশন এক্সিকিউট করতে পারে।
আর্বিট্রারি কোড এক্সিকিউশন আক্রমণ কী?
এখন আমরা রিমোট ও লোকাল ফাইল ইনক্লুजन জানি, চলুন আর্বিট্রারি কোড এক্সিকিউশন বুঝতে চেষ্টা করি। ফাইল ইনক্লুژن ও আربিট্রারি কোড ইনক্লুژن একে অপরের সাথে জড়িত। ফাইল ইনক্লুজনের যেকোনো কেসে হ্যাকারর লক্ষ্য থাকে ওয়েবসাইটে আর্বিট্রারি কোড এক্সিকিউট করা। লোকাল ফাইল ইনক্লুজনের উদাহরণে ফিরে যাই: হ্যাকার কলেজের ওয়েবসাইটে hack.php আপলোড করলো এবং তারপর hack.php-এর সাহায্যে control.php আপলোড করলো। আربিট্রারি কোড এক্সিকিউশন শব্দটি হ্যাকারর একটি হ্যাক করা ওয়েবসাইটে তার ইচ্ছামতো যেকোনো কমান্ড এক্সিকিউট করার ক্ষমতার বর্ণনা। একবার PHP ফাইলগুলো (hack.php ও control.php) ওয়েবসাইট সার্ভারে আপলোড হলে, হ্যাকার আপলোড করা ফাইল থেকে যেকোনো কোড এক্সিকিউট করতে পারে। আপলোড করা ফাইল থেকে যেকোনো কোড এক্সিকিউট করার এই প্রক্রিয়াকেই আربিট্রারি কোড এক্সিকিউশন বলা হয়।
হ্যাকিং জটিল বিষয়। এই পোস্টে আমরা যতটা সম্ভব সহজে ব্যাখ্যা করার চেষ্টা করেছি। যদি কোনো অংশ বুঝতে সমস্যা হয়, আমরা পাঠকদের অনুরোধ করছি আমাদের সাথে যোগাযোগ করতে। পরবর্তী পোস্টে ওয়ার্ডপ্রেস সাইটে আরেকটি সাধারণ হ্যাক আক্রমণ Cross-Site Scripting (XSS) নিয়ে আলোচনা করব। এক নজর দিন।