agentleFS
NoorQureshiNoorQureshi/SploitAgent/skills/web/web-cache-deception/SKILL.md

web-cache-deception

Skill26 starsChanged 31 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

The file

Files
SKILL.md

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

  1. 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.
  2. Confirm caching: repeat and watch X-Cache/CF-Cache-Status flip to HIT, or a Age header appear. A cached, authenticated response is the vulnerability.
  3. 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.
  4. Explore delimiters/normalisation: caches and origins normalise ;, %2f, //, .., trailing dots differently — Param Miner's rules or manual fuzzing find the pair that splits them.
  5. 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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

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.