exploiting-client-side-template-injection

Detects and exploits client-side template injection in AngularJS, Vue, Mavo, and Alpine.js applications.

954|172|Updated Mar 13, 2026
One-click install
npx skills add https://github.com/xalgord/xalgorix --skill exploiting-client-side-template-injection
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: exploiting-client-side-template-injection
Source: https://github.com/xalgord/xalgorix/tree/main/internal/tools/skills/data/web-application-security/exploiting-client-side-template-injection
Command: npx skills add https://github.com/xalgord/xalgorix --skill exploiting-client-side-template-injection

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

During authorized web application penetration tests, classic XSS payloads are often blocked by filters and CSP, while template expressions like {{7*7}} slip through and execute arbitrary JavaScript. This Skill provides a systematic methodology to fingerprint frontend frameworks, confirm CSTI sinks, and weaponize version-specific payloads.

Core Features & Use Cases

  • Framework Fingerprinting: Identify AngularJS, Vue 2/3, Mavo, and Alpine.js sinks via directives like ng-app, v-html, x-data, and mv- attributes.
  • Version-Aware Payloads: Select the correct exploit for AngularJS sandbox escapes, Vue 3 render helpers, or Mavo non-JS expression syntax.
  • CSP and Filter Bypass: Execute JavaScript through the framework's own evaluator, bypassing script-src CSP and XSS filters.
  • Use Case: A search term reflected inside an AngularJS ng-app region renders {{7*7}} as 49; the tester then confirms code execution with a constructor.constructor payload and documents a verified XSS finding.

Quick Start

Test the reflected search parameter on the target page for client-side template injection and confirm whether template expressions are evaluated.

Frequently Asked Questions about exploiting-client-side-template-injection

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test for client-side template injection?

Reflect a probe like {{7*7}} into the input and check whether the page renders 49 instead of the literal string. If the expression is evaluated, the framework compiles your input as a template, confirming CSTI; then select a version-specific payload for code execution.

How to exploit CSTI in AngularJS versus Vue?

For AngularJS 1.6 and later, use {{constructor.constructor('alert(1)')()}} since the sandbox was removed. For Vue 2 use {{this.constructor.constructor('alert(1)')()}}, and for Vue 3 enumerate render helpers like _openBlock or _createBlock to reach .constructor.

Can client-side template injection bypass CSP?

Yes, CSTI often bypasses script-src CSP because execution happens through the framework's own evaluator rather than inline script tags. AngularJS ng-csp gadgets such as the orderBy filter payload can execute JavaScript without any inline script.

Why does {{7*7}} render literally instead of evaluating?

A literal render means the reflection lands in inert HTML, not a framework-compiled region. Check for directive or event sinks like ng-focus, v-html, or dynamic bindings, and note that Vue runtime-only builds do not compile arbitrary template strings client-side.

What tools detect AngularJS template injection automatically?

ACSTIS (angularjs-csti-scanner) crawls pages and selects version-aware AngularJS CSTI payloads with verification. Burp Suite and browser DevTools complement it by reflecting markers, fingerprinting framework versions, and observing payload execution.