web-cache-deception
Skill26 starsChanged 32 days agoMITView on GitHub
Trick a CDN/cache into storing a victim's authenticated response at a public URL, then read it. Load on "web cache deception", when a CDN/cache sits in front of an app that serves per-user content, or to test whether private pages can be cached. Signals: `X-Cache`/`CF-Cache-Status` headers, caching by file extension, static-looking suffixes on dynamic endpoints.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- NoorQureshi/SploitAgentword for word, first seen Oct 11, 2026
- NoorQureshi/security-skillsword for word, first seen Oct 11, 2026
- emre-guler/websectheir own version, first seen Aug 27, 2026
- conjure-3301/skillstheir own version, first seen Aug 17, 2026
- Kur1sulab/blackboxtheir own version, first seen Aug 12, 2026
- JustineDevs/premortemtheir own version, first seen Jun 9, 2026
Other versions7 projects use a version of this.
Word for word · 2
- NoorQureshi/security-skills★ 27100% same
- NoorQureshi/SploitAgent★ 26100% same
Edited · 0
None found.
Wrote their own version · 5
- yaklang/hack-skills★ 2.4ksame name
- Kur1sulab/blackbox★ 3same name
- emre-guler/websec★ 2same name
- JustineDevs/premortem★ 2same name
- conjure-3301/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository207 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ad-adcsSkill
- ad-dacl-abuseSkill
- ad-delegation-abuseSkill
- ad-kerberoastingSkill
- ad-pivot-arsenalSkill
- ai-agent-tool-abuseSkill
- ai-insecure-output-handlingSkill
- ai-jailbreakSkill
- ai-llm-dosSkill
- ai-mcp-securitySkill
- ai-model-extractionSkill
- ai-prompt-injectionSkill
- ai-rag-poisoningSkill
- ai-sensitive-data-disclosureSkill
- ai-supply-chainSkill
- ai-system-prompt-leakageSkill
- api-auth-attacksSkill
- api-bolaSkill
- api-fuzzingSkill
- api-graphqlSkill
- api-grpcSkill
- api-mass-assignmentSkill
- api-mongo-agg-facet-bypassSkill
- api-testing-checklistSkill
- api-versioningSkill
- automation-browserSkill
- automation-nuclei-templatesSkill
- automation-recon-pipelineSkill
- cloud-azureSkill
- cloud-container-escapeSkill
- cloud-docker-api-abuseSkill
- cloud-docker-registrySkill
- cloud-gcpSkill
- cloud-iam-privescSkill
- cloud-imds-ssrfSkill
- cloud-kubernetesSkill
- cloud-s3-exposureSkill
- code-review-cicdSkill
- code-review-cppSkill
- code-review-dangerous-sinksSkill
- code-review-dotnetSkill
- code-review-goSkill
- code-review-iacSkill
- code-review-javaSkill
- code-review-methodologySkill
- code-review-nodejsSkill
- code-review-phpSkill
- code-review-pythonSkill
- code-review-rubySkill
- code-review-rustSkill
- code-review-secrets-detectionSkill
- code-review-soliditySkill
- crypto-oracle-attacksSkill
- crypto-rsa-attacksSkill
- ctf-cryptoSkill
- ctf-forensicsSkill
- ctf-methodologySkill
- ctf-pwnSkill
- The first 60 shown.
The file
Files
Web cache deception
When it applies
A caching layer (CDN, reverse proxy) fronts an app that returns per-user content, and the cache decides what to store by URL pattern/extension. If you can make an authenticated response look cacheable, the cache stores it — and anyone can then fetch that victim's data.
Why it works
The cache and the origin disagree about the URL. The cache sees /account.css and thinks "static,
cache it"; the origin ignores the .css suffix (or a delimiter) and serves the dynamic
/account page. The victim's private response gets stored under a public key you can request.
Method
- Confirm the mismatch: request an authenticated page with a static suffix —
/account/foo.css,/account%0a.css,/account;foo.js,/account%2ffoo.css. If the origin still returns the account page (not 404), the origin is ignoring the suffix. - Confirm caching: repeat and watch
X-Cache/CF-Cache-Statusflip toHIT, or aAgeheader appear. A cached, authenticated response is the vulnerability. - Prove cross-user impact: as the victim, visit the crafted URL once (or have them); then as an unauthenticated attacker request the same URL and receive the victim's private data.
- Explore delimiters/normalisation: caches and origins normalise
;,%2f,//,.., trailing dots differently — Param Miner's rules or manual fuzzing find the pair that splits them. - Report with least data: prove one private field leaked; don't hoard victim data.
Gotchas
- This is not cache poisoning: deception caches a victim's real response; poisoning injects a
malicious response via unkeyed input. Different bug, different report (
web-cache-poisoning). - Needs a genuinely cacheable-looking key and an origin that ignores it — confirm both.
- Some CDNs cache by content-type, not extension — test path-based tricks too.
Verify success
An unauthenticated request retrieves another user's authenticated content from the cache
(HIT/Age present), reproducibly.
References
Omer Gil "Web Cache Deception"; PortSwigger web cache deception labs; CDN caching-rule docs.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

