OTP (One Time Password) হল স্বল্প সময়ের জন্য একটি ইউনিক কোড, যা মূলত ব্যবহৃত হয় গুরুত্বপূর্ণ অ্যাকশন নিশ্চিত করার জন্য। অর্থাৎ আপনি যে ইমেইল, ফোন নম্বর বা অন্য কিছু ব্যবহার করছেন তার মালিকানা আপনি কিনা, তা যাচাই করার জন্য। যেমন ধরুন, আপনি কোনো অ্যাপ্লিকেশন এ ইমেইল বা ফোন নম্বর ব্যবহার করে একটি অ্যাকাউন্ট তৈরি করেছেন। এখন ওয়েবসাইট কর্তৃপক্ষ চাচ্ছে আপনি আপনার মালিকানাধীন ইমেইল বা ফোন নম্বর ব্যবহার করেছেন কিনা। ইমেইল বা ফোন নম্বরটি আপনার মালিকানাধীন কিনা যাচাই করার জন্য আপনার ইমেইল বা ফোন নম্বরে একটি OTP পাঠানো হয়, যার মাধ্যমে আপনি অ্যাপ্লিকেশনটি ব্যবহার করার অনুমতি পাবেন। এই OTP টা বাইপাস করতে পারলেই , তা ভালনারেবিলিটি হিসেবে ধরা হয়।
OWASP Top 10 এর কোন বিভাগে অন্তর্ভুক্ত:
Broken Access Control (A01:2021 ): যদি কোনো আক্রমণকারী OTP সিস্টেমের নিষেধাজ্ঞা বাইপাস করে যথাযথ অনুমোদন ছাড়া অ্যাক্সেস অর্জন করে, তা Broken Access Control এর মধ্যে পড়বে।
Security Misconfiguration (A05:2021): অসম্পূর্ণ, ডিফল্ট, বা ভুলভাবে কনফিগার করা সুরক্ষা নিয়ন্ত্রণের কারণে OTP সিস্টেম বাইপাস করলে তা Security Misconfiguration এর মধ্যে পড়বে।
Identification and Authentication Failures (A07:2021): যখন সিস্টেম ব্যবহারকারী যাচাইয়ের জন্য OTP সিস্টেম ব্যবহার করে, তখন আক্রমণকারী OTP সিস্টেমটি বাইপাস করে, এটি Identification and Authentication Failures হিসেবে বিবেচিত হবে।
Software and Data Integrity Failures (A08:2021): যদি আক্রমণকারী অ্যাপ্লিকেশনের OTP যাচাইকরণের সময় সার্ভার ক্লাইয়েন্টকে পাঠানো রেসপন্স ম্যানিপুলেট করে OTP যাচাইকরণ সম্পূর্ণরূপে বাইপাস করে, তা Software and Data Integrity Failures হিসেবে ধরা হবে।
কী কী কারণে OTP পাঠানো হয়:
- নিবন্ধন ও যাচাই: নতুন অ্যাকাউন্ট খোলার সময়
- অথেন্টিকেশন: লগইন করার সময়
- পাসওয়ার্ড পুনরায় সেট করার জন্য
- লেনদেন ও পেমেন্ট সুরক্ষা: পেমেন্টের আগে OTP দিয়ে নিশ্চিত করার জন্য
- ইমেইল/ফোন নম্বর পরিবর্তন
- ডিভাইস সংযোগ ও বিশ্বাসযোগ্যতা যাচাই: নতুন ডিভাইস যোগ করলে
- সংবেদনশীল ডেটা অ্যাক্সেস
- সাবস্ক্রিপশন ও সদস্যপদ যাচাই ইত্যাদি
Tools:
- BurpSuite: OTP রিকোয়েস্ট ইন্টারসেপ্ট এবং মডিফাই করার জন্য।
- Postman: API কল গুলি ম্যানুয়ালি পরীক্ষা করার জন্য।
- Intruder: ব্রুট-ফোর্স টেস্টিং এর জন্য।
- MobSF: মোবাইল অ্যাপ্লিকেশনগুলোতে OTP পরীক্ষা করার জন্য।
OTP বাইপাস করার উপায়:
Response Manipulation (রেসপন্স ম্যানিপুলেশন): রেসপন্স ম্যানিপুলেশনের মাধ্যমে OTP বাইপাস করার জন্য আমাদের প্রথমে সার্ভারের রেসপন্স ভালোভাবে পর্যবেক্ষণ করতে হবে।
পরীক্ষা করার পদ্ধতি:
- প্রথমে সঠিক (valid) এবং ভুল (invalid) OTP দিয়ে রেসপন্স কেমন আসে, তা চেক করতে হবে।
উদাহরণস্বরূপ: Valid OTP দিলে রেসপন্সে {"success": true} বা {"status": "verified"} আসে। Invalid OTP দিলে {"success": false} বা {"status": "failed"} আসে।
- ভুল OTP দিয়ে রিকোয়েস্ট দিয়ে BurpSuite এর মাধ্যমে রেসপন্স ইন্টারসেপ্ট করার পর রেসপন্সে false বা failed থাকা জায়গাটি "true" বা "verified" দিয়ে পরিবর্তন করা। তারপর ফরওয়ার্ড করা।
প্রমাণিত রিপোর্ট:
Brute Force Attack (ব্রুট ফোর্স আক্রমণ):
ব্রুট ফোর্সের মাধ্যমে OTP বাইপাস করতে চাইলে প্রথমে Rate Limit (অনুরোধের সীমা) আছে কিনা, তা চেক করতে হবে।
পরীক্ষা করার পদ্ধতি:
- ভুল OTP দিয়ে কয়েকবার চেষ্টা করলেও কোনও লক বা ব্লক না আসে, তাহলে অ্যাপ্লিকেশনটি ব্রুট ফোর্স আক্রমণ করা যাবে।
- তারপর ভুল OTP দিয়ে রিকোয়েস্টটি BurpSuite দিয়ে ইন্টারসেপ্ট করে রিকোয়েস্টটি Intruder-এ নিয়ে যেতে হবে
- তারপর OTP-র জায়গায় Payloads বসাতে হবে (যেমন 0000 থেকে 9999 পর্যন্ত সব কম্বিনেশন)।
- সঠিক OTP মিলে গেলে রেসপন্সের আকার বা স্ট্যাটাস কোডে পার্থক্য দেখা যাবে।
প্রমাণিত রিপোর্ট:
2FA Bypass using Blank Code:
ব্ল্যাংক কোড দিয়ে OTP বাইপাস করার জন্য প্রথমে BurpSuite এর মাধ্যমে রিকোয়েস্ট ইন্টারসেপ্ট করে OTP এর জায়গায় ব্ল্যাংক কোড বা null দিয়ে ফরওয়ার্ড করতে হবে।
উদাহরণস্বরূপ: {"otp": " "}, {"otp": null}, {"otp": "true"}
প্রমাণিত রিপোর্ট:
OTP Code Reusability (OTP পুনরায় ব্যবহারযোগ্যতা):
যদি কোনও অ্যাপ্লিকেশন একবার ব্যবহৃত OTP বাতিল না করে — এবং মেয়াদ শেষ হওয়ার সময়সীমা দীর্ঘ হয় — তাহলে আক্রমণকারী আগের OTP ব্যবহার করে যাচাইকরণ বাইপাস করতে পারে।
পরীক্ষা করার পদ্ধতি:
- প্রথমে একটি OTP অনুরোধ করতে হবে।
- সেই OTP ব্যবহার করে যাচাইকরণ করতে হবে।
- এখন একই OTP আবার ব্যবহার করার চেষ্টা করতে হবে।
- যদি অ্যাপটি পুরনো OTP গ্রহণ করে, তাহলে সেটি একটি নিরাপত্তা দুর্বলতা।
প্রমাণিত রিপোর্ট:
Code Leakage in Response (রেসপন্সে কোড লিক হওয়া): অনেক সময় অ্যাপ্লিকেশন OTP অনুরোধ করার সময় সার্ভারের রেসপন্স বডিতে OTP লিক করে ফেলে।
পরীক্ষা করার পদ্ধতি:
BurpSuite দিয়ে OTP রিকোয়েস্ট ইন্টারসেপ্ট করে সার্ভারের রেসপন্সের বডি ভালোভাবে পর্যবেক্ষণ করতে হবে। যদি সেখানে কোথাও OTP লিক হয়ে যায়, তাহলে সেটি নিরাপত্তা দুর্বলতা।
প্রমাণিত রিপোর্ট:
ইত্যাদি
শেখার জন্য যা করবেন :
- PortSwigger Web Security Academy
- 2FA simple bypass https://portswigger.net/web-security/authentication/multi-factor/lab-2fa-simple-bypass
- 2FA bypass using a brute-force attack https://portswigger.net/web-security/authentication/multi-factor/lab-2fa-bypass-using-a-brute-force-attack
- TryHackMe
- Multi-Factor Authentication https://tryhackme.com/r/room/multifactorauthentications
OTP Bypass হলে কী কী ক্ষতি হতে পারে:
- অ্যাকাউন্ট দখল : আক্রমণকারী কোনো OTP ছাড়াই অন্যের অ্যাকাউন্ট দখল নিতে পারবে।
- অননুমোদিত অ্যাক্সেস : অনুমোদন ছাড়াই অনেক গুরুত্বপূর্ণ কাজের অ্যাক্সেস পাওয়া সম্ভব হয়।
- সেশন হাইজ্যাক : আগের OTP ব্যবহার করে অন্যের সেশন অ্যাক্সেস নেওয়া সম্ভব হবে।
- ডেটা ফাঁস : সুরক্ষিত ডেটা, পার্সোনাল ডেটা ফাঁস হতে পারে।
কীভাবে এসব আক্রমণ প্রতিরোধ করা যায়:
- সার্ভার-সাইড ভ্যালিডেশন নিশ্চিত করতে হবে।
- ক্লায়েন্ট-সাইড রেসপন্স ম্যানিপুলেশন প্রতিরোধ করার জন্য ক্রিপ্টোগ্রাফিক সিগনেচার বা টোকেন ব্যবহার করতে হবে।
- রেট লিমিট (Rate Limit) বা পুনরায় চেষ্টার সীমা সেট করতে হবে।
- অ্যাকাউন্ট লক ফিচার যুক্ত করা উচিত (যেমন ৩-৫ বার ভুল OTP দিলে অ্যাকাউন্ট সাময়িক ব্লক)।
- CAPTCHA এবং টাইম ডিলে ব্যবহার করে ব্রুট ফোর্স রোধ করা যায়।
- OTP encryption/hashing: OTP যদি hashed format-এ স্টোর করা হয় বা encrypt করা থাকে, তাহলে রেসপন্স ম্যানিপুলেশন/লিকেজ কমানো যায়।
- Transaction Binding: পেমেন্টের সময় OTP-এর সাথে নির্দিষ্ট ট্রান্সঅ্যাকশন বেঁধে দিলে রিইউজ করা যায় না।