
O Prime Kit de Ferramentas de Auditoria e Exploração de Falsificação de Solicitação entre Sites (CSRF).
XSRFProbe é um avançado Kit de Auditoria e Exploração de Cross Site Request Forgery (CSRF/XSRF). Equipado com um poderoso motor de rastreamento e inúmeras verificações sistemáticas, é capaz de detectar a maioria dos casos de vulnerabilidades CSRF, seus bypasses relacionados e gerar provas de conceito exploráveis para cada vulnerabilidade encontrada. Para mais informações sobre como o XSRFProbe funciona, veja Funcionamento Interno do XSRFProbe na wiki.
Wiki do XSRFProbe • Primeiros Passos • Uso Geral • Uso Avançado • Funcionamento Interno do XSRFProbe • Galeria
Origin: null), bem como bypasses de método-override e Content-Type.--max-urls, --max-depth e --crawl-timeout).Cada verificação executada pelo XSRFProbe tem um identificador único. O ID é mostrado na saída do console (ex.: [T6] VULNERABLE: ...) e armazenado como o campo test_id de cada descoberta no relatório JSON (junto com sua severity e, quando relevante, uma nota de exploitability em details), para que cada descoberta corresponda ao teste exato que a produziu.
As verificações
S*exigem a integração opcional com navegador headless (--browser). As verificaçõesT*/M*/R*/O*são verificações de nível HTTP controladas pelo motor de diff/benchmark de respostas.
Vamos ver alguns cenários reais do XSRFProbe em ação:
Para informações completas de uso, consulte as wikis — Uso Geral e Uso Avançado.
O XSRFProbe pode ser facilmente instalado com um único comando:
pip install xsrfprobe
pip install .
xsrfprobe --help
--browser, --auto-validate-poc) adicionalmente requerem o geckodriver disponível no seu PATH (ou apontado via --geckodriver-path).xsrfprobe-output. Nesta pasta você pode ver os logs detalhados e informações coletadas durante as varreduras (passe --json para um relatório legível por máquina).O XSRFProbe está atualmente na versão v3.0.0 e o trabalho é licenciado sob a Licença Pública Geral GNU (GPLv3).
Não use esta ferramenta em um site ao vivo!
Isso porque esta ferramenta foi projetada para realizar todos os tipos de submissões de formulários automaticamente, o que pode sabotar o site. Às vezes você pode danificar o banco de dados e provavelmente realizar um DoS no site também.
Teste em uma configuração/site descartável/de mentira!
O uso do XSRFProbe para testar sites sem consentimento mútuo prévio pode ser considerado uma atividade ilegal. É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. O autor não assume nenhuma responsabilidade e não se responsabiliza por qualquer uso indevido ou dano causado por este programa.
Este projeto é baseado inteiramente em minha própria pesquisa e minha própria experiência com aplicações web em ataques de Cross-Site Request Forgery. Você pode tentar examinar o código-fonte para entender como este kit foi construído. Pull requests úteis, ideias e problemas são bem-vindos. Se você deseja ver como o XSRFProbe está sendo desenvolvido, confira o Quadro de Desenvolvimento.
Feito com ♡ por @0xInfection
| ID | Categoria | Verificação |
|---|
D1 | Presença de token | Nenhum token anti-CSRF presente (falsificação de requisição genérica) |
D2 | Presença de token | Formulário de login sem token CSRF (login CSRF) |
T2 | Manipulação de token | Validação vinculada ao método de requisição (troca GET ↔ POST) |
T3 | Manipulação de token | Token pode ser omitido completamente |
T4 | Manipulação de token | Token não vinculado à sessão do usuário (replay entre sessões) |
T5 | Manipulação de token | Token vinculado a um cookie não-sessão (ex.: csrfKey) |
T6 | Manipulação de token | Cookie de duplo envio ingênuo (cookie == corpo, sem vínculo) |
T7 | Manipulação de token | Valor de token vazio aceito |
T8 | Manipulação de token | Token de cabeçalho personalizado pode ser omitido ou forjado |
M1 | Método / Content-Type | Sobrescrita de método HTTP via parâmetro _method |
M2 | Método / Content-Type | Sobrescrita de método HTTP via cabeçalho X-HTTP-Method-Override |
M4 | Método / Content-Type | Bypass de validação via Content-Type alternativo |
R0 | Referer | Cabeçalho Referer não validado no envio do formulário |
R1 | Referer | Validação de Referer ignorada ao omitir o cabeçalho |
R2a | Referer | Bypass de regex de Referer — alvo como subdomínio do atacante |
R2b | Referer | Bypass de regex de Referer — alvo na string de consulta |
R2c | Referer | Bypass de regex de Referer — alvo no caminho |
O1 | Origin | Validação de Origin ignorada com Origin: null |
O2 | Origin | Validação de Origin ignorada com truque de subdomínio |
O3 | Origin | Validação de Origin ignorada ao omitir o cabeçalho |
S2 | SameSite (navegador) | Bypass de SameSite=Strict via gadget de redirecionamento no lado do cliente |
S3 | SameSite (navegador) | Bypass de SameSite=Strict via XSS em um subdomínio irmão |
S4 | SameSite (navegador) | Bypass de SameSite=Lax via fluxo de cookie-refresh / OAuth |
C1 | Postura de cookie | Análise do atributo SameSite do cookie (None/Lax/Strict) |
C2 | Postura de cookie | Nenhum atributo SameSite definido nos cookies |
E1 | Força do token | Token usa uma codificação de hash fraca/estruturada |
A1 | Força do token | Análise de previsibilidade/forjabilidade do token pós-varredura |