Help us improve
Share bugs, ideas, or general feedback.
From cybersec-toolkit
Attack checklist for insecure deserialization in Java, PHP, .NET, Python. Covers sinks, ysoserial gadgets, magic methods, evasion. Use only for authorized security testing.
npx claudepluginhub 26zl/cybersec-toolkit --plugin cybersec-toolkitHow this skill is triggered — by the user, by Claude, or both
Slash command
/cybersec-toolkit:offensive-deserializationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **Skill Name**: insecure-deserialization
Analyzes insecure deserialization risks in Java, Python, PHP, Ruby, and .NET — focusing on RCE via ObjectInputStream, pickle, unserialize, Marshal.load, and YAML.load.
Hunts insecure deserialization vulnerabilities in Java, PHP, Python, .NET, and Ruby applications using gadget chains like ysoserial and phpggc. Critical for RCE exploitation.
Identifies and exploits insecure deserialization vulnerabilities in Java, PHP, Python, and .NET apps during authorized penetration tests. Uses ysoserial, PHPGGC, and Burp Suite to detect serialized data and achieve RCE.
Share bugs, ideas, or general feedback.
Insecure deserialization attack checklist: identifying deserialization sinks, Java/PHP/.NET/Python deserialization exploitation, ysoserial gadget chains, magic method abuse, and detection evasion. Use when testing deserialization endpoints or developing deserialization exploits.
Use this skill when the conversation involves any of:
deserialization, insecure deserialization, ysoserial, Java deserialization, PHP deserialization, .NET deserialization, pickle, gadget chain, magic method, ObjectInputStream
When this skill is active:
Happens when applications deserialize program objects without proper precaution. An attacker can then manipulate serialized objects to change program behavior and even execute code.
O:<len>:"Class":... (often Base64), PHAR archives (phar://)ac ed 00 05 or Base64 rO0; XMLDecoder/XStream flowsBinaryFormatter/SoapFormatter (unsafe/deprecated); Base64 AAEAAAD/////pickle opcodes; unsafe yaml.load without SafeLoaderYAML.load unsafe; use safe_loadObjectInputStream.readObject; enable ObjectInputFilter, disable Jackson default typing; use allowlistsunserialize(); file operations that dereference phar://BinaryFormatter; use System.Text.Jsonpickle for untrusted data; yaml.safe_loadnode-serialize, serialize-javascript, funcster with unsafe eval()encoding/gob with interface{} type confusionMarshal.load(), YAML.load() without safe_loadserde with YAML/bincode, ron (Rusty Object Notation)_$$ND_FUNC$$_ IIFE pattern
{"rce":"_$$ND_FUNC$$_function(){require('child_process').exec('whoami', function(error, stdout){console.log(stdout)});}()"}
{"_$$ND_FUNC$$_ or serialized function strings in cookies/tokensinterface{} types
// Vulnerable: accepts any type
var data interface{}
dec := gob.NewDecoder(buffer)
dec.Decode(&data)
interface{} allows unexpected typesgithub.com/vmihailenco/msgpack with custom decodersinterface{} for untrusted dataDeserialize implementationsserde_yaml with untrusted input can cause DoS via deeply nested structures#[serde(deny_unknown_fields)] and explicit type constraintsMarshal.load(): Gadget chains exist (e.g., Gem::Requirement, Gem::RequestSet)Ruby Marshal RCE (exploit scripts)pickle: Extensive gadget chains, __reduce__ magic method exploitationyaml.load(): Use yaml.safe_load() or yaml.load(data, Loader=yaml.SafeLoader)ysoserial - generates payloads for 30+ gadget chainsAdmissionReview objects
# Vulnerable consumer
msg = consumer.receive()
data = pickle.loads(msg) # Attacker controls msg
.gitlab-ci.yml with unsafe anchors/aliasesis_admin, role, user_id fields in session objectsysoserial, phpggc, ysoserial.net, Burp Deserialization Scanner, Semgrep rules for dangerous sinks, marshalsec, gadget inspectors.