Exploiting Insecure Deserialization
Overview
Cybersecurity skill for exploiting insecure deserialization. Follows industry best practices and security standards.
When to Use
Trigger phrases:
"exploiting insecure deserialization"
"Identifying and exploiting insecure deserialization vulnerabilities in Java, PHP"
During authorized penetration tests when applications process serialized data (cookies, API parameters, message queues)
When identifying Java serialization markers (ac ed 00 05 / rO0AB) in HTTP traffic
For testing PHP applications that use unserialize() on user-controlled input
When evaluating .NET applications using BinaryFormatter, ObjectStateFormatter, or ViewState
During security assessments of applications using pickle (Python), Marshal (Ruby), or YAML deserialization
When NOT to Use
- When you lack proper authorization for testing
- For production systems without change management
- When the task requires legal or compliance expertise beyond technical scope
Prerequisites
- Authorization: Written penetration testing agreement with RCE testing scope
- ysoserial: Java deserialization exploit tool (
git clone https://github.com/frohoff/ysoserial.git)
- ysoserial.net: .NET deserialization exploit tool (
git clone https://github.com/pwntester/ysoserial.net.git)
- PHPGGC: PHP deserialization gadget chain generator (
git clone https://github.com/ambionics/phpggc.git)
- Burp Suite Professional: With Java Deserialization Scanner extension
- Java Runtime: For running ysoserial
- Collaborator/interactsh: For out-of-band confirmation of code execution
Workflow
# Example: IOC detection
import re
IOC_PATTERNS = {
"ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",
"hash_md5": r"\b[a-f0-9]{32}\b",
"hash_sha256": r"\b[a-f0-9]{64}\b",
}
def extract_iocs(text: str) -> dict:
return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}
- Reconnaissance — Gather information about the target related to insecure deserialization. Identify attack surface.
- Vulnerability Identification — Enumerate potential insecure deserialization weaknesses using automated and manual techniques.
- Exploit Development/Selection — Choose or develop exploits targeting identified insecure deserialization vulnerabilities.
- Execution — Execute the insecure deserialization test in a controlled manner with proper authorization.
- Post-Exploitation — Document the impact and extent of successful exploitation.
- Reporting — Write detailed findings with reproduction steps, impact assessment, and remediation guidance.
Tools
- Vulnerability Scanner — Automated weakness identification
- Exploitation Framework — Controlled exploitation testing
- Reporting Tool — Findings documentation and tracking
Process
- Reconnaissance — Gather target information, identify attack surface, enumerate services
- Analysis/Exploitation — Execute the technique, analyze results, document findings
- Reporting — Document IOCs, write findings, provide remediation recommendations
Verification
Anti-Rationalization Table
| Rationalization |
Reality |
| "We are too small to be targeted" |
Automated attacks target everyone. Size does not matter. |
| "Security slows us down" |
A breach slows you down 100x more. Build security in from the start. |
| "We will fix it after launch" |
Vulnerabilities in production are exploited within hours. Fix before deploy. |
1---2name: exploiting-insecure-deserialization3description: Use when identifying and exploiting insecure deserialization vulnerabilities in Java, PHP, Python, and .NET applications to achieve remote code execution during authorized penetration tests. Use when working with exploiting insecure deserialization.4license: Apache-2.05---67# Exploiting Insecure Deserialization89## Overview1011Cybersecurity skill for exploiting insecure deserialization. Follows industry best practices and security standards.1213## When to Use14**Trigger phrases:**15- "exploiting insecure deserialization"16- "Identifying and exploiting insecure deserialization vulnerabilities in Java, PHP"171819- During authorized penetration tests when applications process serialized data (cookies, API parameters, message queues)20- When identifying Java serialization markers (`ac ed 00 05` / `rO0AB`) in HTTP traffic21- For testing PHP applications that use `unserialize()` on user-controlled input22- When evaluating .NET applications using `BinaryFormatter`, `ObjectStateFormatter`, or `ViewState`23- During security assessments of applications using pickle (Python), Marshal (Ruby), or YAML deserialization242526## When NOT to Use2728- When you lack proper authorization for testing29- For production systems without change management30- When the task requires legal or compliance expertise beyond technical scope313233## Prerequisites3435- **Authorization**: Written penetration testing agreement with RCE testing scope36- **ysoserial**: Java deserialization exploit tool (`git clone https://github.com/frohoff/ysoserial.git`)37- **ysoserial.net**: .NET deserialization exploit tool (`git clone https://github.com/pwntester/ysoserial.net.git`)38- **PHPGGC**: PHP deserialization gadget chain generator (`git clone https://github.com/ambionics/phpggc.git`)39- **Burp Suite Professional**: With Java Deserialization Scanner extension40- **Java Runtime**: For running ysoserial41- **Collaborator/interactsh**: For out-of-band confirmation of code execution4243## Workflow4445```python46# Example: IOC detection47import re4849IOC_PATTERNS = {50 "ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",51 "domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",52 "hash_md5": r"\b[a-f0-9]{32}\b",53 "hash_sha256": r"\b[a-f0-9]{64}\b",54}5556def extract_iocs(text: str) -> dict:57 return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}58```59601. **Reconnaissance** — Gather information about the target related to insecure deserialization. Identify attack surface.612. **Vulnerability Identification** — Enumerate potential insecure deserialization weaknesses using automated and manual techniques.623. **Exploit Development/Selection** — Choose or develop exploits targeting identified insecure deserialization vulnerabilities.634. **Execution** — Execute the insecure deserialization test in a controlled manner with proper authorization.645. **Post-Exploitation** — Document the impact and extent of successful exploitation.656. **Reporting** — Write detailed findings with reproduction steps, impact assessment, and remediation guidance.6667## Tools6869- **Vulnerability Scanner** — Automated weakness identification70- **Exploitation Framework** — Controlled exploitation testing71- **Reporting Tool** — Findings documentation and tracking727374## Process75761. **Reconnaissance** — Gather target information, identify attack surface, enumerate services771. **Analysis/Exploitation** — Execute the technique, analyze results, document findings781. **Reporting** — Document IOCs, write findings, provide remediation recommendations7980## Verification8182- [ ] All insecure deserialization procedures executed completely and documented83- [ ] Findings validated against multiple data sources84- [ ] False positives identified and filtered85- [ ] Results documented with evidence and timestamps86- [ ] Recommendations provided with risk-based prioritization8788## Anti-Rationalization Table8990| Rationalization | Reality |91|---|---|92| "We are too small to be targeted" | Automated attacks target everyone. Size does not matter. |93| "Security slows us down" | A breach slows you down 100x more. Build security in from the start. |94| "We will fix it after launch" | Vulnerabilities in production are exploited within hours. Fix before deploy. |