CtrlK
BlogDocsLog inGet started
Tessl Logo

hunt-ssti

Hunt server-side template injection (SSTI) across Jinja2 (Flask/Django), Twig (Symfony), Freemarker (Java), ERB (Rails), Spring, Velocity, Mako, Thymeleaf, Smarty. Detection probes use double-curly and dollar-curly math expressions evaluated server-side. Once an engine is fingerprinted, escalate to RCE via the engine-specific class-walker, callback-registrar, or Execute-utility patterns documented in disclosed reports. Detection patterns: error messages reveal engine, blank or numeric eval reveals expression mode. Targets: email templates, PDF/report generators, CMS preview features, error pages with user input. Use when hunting RCE via template rendering, when content shows engine fingerprints, when finding endpoints that compose strings with user input before render.

76

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Critical

Do not install without reviewing

SKILL.md
Quality
Evals
Security

Quality

Content

88%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is highly actionable with executable per-engine payloads and a clear attack sequence including a preview→iterate feedback loop and a proof checkpoint. Its main weaknesses are mild payload duplication across sections and a self-contained structure that could offload the engine-specific payload trees to reference files.

Suggestions

De-duplicate the Jinja2 RCE payload: define it once and reference it from the priority and Related Skills sections instead of repeating the full expression three times.

Move the per-engine payload matrices and WAF-bypass variants into a references/ file (e.g. PAYLOADS.md) and link to it from the body, improving progressive disclosure and token efficiency.

Consolidate the parallel 'Autonomous Testing Priority' and '14. SSTI' sections into a single ordered workflow so the escalation sequence and detection matrix live in one place.

DimensionReasoningScore

Conciseness

Largely lean with concrete payloads and minimal preamble, but the Jinja2 RCE payload ('{{config.__class__.__init__.__globals__[\'os\'].popen(\'id\').read()}}') is repeated across the priority, RCE-payload, and related-skills sections, and the Related Skills block re-states chain primitives. It is not the 5 anchor because not every token earns its place; not the 3 anchor because the prose is mostly tight and assumes competence.

4 / 5

Actionability

Copy-paste-ready payloads for Jinja2, Twig, ERB, and Freemarker, plus concrete protocol guidance (Content-Type: application/x-www-form-urlencoded, keeping the id as a query param, csrf/template/template-action body fields). Specific examples cover the common engine cases. Not the 4 anchor because guidance is fully executable with the key request-shape details filled in.

5 / 5

Workflow Clarity

The 'Order of attack' gives a clear numbered escalation sequence, and the CMS section includes an explicit feedback loop ('Re-fetch the CSRF each time and use preview to iterate') with a validation checkpoint ('Proof: Command output ... confirms RCE'). The destructive-RCE validation cap does not apply because proof steps are present. Not the 4 anchor because both a sequence and error-recovery feedback loop are explicit.

5 / 5

Progressive Disclosure

Well-organized with clear section headers and no nested references, and the Related Skills section clearly signals sibling skills. It is not the 5 anchor because the content is a self-contained ~100-line body with no one-level-deep bundle references (references/, scripts/, assets/ are absent), and the engine payload matrices / WAF-bypass variants are inlined rather than split into reference files. Not the 3 anchor because structure and signaling are good, not merely present.

4 / 5

Total

18

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is strong: it states concrete detection and escalation actions, enumerates engine synonyms, and provides explicit 'Use when' triggers covering both what and when. It is somewhat dense and jargon-heavy, but every clause earns its place for the target security-testing audience.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — detection probes ('double-curly and dollar-curly math expressions'), engine fingerprinting, and RCE escalation via named patterns ('class-walker, callback-registrar, or Execute-utility') — with comprehensive engine coverage. It is not the 4 anchor because coverage spans detect→fingerprint→escalate rather than having minor gaps.

5 / 5

Completeness

Explicitly answers both 'what' (hunt/detect/fingerprint/escalate SSTI across engines) and 'when' with concrete trigger phrases ('Use when hunting RCE via template rendering, when content shows engine fingerprints, when finding endpoints that compose strings with user input before render'). Not the 4 anchor because the 'when' clause gives multiple specific triggers rather than one that could be more explicit.

5 / 5

Trigger Term Quality

Comprehensive natural terms for the skill's audience — 'template injection', 'SSTI', 'RCE', plus engine/framework synonyms (Jinja2/Flask/Django, Twig/Symfony, Freemarker/Java, ERB/Rails) and concrete targets ('email templates', 'PDF/report generators', 'CMS preview features'). Not the 4 anchor because synonyms are covered broadly rather than missing a few.

5 / 5

Distinctiveness Conflict Risk

Occupies a clear niche (server-side template injection with engine-specific payloads) with distinct triggers unlikely to fire for unrelated skills. Not the 4 anchor because overlap risk with sibling hunting skills is minimal — the template-engine framing is uniquely identifying.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
elementalsouls/Claude-BugHunter
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.