SQL Injection থেকে শুরু করে SSRF, IDOR, XXE, SSTI, OAuth Bypass — OWASP Top 10 ও তার বাইরে সব ওয়েব ভালনারেবিলিটি বিস্তারিত।
HTTP (HyperText Transfer Protocol) হলো ওয়েব ব্রাউজার ও সার্ভারের মধ্যে যোগাযোগের ভাষা। প্রতিটি ওয়েব Request ও Response একটি নির্দিষ্ট কাঠামো মেনে চলে।
তুমি browser-এ https://example.com/login লিখলে: CLIENT (Browser) SERVER │ │ │──── DNS Lookup ──────────────────→│ example.com = 93.184.216.34 │ │ │──── TCP Handshake (3-way) ───────→│ │←─── SYN-ACK ─────────────────────│ │──── ACK ────────────────────────→│ │ │ │──── TLS Handshake ──────────────→│ (HTTPS) │←─── Certificate + Session Key ───│ │ │ │──── HTTP GET /login ────────────→│ │←─── HTTP 200 OK + HTML ──────────│ │ │
| Method | কাজ | সিকিউরিটি প্রাসঙ্গিকতা |
|---|---|---|
GET | Data পড়া | URL-এ sensitive data → Log-এ থাকে, Cache হয় |
POST | Data পাঠানো | Form submit, Login — Body-তে data |
PUT | Resource আপডেট | Authorization ছাড়া থাকলে file overwrite |
DELETE | Resource মুছা | IDOR + DELETE = অন্যের data মুছা |
PATCH | আংশিক আপডেট | Mass Assignment সম্ভব |
OPTIONS | কী কী Method আছে? | অনুমতিপ্রাপ্ত Method জানা যায় |
HEAD | শুধু Header | Server তথ্য সংগ্রহ |
| Status Code | অর্থ | হ্যাকিং প্রাসঙ্গিকতা |
|---|---|---|
| 200 | OK — সফল | সফল request |
| 301/302 | Redirect | Open Redirect সম্ভব |
| 400 | Bad Request | Payload ভুল ফরম্যাটে |
| 401 | Unauthorized | Authentication দরকার |
| 403 | Forbidden | Access নেই — Bypass চেষ্টা করো |
| 404 | Not Found | Directory brute force-এ কাজে লাগে |
| 500 | Server Error | ⭐ Error message-এ সার্ভার তথ্য |
| 503 | Service Unavailable | DDoS সফল হয়েছে |
HTTP Stateless — প্রতিটি request আলাদা। Cookie ও Session ব্যবহার করে "কে login আছে" মনে রাখা হয়।
Login Process: Browser Server │ │ │──── POST /login ──────────────→│ │ username=admin&pass=1234 │ │ │ ✓ Valid credentials │←─── 200 OK ────────────────────│ │ Set-Cookie: session=abc123 │ ← Session তৈরি │ │ │──── GET /dashboard ───────────→│ │ Cookie: session=abc123 │ ← "আমি admin" │←─── 200 OK (Dashboard) ────────│ ← সার্ভার চিনতে পারল │ │ Session Hijacking: Hacker Cookie: session=abc123 পেলে → সরাসরি dashboard access!
| Flag | কাজ | না থাকলে ঝুঁকি |
|---|---|---|
HttpOnly | JavaScript দিয়ে পড়া যাবে না | XSS দিয়ে Cookie চুরি সম্ভব |
Secure | শুধু HTTPS-এ পাঠাবে | HTTP-তে Cookie intercept সম্ভব |
SameSite=Strict | অন্য সাইট থেকে পাঠাবে না | CSRF attack সম্ভব |
Expires | কতক্ষণ Valid | অনির্দিষ্টকাল valid থাকলে ঝুঁকি |
Path=/ | কোন path-এ পাঠাবে | সব path-এ cookie যায় |
Domain | কোন domain-এ | Subdomain-এও যেতে পারে |
| # | ভালনারেবিলিটি | উদাহরণ | বিপদের মাত্রা |
|---|---|---|---|
| A01 | Broken Access Control | IDOR, Privilege Escalation | Critical |
| A02 | Cryptographic Failures | HTTP, MD5 Password, Weak Cipher | Critical |
| A03 | Injection | SQL, NoSQL, Command Injection | Critical |
| A04 | Insecure Design | Business Logic Flaw | High |
| A05 | Security Misconfiguration | Default Creds, Open Admin | High |
| A06 | Vulnerable Components | Outdated Library/Plugin | High |
| A07 | Auth & Session Management | Weak Session, Brute Force | High |
| A08 | Software Data Integrity | Insecure Deserialization | High |
| A09 | Security Logging Failures | No logging, Log Injection | Medium |
| A10 | SSRF | Internal Service Access | Critical |
| Tool | কাজ | কখন ব্যবহার করবে |
|---|---|---|
| Proxy | Request intercept ও modify | সব সময় |
| Repeater | Request বারবার পাঠানো | SQLi, XSS manual testing |
| Intruder | Automated brute force | Fuzzing, Password attack |
| Scanner | Auto vulnerability scan | Quick initial scan (Pro) |
| Decoder | Encode/Decode | Base64, URL, HTML decode |
| Comparer | দুটো response তুলনা | Blind SQLi detect |
SQL Injection হলো এমন একটি আক্রমণ যেখানে ইনপুটের মধ্যে SQL কোড ঢুকিয়ে ডেটাবেসকে অন্যভাবে কাজ করানো হয়।
স্বাভাবিক Query: SELECT * FROM users WHERE username='admin' AND password='1234' ↑ ইউজার input এখানে যায় SQL Injection Input: admin' OR '1'='1 তৈরি হওয়া Query: SELECT * FROM users WHERE username='admin' OR '1'='1' AND password='xxx' ↑ সবসময় True! Result: সব user-এর data বের হয়ে আসে!
| Database | Version | Current DB | Tables | Sleep |
|---|---|---|---|---|
| MySQL | version() | database() | information_schema.tables | SLEEP(5) |
| MSSQL | @@version | db_name() | information_schema.tables | WAITFOR DELAY |
| Oracle | v$version | global_name | all_tables | DBMS_PIPE |
| PostgreSQL | version() | current_database() | information_schema.tables | pg_sleep(5) |
| SQLite | sqlite_version() | — | sqlite_master | — |
XSS হলো এমন একটি আক্রমণ যেখানে Malicious JavaScript কোড ওয়েবপেজে ইনজেক্ট করা হয় এবং ভিকটিম-এর ব্রাউজারে সেটি চলে।
Stored XSS এর প্রবাহ: Hacker Website Victim │ │ │ │──Comment এ Payload───→│ │ │ <script>steal()</script> │ │ │ Database-এ save হলো │ │ │ │ │ │←─── Page দেখতে চাই────│ │ │─── Page + Payload ────→│ │ │ │ ← Script চলে! │←──── Cookie পাঠাল ────────────────────────────│ │ (Cookie চুরি হলো!) │
IDOR (Insecure Direct Object Reference) মানে — object reference (যেমন user ID, file ID) পরিবর্তন করে অন্যের data access করা।
তুমি login করো: user_id = 1001
তোমার profile URL: https://target.com/profile?id=1001
IDOR Attack:
URL পরিবর্তন করো: https://target.com/profile?id=1002
→ অন্য user-এর profile দেখা যাচ্ছে!
https://target.com/profile?id=1 → Admin-এর profile!
https://target.com/invoice?id=99 → অন্য user-এর invoice!
একই role-এর অন্য user-এর data access
উদাহরণ: /profile?id=1002
কম সুবিধার account থেকে বেশি সুবিধায় যাওয়া
উদাহরণ: /admin/users
Attack Flow:
১. ভিকটিম bank.com-এ login করে আছে
(Browser-এ bank.com-এর Cookie আছে)
২. হ্যাকার evil.com তৈরি করে:
<img src="https://bank.com/transfer?to=hacker&amount=50000">
৩. হ্যাকার ভিকটিমকে evil.com-এর link পাঠায়
৪. ভিকটিম evil.com খুললে → Image load হয়
→ Browser bank.com-এ GET request পাঠায়
→ Cookie automatically যায়
→ Bank মনে করে ভিকটিম নিজেই request করেছে
→ টাকা চলে যায়!
SSRF হলো এমন একটি আক্রমণ যেখানে হ্যাকার সার্ভারকে দিয়ে অভ্যন্তরীণ বা বাহ্যিক URL-এ request করায়।
স্বাভাবিক ব্যবহার: User → Server → https://external-api.com SSRF Attack: Hacker → Server → http://169.254.169.254/ (AWS Metadata!) Hacker → Server → http://localhost:8080/admin (Internal Admin!) Hacker → Server → http://internal-db:5432/ (Database!) সার্ভার Internal Network-এ আছে → Firewall bypass!
JWT (JSON Web Token) হলো তিনটি অংশের একটি string: Header.Payload.Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoidXNlciJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
│──────────────────────────────────────│──────────────────────────────────────│────────────────────────────────────────────
Header (Base64) Payload (Base64) Signature (HMAC)
{alg:"HS256",typ:"JWT"} {user:"admin", role:"user"} HMAC-SHA256(header+payload, secret)
XML input process করার সময় External Entity reference দিয়ে সার্ভারের ফাইল পড়া বা SSRF করা।
Template Engine (Jinja2, Twig, Freemarker) এ user input render করলে code execution সম্ভব।
Object serialize করে পাঠালে, সেটা modify করে malicious object তৈরি করা যায়।
| Extension | কাজ | কখন ব্যবহার |
|---|---|---|
| Autorize | Access Control test | IDOR testing automation |
| JWT Editor | JWT modify করা | JWT Attack |
| CSRF Tester | CSRF token analysis | CSRF testing |
| Turbo Intruder | দ্রুত brute force | Rate limit bypass |
| SQLiPy | SQLmap integration | SQL Injection |
| Active Scan++ | Enhanced scanning | Auto vulnerability scan |
| Logger++ | Advanced logging | All traffic analysis |
| Param Miner | Hidden parameter | Reconnaissance |
🌐 "The web is full of vulnerabilities — learn to find them ethically."
এই গাইড সম্পূর্ণ শিক্ষামূলক।
Bug Bounty প্রোগ্রামে বা নিজের সাইটে প্র্যাকটিস করো।
🛡️ Hack Ethically. Report Responsibly. Stay Legal.