চূড়ান্ত প্রকল্প — সম্পূর্ণ পেনিট্রেশন টেস্ট রিপোর্ট সিমুলেশন
এই পাঠে যা শিখবেন
- একটি পেশাদার পেনিট্রেশন টেস্ট রিপোর্টের সম্পূর্ণ কাঠামো — স্কোপ, রিকন, ফাইন্ডিং, এক্সপ্লয়টেশন, রেমিডিয়েশন, এক্সিকিউটিভ সামারি
- কীভাবে পুরো কোর্সের ভিন্ন ভিন্ন পাঠকে একটি একক ডেলিভারেবলে সংযুক্ত করতে হয়
- একটি সামগ্রিক এনগেজমেন্ট রিস্ক স্কোর কীভাবে একাধিক CVSS স্কোর থেকে গণনা করা হয়
- কেন প্রতিটি ফাইন্ডিং-এর সাথে একটি রেমিডিয়েশন সুপারিশ থাকা রিপোর্টের আসল মূল্য তৈরি করে
১ · এনগেজমেন্ট স্কোপ ও Rules of Engagement রিক্যাপ (M1 · L01-L04)
প্রতিটি পেশাদার রিপোর্ট একটি স্মরণ করিয়ে দেওয়া দিয়ে শুরু হয়: এই পুরো এনগেজমেন্ট একটি লিখিত Rules of Engagement (L01) চুক্তির অধীনে পরিচালিত হয়েছিল — নির্দিষ্ট স্কোপ, সময়সীমা, অনুমোদিত পদ্ধতি। ফিকশনাল টার্গেট: "Project Sandbox Corp"-এর একটি ওয়েব অ্যাপ্লিকেশন, grey-box পদ্ধতিতে (L02) টেস্ট করা হয়েছে। L04-এর ফ্রেমওয়ার্ক অনুযায়ী, প্রতিটি ফাইন্ডিং একটি Threat × Vulnerability সমন্বয় হিসেবে মূল্যায়ন করা হয়েছে, শুধু বিচ্ছিন্ন প্রযুক্তিগত সমস্যা হিসেবে নয়।
২ · রিকনেসান্স সারাংশ (M3 · L10-L13)
রিপোর্টের রিকন সেকশন প্যাসিভ (L10 — OSINT, পাবলিক রেকর্ড) ও অ্যাক্টিভ (L11 — DNS এনুমারেশন) রিকনেসান্সের ফলাফল সংক্ষেপে উপস্থাপন করে, তারপর পোর্ট স্ক্যান (L12) ও সার্ভিস ব্যানার গ্র্যাবিং (L13)-এর ফলাফল। এই ধাপগুলো টেস্টারকে টার্গেটের অ্যাটাক সারফেস বুঝতে সাহায্য করে, যা পরবর্তী ভালনারেবিলিটি অ্যাসেসমেন্ট (M4) ধাপের ভিত্তি তৈরি করে।
৩ · ফাইন্ডিং — CVSS স্কোর ও OWASP ম্যাপিং (M4/M5)
প্রতিটি ফাইন্ডিং-এর একটি CVSS স্কোর ও সেভারিটি ব্যান্ড (L14) আছে, এবং যেখানে প্রযোজ্য, একটি নির্দিষ্ট OWASP Top 10 ক্যাটাগরি (M5) রেফারেন্স করে। এই এনগেজমেন্টে তিনটি সংশ্লিষ্ট ফাইন্ডিং সনাক্ত হয়েছে —
A01:2021 — অর্ডার এন্ডপয়েন্টে owner-check অনুপস্থিত (L18)।
A03:2021 — লগইন ফর্মে
' OR '1'='1 বাইপাস (L20)।A03:2021 — কমেন্ট বক্সে আনএস্কেপড
<script> রেন্ডার (L26)।৪ · এক্সপ্লয়টেশন ন্যারেটিভ — স্যান্ডবক্সড PoC (শুধুমাত্র টয় ডেমো)
প্রতিটি রিপোর্টে একটি প্রুফ-অফ-কনসেপ্ট (PoC) থাকে যা প্রমাণ করে ফাইন্ডিংটি তাত্ত্বিক নয়, বাস্তবে কাজ করে।
এই এনগেজমেন্টের জন্য আমরা এই কোর্সের ঠিক একই টয় ভালনারেবল ফাংশনগুলো পুনরায় ব্যবহার করছি — L18-এর
get_order(), L20-এর login_insecure(), এবং L26-এর render_comment()
— কখনো কোনো নতুন বা real এক্সপ্লয়েট নয়, শুধু এই কোর্সে ইতিমধ্যে শেখা স্যান্ডবক্সড ডেমোগুলোর সংশ্লেষণ।
৫ · রেমিডিয়েশন সুপারিশ (প্রতিটি ফাইন্ডিং-এর সাথে ১:১ ম্যাপড)
একটি রিপোর্ট শুধু "কী ভাঙা আছে" বলে না — এটি ঠিক কীভাবে ঠিক করতে হবে তাও বলে, প্রতিটি ফাইন্ডিং-এর সাথে
সরাসরি যুক্ত করে: IDOR-এর জন্য owner-check (L18-এর get_order_safe), SQLi-এর জন্য
parameterized/dict-based তুলনা (L20-এর login_safe), XSS-এর জন্য html.escape()
(L26)। এটিই একটি রিপোর্টকে শুধু একটি "সমস্যার তালিকা" থেকে একটি "সমাধানের পরিকল্পনা"-য় রূপান্তরিত করে।
৬ · এক্সিকিউটিভ সামারি — ব্যবসায়িক ভাষায় ঝুঁকি
টেকনিক্যাল টিমের জন্য CVSS স্কোর যথেষ্ট, কিন্তু ম্যানেজমেন্টের জন্য ঝুঁকি ব্যবসায়িক প্রভাবের ভাষায় অনুবাদ করতে হয় — L04-এর Risk = Likelihood × Impact ফ্রেমওয়ার্ক ব্যবহার করে। নিচের কোড সেলে আমরা প্রতিটি ফাইন্ডিংকে একটি একক সামগ্রিক এনগেজমেন্ট রিস্ক স্কোর-এ সংশ্লেষণ করব, এবং একটি সম্পূর্ণ ফরম্যাটেড রিপোর্ট প্রিন্ট করব।
# প্রতিটি ফাইন্ডিং এই কোর্সের নির্দিষ্ট আগের পাঠের টয় ভালনারেবল ডেমো থেকে সংশ্লেষিত
findings = [
{
"title": "Broken Access Control — IDOR (অর্ডার এন্ডপয়েন্ট)",
"cvss_score": 8.1,
"owasp_ref": "A01:2021 (L18)",
"poc_summary": "get_order(order_id) কোনো owner-check ছাড়াই যেকোনো "
"অর্ডার আইডি ফেরত দিচ্ছিল (L18-এর টয় ডেমো অনুযায়ী)।",
"remediation": "প্রতিটি রিকোয়েস্টে সার্ভার-সাইডে "
"orders[order_id]['owner'] == requesting_user "
"যাচাই করুন (L18-এর get_order_safe প্যাটার্ন)।",
},
{
"title": "SQL ইনজেকশন — লগইন ফর্মে",
"cvss_score": 9.4,
"owasp_ref": "A03:2021 (L20)",
"poc_summary": "' OR '1'='1 পেলোড দিয়ে login_insecure() পুরো WHERE "
"clause-কে সবসময়-সত্য করে অথেন্টিকেশন বাইপাস করেছিল "
"(L20/L56-এর টয় ডেমো)।",
"remediation": "স্ট্রিং কনক্যাটেনেশনের বদলে parameterized/dict-based "
"তুলনা ব্যবহার করুন (L20-এর login_safe প্যাটার্ন)।",
},
{
"title": "রিফ্লেক্টেড ক্রস-সাইট স্ক্রিপ্টিং — কমেন্ট বক্সে",
"cvss_score": 6.9,
"owasp_ref": "A03:2021 (L26)",
"poc_summary": "script alert payload এস্কেপ ছাড়াই render_comment()-এ "
"verbatim রেন্ডার হয়েছিল (L26/L57-এর টয় ডেমো)।",
"remediation": "ব্যবহারকারীর ইনপুট রেন্ডার করার আগে সবসময় html.escape() "
"প্রয়োগ করুন এবং defense-in-depth হিসেবে CSP যোগ করুন (L26)।",
},
]
def severity_band(score):
if score >= 9.0:
return "Critical"
if score >= 7.0:
return "High"
if score >= 4.0:
return "Medium"
return "Low"
def engagement_risk_score(findings):
"""সামগ্রিক এনগেজমেন্ট রিস্ক স্কোর — সবচেয়ে গুরুতর ফাইন্ডিং-এর ওজন বেশি
(৭০%), বাকি ফাইন্ডিংগুলোর গড় ওজন কম (৩০%) — L04-এর risk-prioritization
যুক্তির একটি সরল সংখ্যাগত প্রয়োগ।"""
scores = [f["cvss_score"] for f in findings]
worst = max(scores)
weighted_avg = sum(scores) / len(scores)
return round((worst * 0.7) + (weighted_avg * 0.3), 1)
def print_final_report(findings):
print("=" * 62)
print(" পেনিট্রেশন টেস্ট রিপোর্ট — Project Sandbox Corp (fictional)")
print("=" * 62)
for i, f in enumerate(findings, start=1):
band = severity_band(f["cvss_score"])
print(f"\nফাইন্ডিং #{i}: {f['title']}")
print(f" CVSS স্কোর: {f['cvss_score']} ({band})")
print(f" OWASP রেফারেন্স: {f['owasp_ref']}")
print(f" PoC সারাংশ: {f['poc_summary']}")
print(f" প্রতিকার: {f['remediation']}")
overall = engagement_risk_score(findings)
print("\n" + "-" * 62)
print(f"সামগ্রিক এনগেজমেন্ট রিস্ক স্কোর: {overall} / 10 ({severity_band(overall)})")
print("এক্সিকিউটিভ সামারি: এই এনগেজমেন্টে ৩টি উচ্চ-থেকে-ক্রিটিক্যাল ফাইন্ডিং")
print("চিহ্নিত হয়েছে। সবচেয়ে গুরুত্বপূর্ণ ঝুঁকি SQL ইনজেকশন (Critical) —")
print("এটি সম্পূর্ণ অথেন্টিকেশন বাইপাস করে; দ্রুততম রেমিডিয়েশন অগ্রাধিকার।")
print("-" * 62)
print_final_report(findings)
engagement_risk_score() সবচেয়ে গুরুতর ফাইন্ডিং-কে (worst) বেশি ওজন (৭০%) দেয়, কারণ একটি
সামগ্রিক রিস্ক স্কোর যদি শুধু গড় হতো, তাহলে দুটি কম-গুরুত্বপূর্ণ ফাইন্ডিং একটি Critical SQLi-এর প্রকৃত
ঝুঁকিকে "লুকিয়ে" ফেলতে পারত। এটি L04-এর Risk = Likelihood × Impact নীতির একটি ব্যবহারিক প্রয়োগ — সবচেয়ে
খারাপ-কেস প্রভাবকে যথাযথ গুরুত্ব দেওয়া।
৭ · কোর্সের সিন্থেসিস — এই একটি রিপোর্টে কতগুলো পাঠ মিশে আছে
এই একটি কোড সেল এবং রিপোর্ট কাঠামো আসলে M1 (স্কোপ/RoE), M3 (রিকন), M4 (CVSS), M5 (OWASP — A01/A03), এবং L01-এর মূল হ্যাশিং/ইন্টিগ্রিটি চিন্তাভাবনার (যা L28/L36-এ প্রসারিত হয়েছিল) সরাসরি ধারাবাহিকতা। একটি বাস্তব পেনিট্রেশন টেস্টার ঠিক এভাবেই কাজ করেন — বিচ্ছিন্ন কৌশল প্রয়োগ করেন না, বরং একটি সংগঠিত, পুনরাবৃত্তিযোগ্য প্রক্রিয়ার মাধ্যমে স্কোপ থেকে সুপারিশ পর্যন্ত একটি সম্পূর্ণ চিত্র তৈরি করেন।
একটি পেনিট্রেশন টেস্ট রিপোর্টের আসল মূল্য কখনোই শুধু দুর্বলতার তালিকায় থাকে না — এটি থাকে রেমিডিয়েশন সুপারিশে। একটি সংস্থা নিরাপদ হয় না শুধু তাদের সমস্যা জানার মাধ্যমে; তারা নিরাপদ হয় যখন তারা সেই সমস্যাগুলো ঠিক করে। L01-এ যে দায়িত্বশীলতার কথা বলা হয়েছিল — অনুমতি, স্কোপ, উদ্দেশ্য — সেই একই দায়িত্বশীলতা এখানে সম্পূর্ণ বৃত্তে ফিরে আসে: একজন এথিক্যাল হ্যাকারের কাজ শেষ হয় না দুর্বলতা খুঁজে বের করাতে, শেষ হয় প্রতিরক্ষা শক্তিশালী করাতে সাহায্য করার মধ্য দিয়ে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ কেন একটি ভালো পেনিট্রেশন টেস্ট রিপোর্টে সবসময় একটি রেমিডিয়েশন সুপারিশ থাকে, শুধু দুর্বলতার তালিকা নয়?
আসল সিকিউরিটি মূল্য তৈরি হয় ঠিক করার মাধ্যমে, শুধু জানার মাধ্যমে নয়। একটি দুর্বলতার তালিকা একাই কোনো ঝুঁকি কমায় না — এটি শুধু সমস্যাটি নথিভুক্ত করে। একটি সুনির্দিষ্ট, প্রয়োগযোগ্য রেমিডিয়েশন সুপারিশ (যেমন এই পাঠের প্রতিটি ফাইন্ডিং-এর সাথে যুক্ত) হলো সেই সেতু যা "সমস্যা জানা" থেকে "ঝুঁকি হ্রাস করা"-য় নিয়ে যায়।
প্র ০২ এই রিপোর্টে M1 (স্কোপ/RoE), M4 (CVSS), M5 (OWASP) এবং M3 (রিকন) — এই চারটি ভিন্ন মডিউল কীভাবে একটি একক ডকুমেন্টে একসাথে কাজ করে?
M1 প্রতিষ্ঠা করে কী টেস্ট করা বৈধ ছিল (স্কোপ/অনুমোদন)। M3 দেখায় টার্গেট সম্পর্কে কী তথ্য পাওয়া গেল। M5 চিহ্নিত করে কোন নির্দিষ্ট দুর্বলতা পাওয়া গেল, এবং M4 সেই দুর্বলতাগুলোর তীব্রতা/অগ্রাধিকার নির্ধারণ করে। একটি সম্পূর্ণ রিপোর্ট এই চারটি স্তরকে ক্রমানুসারে সাজিয়ে একটি যৌক্তিক আখ্যান তৈরি করে — অনুমতি থেকে শুরু করে অগ্রাধিকারপ্রাপ্ত পদক্ষেপ পর্যন্ত।
প্র ০৩ এই রিপোর্টের সবগুলো "প্রুফ-অফ-কনসেপ্ট" কেন এই কোর্সের আগের পাঠের টয় ফাংশন পুনরায় ব্যবহার করে, নতুন কোনো এক্সপ্লয়েট নয়?
এই কোর্সের সুরক্ষা মডেল (L01, CLAUDE.md) অনুযায়ী প্রতিটি হ্যান্ডস-অন ডেমো স্যান্ডবক্সড ও ইন-মেমরি থাকতে হবে, কখনো real সিস্টেমের বিরুদ্ধে নয়। কিন্তু এর চেয়েও গুরুত্বপূর্ণ শিক্ষামূলক কারণ আছে — এই চূড়ান্ত পাঠের লক্ষ্য নতুন কৌশল শেখানো নয়, বরং দেখানো যে একটি পেশাদার রিপোর্ট কীভাবে ইতিমধ্যে শেখা পৃথক ধারণাগুলোকে একটি সুসংগঠিত সম্পূর্ণ চিত্রে সংশ্লেষণ করে।
অনুশীলন
-
বিস্তৃত করুন: উপরের কোড সেলে
findingsলিস্টে L28 (সফটওয়্যার ইন্টিগ্রিটি ফেইলিওর) থিমের উপর ভিত্তি করে একটি চতুর্থ ফাইন্ডিং যোগ করুন — একটি যুক্তিসঙ্গত CVSS স্কোর,owasp_ref,poc_summaryওremediationসহ। তারপর আবার রিপোর্ট চালিয়ে দেখুন সামগ্রিক রিস্ক স্কোর কীভাবে বদলায়।একটি যুক্তিসঙ্গত এন্ট্রি:
{"title": "Software Integrity Failure — আনভেরিফায়েড প্যাকেজ আপডেট", "cvss_score": 7.5, "owasp_ref": "A08:2021 (L28)", "poc_summary": "verify_integrity() না চালিয়ে একটি tampered প্যাকেজ ইনস্টল হয়ে যাচ্ছিল", "remediation": "প্রতিটি আপডেটের আগে hashlib.sha256 দিয়ে published checksum-এর বিরুদ্ধে যাচাই করুন (L28-এর প্যাটার্ন)"}। যেহেতু এই স্কোর (৭.৫) বিদ্যমান worst score (৯.৪)-এর চেয়ে কম, সামগ্রিক এনগেজমেন্ট রিস্ক স্কোরে সামান্য পরিবর্তন হবে (weighted_avg সামান্য কমবে, কিন্তু worst অপরিবর্তিত থাকায় সামগ্রিক স্কোর বেশি বদলাবে না) — এটি দেখায় কেন worst-কে বেশি ওজন দেওয়া সবচেয়ে গুরুতর ঝুঁকিকে "গড়ে হারিয়ে যাওয়া" থেকে রক্ষা করে। -
চিন্তা করুন: এই পুরো কোর্স জুড়ে (L01 থেকে L60) আপনি যে একটি ধারণা সবচেয়ে বেশিবার পুনরাবৃত্ত হতে দেখেছেন তা চিহ্নিত করুন, এবং লিখুন কেন সেটি এত মৌলিক।
একটি শক্তিশালী প্রার্থী: least-privilege / deny-by-default — এটি L18 (owner-check), L25 (rate-limiting), L31 (প্রিভিলেজ এস্কেলেশন), L43 (রানটাইম পারমিশন), L52 (IAM), L53 (কন্টেইনার non-root) সহ অন্তত ৬টি ভিন্ন মডিউলে ভিন্ন প্রেক্ষাপটে পুনরাবৃত্ত হয়েছে। এটি এত মৌলিক কারণ এটি একটি একক প্রযুক্তিগত ফিক্স নয় — এটি একটি ডিজাইন দর্শন যা "প্রতিটি অ্যাক্সেস স্পষ্টভাবে অনুমোদিত হতে হবে, অন্যথায় প্রত্যাখ্যাত" এই নীতিকে প্রতিটি স্তরে (কোড, নেটওয়ার্ক, ক্লাউড, মোবাইল) প্রয়োগ করে। আরেকটি সমান শক্তিশালী প্রার্থী: ইন্টিগ্রিটি-যাচাই হ্যাশিং (L01 → L28 → L36 → L49), যা দেখায় কীভাবে একটি সাধারণ ধারণা ক্রমশ গভীরতর প্রয়োগে বিস্তৃত হতে পারে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস আবার দেখুন ৬০টি পাঠ অভিনন্দন — আপনি Cybersecurity & Ethical Hacking কোর্সের সবগুলো পাঠ সম্পন্ন করেছেন। যেকোনো পাঠ যেকোনো সময় আবার দেখতে পারেন।
- System Design & Software Architecture কোর্স সঙ্গী কোর্স এনক্রিপশন, অথেন্টিকেশন, লগিং ও অবজার্ভেবিলিটি কীভাবে বড় প্রোডাকশন সিস্টেমে ডিজাইন হয় তা শিখতে দেখুন — এই কোর্সের সরাসরি ধারাবাহিকতা।
- Discrete Mathematics কোর্স সহায়ক কোর্স RSA, মডুলার এক্সপোনেনশিয়েশন ও নাম্বার থিওরির গভীর গাণিতিক ভিত্তি শিখতে দেখুন — এই কোর্সের ক্রিপ্টোগ্রাফি মডিউলের (M7) সহায়ক।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design ও Cybersecurity — সব এক জায়গায়।