Vulnerability Analysis
CVE database, CVSS scoring, automated scanner, এবং ম্যানুয়াল vulnerability research — কোনটা exploitable তা খুঁজে বের করা।
বাস্তব জীবনের উদাহরণ
একজন বিল্ডিং ইনস্পেক্টর প্রতিটি দেয়াল ভেঙে দেখার চেষ্টা করেন না — তারা structural failure-এর একটি পরিচিত ক্যাটালগের সাথে মিলিয়ে দেখেন। Vulnerability analysis একই: scanning-এ যা পেয়েছেন তা known দুর্বলতার একটি database-এর সাথে মিলিয়ে দেখা।
গল্পে বুঝি
ফাতিমা আল-ফিহরি একটা পুরনো বাড়ি কেনার আগে ইবনে সিনাকে ডাকলেন — পেশায় একজন structural surveyor। ইবনে সিনা পুরো বাড়ি ঘুরে ঘুরে প্রতিটা ফাটল খাতায় লিখলেন: রান্নাঘরের দেয়ালে সরু চুলের মতো একটা দাগ, বসার ঘরের রঙে হালকা চিড়, আর ছাদ ধরে রাখা মাঝের মোটা পিলারে একটা ফাটল। কিন্তু তালিকা বানিয়েই তিনি থামলেন না — প্রতিটার পাশে লিখলেন এটা আসলে কতটা বিপজ্জনক।
রঙের ওপরের চুল-ফাটলটা cosmetic, রঙ করলেই ঢেকে যাবে, বাড়ির কোনো ক্ষতি নেই। কিন্তু load-bearing পিলারের ফাটলটা আলাদা — ওটা বেড়ে গেলে গোটা ছাদ ধসে পড়তে পারে। তাই ইবনে সিনা ফাতিমাকে পরিষ্কার বললেন, টাকা আর সময় আগে পিলারের ফাটলে ঢালো, রঙের দাগ পরে দেখলেও চলবে। আর একটা জায়গায় দেয়ালে পানির দাগ দেখে যেটাকে ফাটল মনে হচ্ছিল, সেটা কাছে গিয়ে টোকা দিয়ে বুঝলেন ওটা নিছক ভেজা দাগ — ফাটল নয়। ওটা নিয়ে ফাতিমাকে অযথা আতঙ্কিত করলেন না।
এই গল্পটাই আসলে vulnerability analysis। প্রতিটা ফাটল খাতায় তোলা হলো সব দুর্বলতা খুঁজে বের করা; cosmetic বনাম load-bearing হিসেবে রেটিং করা হলো কোনটা আসলে exploitable আর কতটা impact ফেলবে সেই অনুযায়ী prioritise করা; আগে পিলার সারানো হলো risk-based remediation — যেটা সত্যিই বিপজ্জনক সেটা আগে ফিক্স করা; আর পানির দাগকে ফাটল না ভাবা হলো false positive ফিল্টার করা, যেটা দেখতে দুর্বলতার মতো কিন্তু আসলে exploitable নয়। বাস্তবে ঠিক এই রেটিংটাই দেয় CVSS — 0 থেকে 10 স্কেলে severity স্কোর — যাতে অগুনতি finding থেকে আপনি জানেন কোন risk আগে সামলাতে হবে।
CVE সিস্টেম
প্রতিটি পাবলিকলি প্রকাশিত vulnerability একটি CVE (Common Vulnerabilities and Exposures) identifier পায়:
CVE-YEAR-NUMBER
CVE-2021-44228 → Log4Shell (Log4j RCE)
CVE-2017-0144 → EternalBlue (SMB RCE)
CVE-2019-0708 → BlueKeep (RDP RCE)
CVE-2014-0160 → Heartbleed (OpenSSL info disclosure) কোথায় সার্চ করবেন:
nvd.nist.gov— National Vulnerability Database (authoritative)cve.mitre.org— CVE listexploit-db.com— CVEs with working exploitsvulhub.org— Docker-based vuln labscvedetails.com— searchable CVE database
CVSS Scoring
CVSS (Common Vulnerability Scoring System) 0-10 পর্যন্ত একটি severity score দেয়। কাজ prioritize করতে এবং রিপোর্ট লিখতে এটি বুঝুন।
Score Range → Severity
0.0 → None
0.1 – 3.9 → Low
4.0 – 6.9 → Medium
7.0 – 8.9 → High
9.0 – 10.0 → Critical CVSS v3 Base Score-এর কম্পোনেন্ট:
Attack Vector (AV):
Network (N) → exploitable remotely → higher score
Adjacent (A) → same network segment required
Local (L) → requires local access
Physical (P) → requires physical access → lower score
Attack Complexity (AC):
Low (L) → no special conditions required → higher score
High (H) → specific conditions required
Privileges Required (PR):
None (N) → no auth needed → higher score
Low (L) → standard user auth
High (H) → admin auth required
User Interaction (UI):
None (N) → no user action needed → higher score
Required (R) → user must click/open something
Scope (S):
Unchanged (U) → only the vulnerable component is affected
Changed (C) → other components can be affected → higher score
CIA Impact:
High/Low/None for each of Confidentiality, Integrity, Availability উদাহরণ: Log4Shell (CVE-2021-44228)
AV:N / AC:L / PR:N / UI:N / S:C / C:H / I:H / A:H
Score: 10.0 — Critical
Reason: Remotely exploitable, no auth, no user interaction, full system compromise Exploit খোঁজা
# SearchSploit — offline exploit-db search (ships with Kali)
searchsploit apache 2.4.29
searchsploit vsftpd 2.3.4
searchsploit --id "phpMyAdmin" # show CVE IDs
# Copy exploit to current dir
searchsploit -m exploits/linux/remote/17491.rb
# Update database
sudo apt update && sudo searchsploit -u
# Online searches
# exploit-db.com
# github.com/search?q=CVE-2021-44228+poc
# packetstormsecurity.com # Find Metasploit modules for a CVE
msfconsole
msf6> search CVE-2017-0144
msf6> search type:exploit name:vsftpd
msf6> search eternalblue Automated Vulnerability Scanner
OpenVAS (ফ্রি)
# Install and start
sudo apt install openvas
sudo gvm-setup # initial setup (takes 20+ min)
sudo gvm-start
# Access web UI
firefox https://127.0.0.1:9392
# Default: admin / (password shown during setup)
# CLI scan
gvm-cli socket --gmp-username admin --gmp-password PASS \
--xml "<create_target><name>Target</name><hosts>192.168.1.100</hosts></create_target>" Nessus (কমার্শিয়াল, হোম ব্যবহারের জন্য ফ্রি)
Nessus Essentials — 16টি IP পর্যন্ত ফ্রি:
# Download from tenable.com
# Install the .deb
sudo dpkg -i Nessus-*.deb
sudo systemctl start nessusd
firefox https://localhost:8834 Nmap-কে Vulnerability Scanner হিসেবে
# Run all vuln scripts
sudo nmap --script vuln 192.168.1.100
# Specific vulnerability checks
sudo nmap --script smb-vuln-* 192.168.1.100 -p 445
sudo nmap --script http-shellshock 192.168.1.100 -p 80
sudo nmap --script ssl-heartbleed 192.168.1.100 -p 443
# HTTP vulnerability checks
sudo nmap --script http-sql-injection,http-csrf,http-dombased-xss 192.168.1.100 -p 80 ম্যানুয়াল Vulnerability Research
Automated scanner logic flaw মিস করে। ম্যানুয়াল অ্যানালাইসিস তাই খুঁজে পায় যা টুল পারে না।
Version → CVE Workflow
# Step 1: Identify exact versions from scanning
# Apache/2.4.29 (Ubuntu) from HTTP header
# OpenSSH 7.4 from SSH banner
# vsftpd 2.3.4 from FTP banner
# Step 2: Search for known vulnerabilities
searchsploit apache 2.4.29
# Results show CVE-2017-7679, CVE-2017-7668 — check if applicable
# Step 3: Read the CVE, understand the conditions
# CVE-2017-7679: mod_mime buffer overread — requires mod_mime enabled
curl -I http://192.168.1.100 # does response suggest mod_mime?
# Step 4: Test the exploit in your lab first
# Never run untested exploits on a production engagement
# Step 5: Document your finding
# Title, CVE, CVSS score, evidence of vulnerability, proof of concept, remediation Exploit-DB POC কোয়ালিটি টিয়ার
সব exploit কোড সমান নয়:
1 — Works as-is, tested, reliable
2 — Works with minor modification (adjust IP, port, path)
3 — Conceptual, needs significant development
4 — False positive, doesn't actually work
Read the code before running it. Scripts from exploit-db can be:
- Poorly written and crash the target
- Actually backdoored (rare but real)
- Outdated and need updating for modern versions Service অনুযায়ী সাধারণ Vulnerability
Web Applications
SQL Injection → CVSS 9.8 (often critical)
RCE via deserialization → CVSS 9.8
XXE injection → CVSS 7.5
SSRF → CVSS 7.2 (can become critical via cloud metadata)
IDOR → CVSS 6.5 (horizontal privilege escalation)
XSS (stored) → CVSS 6.1
Open redirect → CVSS 4.3 Infrastructure
Unauthenticated Redis → CVSS 9.8 (often leads to RCE)
Default credentials → CVSS 9.8
EternalBlue (MS17-010) → CVSS 9.8
BlueKeep (RDP RCE) → CVSS 9.8
Heartbleed (SSL) → CVSS 7.5
Shellshock (bash) → CVSS 9.8 Vulnerability Matrix তৈরি
অ্যানালাইসিসের পর, exploitation-এ যাওয়ার আগে একটি prioritized matrix বানান:
| # | Host | Port | Service | Vulnerability | CVE | CVSS | Confidence | Priority |
| --- | ---- | ---- | ------------- | ------------- | -------------- | ---- | ---------- | -------- |
| 1 | .100 | 21 | vsftpd 2.3.4 | Backdoor | CVE-2011-2523 | 10.0 | High | P1 |
| 2 | .100 | 445 | Samba | EternalBlue | CVE-2017-0144 | 9.8 | High | P1 |
| 3 | .100 | 80 | Apache 2.4.29 | HTTP/2 dos | CVE-2018-1333 | 7.5 | Medium | P2 |
| 4 | .100 | 22 | OpenSSH 7.4 | User enum | CVE-2018-15473 | 5.3 | High | P3 | আগে P1 টার্গেট exploit করুন, সবকিছু ডকুমেন্ট করুন, তারপর কম-priority finding-এ যান।
Responsible Disclosure
অনুমোদিত টেস্টিংয়ের সময় vulnerability খুঁজে পেলে:
- proof of concept সহ finding ডকুমেন্ট করুন (screenshot, request/response)
- critical হলে সাথে সাথে রিপোর্ট করুন (active exploitation ঝুঁকি)
- proof of concept-এর বাইরে exploit করবেন না — “vulnerable” পর্যন্ত থামাই সাধারণত যথেষ্ট
- কখনো রিয়েল ডেটা exfiltrate করবেন না — আসল রেকর্ড নয়, একটি screenshot নিন
স্বাধীনভাবে আবিষ্কৃত vulnerability-র public disclosure-এর জন্য:
- আগে ভেন্ডরের সাথে ব্যক্তিগতভাবে যোগাযোগ করুন (security@vendor.com বা HackerOne/Bugcrowd)
- patch-এর জন্য 90 দিন সময় দিন (coordinated disclosure)
- patch available হলে তারপর প্রকাশ করুন