ওয়েব হ্যাকিং : বেসিক ধারণা ১

ওয়েব হ্যাকিং : বেসিক ধারণা ১

বর্তমানে ওয়েব এপ্লিকেশনের চাহিদা অনেক। সেই সাথে বাড়ছে সাইবার এটাক। ওয়েব সিকিউরিটি টেস্টিং করাটাও তাই গুরুত্বপূর্ণ। একটি ওয়েবসাইটে কোন আক্রমণ করার আগে সেটা কিভাবে কাজ করছে তা বোঝা জরুরি। তাই একদমই বেসিক ধারণা গুলো নিয়ে লেখা।
লেখায় যা যা থাকছে:
১. ওয়েব এপ্লিকেশন কিভাবে কাজ করে
২. URL এর বিস্তারিত

ওয়েব এপ্লিকেশন কিভাবে কাজ করে

উপরের ছবিতে আমি overall একটা প্রসেস দেখিয়েছি। পিছনে আরও অনেক কাজ হয় কিন্তু সেই বিস্তারিত আলোচনায় যাচ্ছি না। ছবিতে লক্ষ্য করুন, বাম পাশে আমাদের কম্পিউটার। এখান থেকে কোন একটা ওয়েবসাইট দেখতে চেয়ে রিকোয়েস্ট যাচ্ছে সার্ভারে। ডান দিকে থাকা সার্ভার যেটা, সেটাও একটা কম্পিউটার। তবে তফাৎ হলো এগুলো অনেক উচ্চ ক্ষমতা সম্পন্ন হয়ে থাকে।
তো এই সার্ভারে দুইটি সেকশন কাজ করে। একটি হলো প্রোগ্রামিং লজিক গুলো। আমরা PHP, পাইথন দিয়ে ওয়েব ডেভেলপমেন্ট বলতে যেটা বুঝি সেটা। আরেকটা হলো ডাটাবেজ। আমরা কোন তথ্য সেভ করলে সেটা এই ডাটাবেজে সংরক্ষণ করা হয়।
যখন ওয়েব সার্ভারে রিকোয়েস্ট যাচ্ছে, সে এটা তার ভিতর থাকা প্রোগ্রামিং ফাইল, প্রোগ্রামিং লজিক দিয়ে যাচাই করে যে — কি তথ্য লাগবে আর দিতে পারবে। যদি সেভ করা কোন তথ্য দেয়া লাগে তাহলে সে ডাটাবেজকেও কাজে লাগায়। তো এই তথ্য যাচাই-বাছাই এবং ডাটাবেজ সংরক্ষণ এর কাজ হয়ে গেলে সার্ভার রেসপন্স হিসেবে HTML/CSS অংশটা আমাদের সেন্ড করে।

আমরা ওয়েবের শুধু ডিজাইন এর অংশটিই দেখতে পাই। back end এ লেখা প্রোগ্রামিং ফাইল গুলো সার্ভারে থাকে। ওগুলো কখনো অনলাইনে আদান প্রদান করা হয় না।

URL এর বিস্তারিত

Facebook URL example

যখনই আমরা কোন ওয়েবসাইট দেখতে চাই, আমরা সেটার URL ধরে রিকোয়েস্ট পাঠাই। URL এর পূর্ণরূপ Uniform Resource Locator. তবে সরল বাংলায় এটাকে ওয়েবের ঠিকানা বলতে পারি। কাউকে চিঠি পাঠাতে যেমন বাসার ঠিকানা লাগে তেমনি ওয়েব সাইট দেখতে চাইলে তার ঠিকানা বলা লাগে।
এই URL এ অবশ্য শুধুই ওয়েবসাইটের নাম লেখা থাকে না। আরও কিছু তথ্য নির্দেশ করা হয়। হ্যাকিং এর জন্য আমাদের সেগুলোও জানতে হবে।

দুই রকম URL এর ধারণা

উপরে ছবিতে সেকশন গুলো আলাদা রং দিয়ে চিহ্নিত করেছি। নিচে এগুলো ধারাবাহিক ভাবে ব্যাখ্যা করছি।

protocol : এই অংশটিতে নির্দেশ করা হয় কি নিয়ম মেনে আমাদের data সেন্ড করা হবে। যেমন HTTP লেখা যদি থাকে, তাহলে আমাদের data গুলো সাধারণ ইংরেজি অক্ষরের মত করে আসবে-যাবে। যদি HTTPS লেখা হয় তাহলে আমাদের data গুলো encrypted হয়ে যাবে। এই encryption বলতে বুঝায় তথ্যটাকে হিজিবিজি পরিবর্তন করে দেয়া, যাতে কেউ মাঝখানে বসে চুরি করলেও — বুঝতে না পারে কি লেখা।

আইপি এড্রেস / ডোমেইন নাম : এইযে আমরা google.com বলি। তার গুগল নাম যেমন আছে, তেমনি একটা IP এড্রেস ও আছে। যেমন গুগলের আইপি এড্রেস 142.250.205.238. আমি চাইলে ব্রাউজারে এই আইপি এড্রেস লিখে দিতে পারি আবার google.com ও দিতে পারি। তবে অত বড় সংখ্যা মনে রাখার চেয়ে google.com নামটা মনে রাখাই সহজ তাই এটার ব্যবহার হয়।
এইযে google.com নাম — এটা আবার কিনতে হয়। কেউ কেউ নাম কিনে না। সেসব ওয়েবে কিভাবে যাব? তার সমাধান করতেই “IP address:port” ব্যবহার হয়। ওয়েবের ডোমেইন নাম না থাকলে আমরা সরাসরি সেই সার্ভারের আইপি এড্রেস লিখে রিকোয়েস্ট দিতে পারি। এখানে port নাম্বার লিখতে হয় মাঝেমধ্যে। সাধারণত ৮০,৪৪৩,৮০৮০ এসকল পোর্ট দিয়ে ওয়েবসাইট কাজ করে থাকে।

path : আমাদের উইন্ডোজের C ফোল্ডারের ভিতর যেমন বিভিন্ন ফোল্ডার থাকে তেমনি সার্ভার কম্পিউটারের ফোল্ডারের ভিতরও এমন থাকে। ওয়েবের কোন পেজ কোন ফোল্ডারের ভিতর থাকলে, সেটার পথ বা path এখানে লেখা হয়। যেমন কোথাও এমন লেখা থাকলে — /upload.php/image/02. এর মানে হলো upload ফোল্ডারের ভিতর image ফোল্ডার। তার ভিতরের ০২ নাম্বার ইমেজ ফাইল, সেটা দেখান হচ্ছে আমাদের ওয়েবে।

Tree স্ট্রাকচারে সাজানো থাকে আমাদের web ফোল্ডার গুলো। হ্যাকিং টুলস থেকে নেয়া আউটপুট স্ক্রিনশট

?query : এটা অত্যন্ত গুরুত্বপূর্ণ সেকশন। মূলত ওয়েবে আমাদের data দেখাতে বা আমাদের দেয়া কোন data সার্ভার নেয়ার জন্য query ভ্যালু প্রয়োজন পড়ে। ডেভেলোপররা অনেক সময় এই query সেকশন hide করে রাখতে পারে।
এখানে আমরা চাইলে নিজেরা ইনপুট দিতে পারি। নিজেরা বিভিন্ন হ্যাকিং এর কমান্ড চেষ্টা করতে করতে পারি। নিজেদের মন মতো data প্রবেশ করিয়ে দিতে পারি বিধায় হ্যাক করা সম্ভব হয় কিছু ক্ষেত্রে। তাই query এর জায়গাটা গুরুত্বপূর্ণ

Query parameter example by Aria dev

#fragment : URL এর এই অংশটাও অনেকটা query string এর মতো। এখানেও ইনপুট দেয়া যেতে পারে কিছু ক্ষেত্রে। তবে এটার তফাৎ হলো — query string যেমন সার্ভার এর সাথে যোগাযোগ করে না। fragment এর খুব ভাল উদাহরণ এই লিংক: https://en.wikipedia.org/wiki/Cat. এই লিংকে গেলে আমি পেজের একদম শুরু থেকে দেখতে পাব।
এবার এই লিংকে গেলে: https://en.wikipedia.org/wiki/Cat#Play. সেই বিড়াল নিয়েই পেজ কিন্তু একটা সেকশনে নিয়ে যাচ্ছে। fragment এভাবে ওয়েব পেজের কোন অংশে নিয়ে যেতে পারে।

URL দিয়ে ওয়েবপেজ দেখার কাজটি যদি একসাথে বর্ণনা করি তাহলে এমন হয়:
ব্রাউজারে https://www.google.com/search?client=firefox&q=cat লিখলাম। ব্রাউজার দেখবে প্রোটোকল কি ব্যবহার হবে (https). এরপর কোন path সে ব্যবহার করবে (search) এখানে যেহেতু সার্চ দিচ্ছি তাই এই path সে বেছে নিয়েছে। map দেখা বা অন্য কোন সার্চ দিলে সেটার path সিলেক্ট করতো সার্ভার। এখানে URL এ, আমার সার্চ করা শব্দ cat ও যাচ্ছে। একাধিক query string একসাথে যেতে পারে। আমার ব্রাউজার firefox বলে সেটার তথ্যও URL দিয়ে পাস্ হচ্ছে।
তথ্য গুগল সার্ভারে গেলে সে এনালাইসিস করছে। শেষে আমি আমার ব্রাউজার পেজে — গুগলের webpage দেখতে পাচ্ছি।

আমার লেখাটি থেকে যদি উপকারী মনে হয়, তাহলে অবশ্যই অন্যদের সাথে শেয়ার করুন — sharing is caring ❤