CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

exploit-deserialization

Insecure deserialization — RCE via malicious serialized objects in Java (ysoserial), PHP (PHPGGC), .NET (ysoserial.net), and Python (pickle). Covers gadget chain selection, payload generation, and injection into cookies, POST bodies, ViewState, and API endpoints.

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Critical

Do not install without reviewing

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/exploit/web/deserialization/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

77%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally actionable exploitation reference: executable commands, ordered procedures, explicit verification steps, and hard-won failure-mode guidance (cookie-gating checkpoint, SSRF body-control gotcha, custom-gadget pitfalls). Its weaknesses are repeated guidance across sections and a monolithic single-file structure that inlines advanced deep-dives which belong in separate reference files.

Suggestions

Move the multi-service SSRF+PHAR chain and the custom PHAR builder into one-level-deep reference files (e.g. references/phar-ssrf-chain.md, references/custom-gadget.md), keeping SKILL.md as identification signatures plus per-stack payload generation and the standard PHAR flow.

Deduplicate repeated passages: the endpoint-permutation rationale (stated in bash comments and again in 'Why permutation matters'), the two near-identical 'Generality' notes, and the upload/trigger wiring repeated across the standard, SSRF, and custom-builder sections.

Add injection examples for the .NET and Python sections (parity with the Java curl example) so all four stacks show generate-plus-deliver.

DimensionReasoningScore

Conciseness

Mostly dense, non-obvious expert material (PHAR stream-wrapper triggers, the SSRF body-control gotcha and workaround ladder, custom-gadget pitfalls like namespace-aware serialization and \x00*\x00 visibility encoding) that Claude largely does not already know. But there is more than minor trimmable material: the endpoint-permutation rationale appears both as bash comments and again in the "Why permutation matters" paragraph, the "Generality" note appears twice nearly verbatim, and the PHAR upload/trigger wiring is repeated across three sections. That fits anchor 3 ('could be tightened') better than anchor 4 ('minor instances').

3 / 5

Actionability

Fully executable, copy-paste-ready commands throughout: "phpggc -p phar -o exploit.phar Monolog/RCE6 system 'id > /tmp/pwn'", the complete heredoc PHP PHAR builder, the curl permutation loop with status/size output, ysoserial.net with concrete machineKey flags, and the pickle __reduce__ generator. The common cases (Java and PHP generate-plus-inject flows) are covered end to end with verification steps, matching anchor 5.

5 / 5

Workflow Clarity

Multi-step processes are explicitly sequenced with validation checkpoints and error-recovery loops: the auth-cookie checkpoint ("Replay with the gating cookie attached before concluding the chain or gadget is wrong", "Only then consider sink-side causes"), the ordered workaround ladder (1→5), "Verify execution via the chain's side-effect (file write, HTTP callback, DNS)", and signature verification via "php -d phar.readonly=0 -r '... getSignature()'". The pitfalls section covers silent-failure recovery, so the missing-validation cap does not apply.

5 / 5

Progressive Disclosure

Section headers are clear and well-ordered, but everything is inlined in a single ~296-line SKILL.md with no bundle files at all. The multi-service SSRF+PHAR chain (~110 lines) and the custom PHAR builder (~80 lines) are advanced deep-dives that belong in one-level-deep reference files. This fits anchor 3 ('content that should be separate is inline') rather than anchor 2, since structure is genuinely good, and not anchor 4, since the split is more than a minor organization gap.

3 / 5

Total

16

/

20

Passed

Description

75%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A highly specific, distinctive description that names concrete actions, tools, and delivery vectors across four language stacks. Its only weaknesses are that the description field itself lacks a 'use when' clause (trigger guidance is relegated to a separate when_to_use metadata field) and a few common synonyms are missing from the description text.

Suggestions

Append an explicit trigger clause to the description field itself, e.g. "Use when a request contains serialized data (pickle, rO0AB/aced0005 blobs, VIEWSTATE) or when the user mentions deserialization, unserialize, or gadget chains", so the description answers 'when' without relying on metadata.when_to_use.

Fold the strongest natural synonyms currently only in when_to_use (unserialize, marshalling, rO0/aced magic bytes) into the description string to round out keyword coverage.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "gadget chain selection, payload generation, and injection into cookies, POST bodies, ViewState, and API endpoints" — across four named stacks with their tools ("Java (ysoserial), PHP (PHPGGC), .NET (ysoserial.net), and Python (pickle)"). Coverage is comprehensive, so anchor 4's 'minor gaps in coverage' does not apply; this matches anchor 5.

5 / 5

Completeness

The 'what' is clear and comprehensive (RCE via malicious serialized objects, gadget chains, payload generation, injection vectors), but the description field contains no 'Use when...' clause or equivalent trigger guidance — the when-guidance lives only in the separate metadata.when_to_use field. Per the guideline that a missing 'Use when...' clause caps completeness at 3, this fits anchor 3 ('when' missing from the description) rather than anchor 4 (both present).

3 / 5

Trigger Term Quality

Strong natural terms: "deserialization", "pickle", "ysoserial", "PHPGGC", "ViewState", "gadget chain", "serialized objects" — exactly what a user would say. However, common variations like "unserialize", "serialize", "marshalling", and the rO0AB/aced0005 magic-byte terms appear only in the separate when_to_use metadata, not in the description field itself, so coverage is not comprehensive per anchor 5.

4 / 5

Distinctiveness Conflict Risk

"Insecure deserialization — RCE via malicious serialized objects" with tool-specific triggers (ysoserial, PHPGGC, pickle, ViewState) defines a clear niche with minimal overlap risk against adjacent web-exploitation skills; matches anchor 5.

5 / 5

Total

17

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

PurpleAILAB/Decepticon

Path

packages/decepticon/decepticon/skills/standard/exploit/web/deserialization/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.