CYber Security part 4 :
আজকে আমরা নতুন আর একটি বাগ সম্পর্কে জানব আর তা হল ইনসিকিউর ডিরেক্ট অবজেক্ট রেফারেন্সেস (Insecure direct object references) অথবা ছোট করে যাকে বলা হয়ে থাকে ( IDOR) । আমরা এই পুরো অ্যাটাক টি বুঝানোর জন্য দুইটি কাল্পনিক চরিত্র নিয়েছি আশা করি সবার আজকের লেখা টা ভাল লাগবে ।
A. IDOR কি ?
কোন অ্যাপ্লিকেশন ব্যবহারকারীদের সরবরাহিত ইনপুটটিকে অবজেক্টগুলিতে সরাসরি অ্যাক্সেস করতে পারা যাওয়ার অবস্থাটিকে বুঝানো হয়ে থাকে Insecure direct object references বা IDOR । OWASP এর ভলনারেবিলিটির তালিকার শীর্ষ দশে IDOR শব্দটি অনেক জনপ্রিয় ।
Access Control কি ?
Access Control হল মুলত এমন কিছু প্রোগ্রামেটিক নিয়ন্ত্রিত ধাপ যেগুলো মুলত একটা অ্যাপ্লিকেশানে অনুমিতি ছাড়া প্রবেশ নিষেধ করে। যেমন অন্য কারও বাড়িতে আপনি যখন যান তখন তার অনুমতি ছাড়া আপনি ঢুকতে পারবেন না আর সেই অনুমতি টাকেই এক্সেস কন্ট্রোল বলে । কিন্তু এখন যদি বাড়ির দরজা খোলা থাকে আর বাড়ির মালিক ও সেখানে না থাকে তাহলে সেটা হবে ভাঙা এক্সেস কন্ট্রোল বা Broken access control । এখানে বাড়ির মালিক হল প্রোগ্রামেটিক নিয়ন্ত্রিত ধাপ যেটা অ্যাপ্লিকেশানে কোড আকারে থাকে আর খোলা দরজা হল আপনার IDOR ভালনারেবিলিটি ।
Privilege escalation কি ?
Privilege escalation হল এমন একটি এক্সপ্লয়টেশন যা করে আপনি মুলত এই এক্সেস কন্ট্রোল বাইপাস করতে পারবেন । এটাকে ধরা যেতে পারে চাবি হিসেবে ধরেন এই চাবি তো শুধু মালিকের কাছে থাকবে এমনকি বাড়ির অন্যান্য লোকদের কাছেও থাকবে কিন্তু বাইরের কোন লোকের কাছে সেটা থাকবেনা এখন এই বাড়ির সকল মানুষের নানান ধরনের প্রিভিলেজ বা ক্ষমতা আছে যেমন কেউ কেউ হয়তবা বাড়ির কর্তা সে সব সিদ্বান্ত নেয় তাকে আমরা এডমিন হিসেবে ভাবতে পারি একটা অ্যাপ্লিকেশানের এখন এই আসল চাবি ছাড়া আপনি যেই পদ্বতিতে বাড়ির ভিতরে ঢুকবেন তাকেই Privilege escalation বলে ।
IDOR ভালনারেবিলিটি অধিকাংশ ক্ষেত্রে horizontal privilege escalation / horizontal broken access control হয়ে থাকে তবে তা আবার অনেকাংশেই কিন্তু vertical privilege escalation / vertical broken access control সাথে সম্পৃক্ত থাকে।
Broken Access Control
এখানে privilege escalation / broken access control যদিও দুইটা আলাদা শব্দ কিন্তু দুটিরই কাজ আর উদ্দেশ্য প্রায় একই । অর্থাৎ মূল কথা হল একজন অ্যাটাকার যদি সাধারণ ইউজার হয়ে কোন ভাবে একটা সিস্টেমের এডমিন এর কোন কাজ করতে পারে বা এমন একটা কাজ করে যেটা তার প্রিভিলেজে নেই বা অনুমতি দেয়া নেই তখনি সেটাকে privilege escalation / broken access control বলে ।
কোপা সামসু কি পারবে অপু ভাই কে মার দিতে ?
আমাদের বুঝার সুবিধার্তে আমরা দুটি মজার চরিত্র চিন্তা করতে পারি যেমন ধরুন “কোপা সামসু” চরিত্রটি এখানে একজন “আক্রমণকারী” বা “attacker” হিসেবে কাজ করবে আর “অপু ভাই” চরিত্রটি “ভিকটিম” হিসেবে কাজ করবে।
“অপু ভাই” একটি কোম্পানিতে কাজ করেন যে কোম্পানির ওয়েব সাইটে কাস্টমারদের জন্য ভিন্ন ভিন্ন “account” রয়েছে । যেখানে কাস্টমারদের “account” এর রেকর্ড রাখা হয়ে থাকে নানান বিষয়ক হিসাব নিকাশের জন্য । “অপু ভাই” এর কাস্টমার “account” এর URL টি এরকম –
এই URL টিতে যদি কোন programmatic access control না থেকে থাকে তাহলে আমাদের “আক্রমণকারী” “কোপা সামসু” URL এর এন্ড পয়েন্টে সামান্য পরিমাণ ম্যানিপুলেশন করে প্রিভিলেজ বা এক্সেস পেয়ে যেতে পারে ।
যেখানে “কোপা সামসু” কেবল মাত্র “user_account_id” এর মান (132355) পরিবর্তন করে “অপু ভাই” এর “account” টির এক্সেস কন্ট্রোল বায়পাস করে এই “account” টির রেকর্ড দেখতে পারবে । এই “attack” টিকে বলা হয়ে থাকে “horizontal privilege escalation” যেহেতু আমরা সাধারণ ইউজার দের টার্গেট করছি ।
এখন আমরা “অপু ভাই” কে কোম্পানির “admin” হিসেবে যদি চিন্তা করি আর “কোপা সামসু” কে কোম্পানির “customer” সেক্ষেত্রে স্বাভাবিক ভাবে একজন “customer” এর “account” থেকে “admin” এর “account” এ প্রবেশ করতে পারার কথা নয় কিন্তু যদি এক্ষেত্রে “access control” না থেকে থাকে তাহলে “কোপা সামসু” আবার “অপু ভাই” কে মার দিতে সক্ষম হবে । এই “attack” টিকে বলা হয়ে থাকে “vertical privilege escalation” এসব “attack” এর ক্ষেত্রে “attacker” মূলত ইউজার থেকে বেশি প্রিভিলেজে থাকা রোল গুলুকে আক্রমন করে যেমন সেটা হতে পারে এডমিন একাউন্ট , ম্যানাজার একাউন্ট ইত্যাদি ।
ফাইল এক্সেস টাইপ IDOR
অনেক সময় দেখা যায় অনেকে “ server-side filesystem” এর “static” ফাইল গুলতে অনেক গুরুত্বপূর্ণ তথ্য থাকে । যেমন একটা সাইট হয়তবা একটা চ্যাটের তথ্য Plain TXT ফরমেটের ফাইলে রেখেছে আর সেখানে শুধু ইউজার এর এক্সেস করার রোল আছে কিন্তু যদি সঠিক এক্সেস কন্ট্রোল না থাকে তাহলে অন্যজনের এই সিক্রেট ফাইল গুলো খুব সহজেই বের করা যাবে ।
ধরে নিন অপু ভাই এর User ID -> 12144 যেটাতে সার্ভার তার টিকটকের এক্সেস টোকেন জমা হচ্ছে তো এখন কোপা সামসু দেখেছে যে তার User ID -> 12142 আর সে জানে অপু ভাই তার পরে সেই সাইটে রেজিস্টার করেছে এখন সামসু ভাই কিন্তু জানে যে সে যদি নাম্বার বসিয়ে তার মান বাড়াতে থাকে তাহলে অপু ভাইয়ের কেল্লা ফতেহ
https://site.com/static/12142.txt -> কোপা সামসু
https://site.com/static/12143.txt -> এঞ্জেল সাদিয়া
https://site.com/static/12144.txt -> অপু ভাই
তাই সামসু ভাই উপরের নিনজা টেকনিক ব্যবহার করে অপু ভাইয়ের টিকটকের এক্সেস নেয় ।
আশা করি সবাই কন্সেপ্টটা কিছুটা হলেও বুঝতে পেরেছেন।
B. ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস নামেও পরিচিত) হল একটি সিকিউরিটি বাগ যেটি দিয়ে আপনি একজন ভিক্টিম এর নানান ধরনের সাইট সম্পর্কিত কর্মকান্ড নিয়ন্ত্রণ করতে পারবেন । ইহা একজন অ্যাটাকার কে “সেইম অরিজিন পলিসি” বাইপাস করতে দেয় ।
সেইম অরিজিন পলিসি হচ্ছে এক ধরনের পলিসি যা দিয়ে আপনার ব্রাউজার অ্যাপ্লিকেশান নির্ধারন করে যাতে আপনি যেই সাইটেই থাকেন সেটার বাইরে অন্য কোন সাইট থেকে যাতে আপনি কিছু চালাতে না পারেন ।
মুলত এই পুরো কন্সেপ্ট ইন্টারনেটে একটা সাইট থেকে আরেকটাকে আলাদা রাখে । ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস) একজনকে একটি সাইটে অন্য যে কারও একাউন্টে এক্সেস পেতে সাহায্য করে , মুলত অ্যাটাকার যখন ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস) করে তখন ভিক্টিম এর কুকিস তার কাছে চলে যায় ।
কুকিস দিয়ে মুলত একটা সাইট বুঝে কোনটা কে আর কাকে কি এক্সেস দেয়া উচিত ? আপনি আপনার ব্রাউজারেও “Cookies” এই শব্দটা দেখবেন এটির কাজই হল আপনাকে একটা ট্যাগ লাগিয়ে দিবে বা নাম দিয়ে দিবে যা অন্যদের থেকে ইউনিক আর সেগুলো থাকে এঙ্ক্রিপ্টেড তাই যে কেউ চাইলেও সেটা পাবেনা তাই এই ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস) এর মাধ্যমে যখন জাভাস্ক্রিপ্ট চালিত হয় ম্যালিসিয়াস ভাবে তখন একজন অ্যাটাকার ভিক্টিম এর কুকিস নিয়ে চলে যায় কিন্তু হ্যাঁ, যদি ভিক্টিম সেই পেইজ না দেখে যেটাতে অ্যাটাকার ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস) পেলোড (ম্যালিসিয়াস কোড) দিয়েছে তাহলে কোন কিছুই হবে না তাই এই অ্যাটাকের রিস্ক অবস্থা অনুযায়ী ভিন্ন হয় ।
কোন কোন সময় ব্লাইন্ড ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস) করে অ্যাপ্লিকেশান এর মালিকেরও কুকিস চুরি করা যায় এর ফলে পুরো সিস্টেমের এক্সেস পাওয়া যায় ।
XSS কিভাবে হয় ?
ক্রস-সাইট স্ক্রিপ্টিং একটি দুর্বল ওয়েব সাইট ম্যানিপুলেট করে কাজ করে যাতে এটি ব্যবহারকারীকে দিয়ে ম্যালিসিয়াস জাভাস্ক্রিপ্ট চালাতে পারে । ম্যালিসিয়াস কোডটি যখন কোনও ভিক্টিমের ব্রাউজারের মধ্যে কাজ করে তখন অ্যাটাকার সাথে সাথে ভিক্টিমের একাউন্টের এক্সেস নিয়ে নেয় ।
কিভাবে XSS হয় ?
ছবিতে ( পোস্ট এর নিচের ছবি খেয়াল করুন ) দেখা যাচ্ছে কিভাবে একজন অ্যাটাকার XSS করে ভিক্টিম এর একাউন্টে এক্সেস নিচ্ছে
XSS সাধারণত কত ধরনের হয়ে থাকে ?
আমরা মুলত ৩ ধরনের XSS দেখতে পাই আর সেগুলো হল :
১। Reflected XSS
এটা হল XSS এর একদম প্রাথমিক একটি পর্যায়, যখন কোন সার্ভারে দেওয়া HTTP রিকুয়েস্ট এর সাথে সাথে একটা রেসপন্স দেখা যায় কোন ধরনের ফিল্টারিং বাদে তখন মুলত এই ভালনারেবিলিটি দেখা যায় । এই ধরনের রিকুয়েস্ট গুলো মুলত ডাটাবেজ এ জমা হয়না বরং অনেকটা “echo” অথবা “print” ফাংশন এর মাধ্যমে আপনার দেয়া ইনপুট দেখায় ।
২। Stored XSS
এই XSS টা তখনই হয় যখন সার্ভারে দেয়া HTTP রিকুয়েস্ট কোন ধরনের ফিল্টার ছাড়া সেটা সার্ভার তার ডাটাবেজে জমা রাখে এবং পরবর্তিতে তা ইউজারকে দেখায় । যেমন ধরুন একটা কমেন্ট সেকশন বা চ্যাট বক্স এগুলো তে Stored XSS পাওয়া যেতে পারে।
৩। DOM-Based XSS
এই ক্ষেত্রে ভালনারেবল জাভাস্ক্রিপ্ট কোড অ্যাটাকার নিয়ন্ত্রীত Source যেমন সেই সাইটের কোন URL অথবা প্যারামিটার যা ম্যালিসিয়াস পেলোড সিংক এ পাঠিয়ে দেয় কোনো ফিল্টার না করে, যদি সেই সিংক ডাইনামিক কোড চালনার অনুমতি দেয়, যেমন – eval() or innerHTML ইত্যাদি । তাহলে attacker তার ম্যালিসিয়াস জাভাস্ক্রিপ্ট চালাতে পারবে ।
যেমন ধরুন site.com এ একটা জাভাস্ক্রিপ্ট আছে যেটা আমার ইনপুট নেয় আর সেটা পেইজ এ দেখায় অর্থাৎ সেই স্ক্রিপ্টটা আমার দেয়া ইনপুট পেইজ এর HTML কোডে ঢুকিয়ে দিচ্ছে। চলুন তেমন একটি কোড স্নিপেট দেখে আসি –
var find = document.getElementById('find').value;
var response = document.getElementById('response');
response.innerHTML = 'Looking for : ' + find;
আমরা যদি কোড টি দেখি তাহলে দেখতে পাব মুলত ‘find’ এ যদি আমরা কিছু দেই তাহলে কোন প্রকার ফিল্টার বা এনক্রিপশন ছাড়া আমরা যাই দিব তা
response.innerHTML = 'Looking for : ' + find;
এই ফাংশনটির মাধ্যমে পেইজ এর HTML কোডে দেখাবে । আমরা যারা কোড বুঝিনা তাড়াও যদি দেখি এখানে লেখা আছে ‘innerHTML’ অর্থাৎ বুঝাই যাচ্ছে HTML এর ভিতরে ইনপুটটা যাবে।
আশাকরি সাইবার সিকুউরিটি সমন্ধে কিছুটা হলেও ধারণা পেয়েছেন। এই পোস্ট এর অনেক ইনফরমেশন নেট থেকে কালেক্ট করা।
এর আগের পোস্টটা ছিল, ওয়েবপেইজ বা wordpress এর সিকুউরিটি সেই সাথে বাগ সম্পর্কে। যারা পড়েন নি, তারা এই লিংঙ্ক থেকে পড়ে আসতে পারেন ( https://m.facebook.com/groups/212698770134407... )
Comments
Post a Comment