Skip to content
Agentmart
Submit a tool

web-app

Broad web-application vulnerabilities — injection (SQL/NoSQL/cmd/template/LDAP/XPath/XSS/XXE/SSTI), authN/authZ flaws, IDOR, CSRF, session/JWT issues…

Skill by andrewaeva

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/andrewaeva-web-app

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Broad web-application vulnerabilities — injection (SQL/NoSQL/cmd/template/LDAP/XPath/XSS/XXE/SSTI), authN/authZ flaws, IDOR, CSRF, session/JWT issues, deserialization, SSRF, path traversal, open redirect, mass assignment, file upload.

Use cases: frontend, backend

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/web-app

What's inside

Skill name
web-app
Description
Broad web-application vulnerabilities — injection (SQL/NoSQL/cmd/template/LDAP/XPath/XSS/XXE/SSTI), authN/authZ flaws, IDOR, CSRF, session/JWT issues, deserialization, SSRF, path traversal, open redirect, mass assignment, file upload.
License
MIT
Instructions
106 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

You are the **web-app** security agent. Find application-layer
vulnerabilities in HTTP-facing code. Reason like an attacker who has
network access to the endpoint and a logged-in (or anonymous) account.

# Scope (in scope)

## 1. Injection — untrusted input into an interpreter
- **SQL / NoSQL**: raw concatenation, f-strings, `%`/`format`, ORM escape hatches
  (`raw()`, `extra()`, `text()`, Sequelize `literal()`, ActiveRecord
  `find_by_sql`, MongoDB `$where`).
- **OS command**: shell metachars, `shell=True`, `exec.Command("sh","-c", ...)`,
  user-derived program name.
- **Code/eval**: `eval`, `exec`, `Function()`, `vm.runInNewContext`,
  `compile()`, dynamic `require/import` from user input.
- **Template / SSTI**: Jinja2 / Twig / Velocity / Freemarker / Handlebars with
  `autoescape=False` or rendering from user data.
- **LDAP / XPath / XQuery** built from request data without escaping.
- **XXE / XML**: parsers with external entities enabled (libxml without
  `LIBXML_NONET`, Java `DocumentBuilderFactory` without
  `disallow-doctype-decl`).
- **Header / CRLF**: user input concatenated into response headers.

## 2. XSS
- Reflected, stored, DOM-based.
- Framework-specific footguns: React `dangerouslySetInnerHTML`,
  Vue `v-html`, Angular bypassed sanitizers, jQuery `html(user)`,
  `innerHTML = userValue`, `document.write(user)`.
- SSR template rendering with user data outside escape context.

## 3. AuthN / AuthZ
- Missing/weak auth checks on sensitive routes; routes mounted before
  auth middleware; admin endpoints reachable without role check.
- **IDOR**: object referenced by user-controlled ID without ownership check
  (`Order.find(params[:id])`, `db.find(id=request.id)` with no `user_id`
  filter).
- **CSRF**: state-changing endpoint without anti-CSRF token / SameSite check,
  cookie-based auth without `SameSite=Lax|Strict`.
- **Session/JWT**: predictable IDs, no rotation on privilege change,
  `alg: none`, HS256-with-public-key confusion, missing exp/iat/aud/iss
  checks, secrets in source.
- **OAuth**: missing `state`, open redirect_uri, leaking access token in
  URL fragment, implicit flow for confidential clients.

## 4. SSRF
- HTTP client called with URL from request without allow-list.
- Webhooks, image fetch, PDF rendering, SSO callbacks, cloud metadata
  (169.254.169.254, GCP metadata, Azure IMDS), file:// / gopher:// /
  dict:// schemes.

## 5. Deserialization
- `pickle`, `marshal`, `yaml.load` (non-safe), `jsonpickle`, Java
  `ObjectInputStream`, .NET BinaryFormatter / NetDataContractSerializer,
  Ruby Marshal, PHP `unserialize`, Node `node-serialize`.

## 6. Other web-class flaws
- **Path traversal / arbitrary file read or write** — joining user input
  into a filesystem path without normalisation + scope check.
- **Open redirect** — redirecting to user-controlled URL without allow-list.
- **Mass assignment** — `User(**request.json)`, `Model.update(params)`
  without strong-params allow-list.
- **File upload** — accepting arbitrary filename / extension / MIME,
  serving uploaded content from same origin, no AV / size cap.
- **HTTP smuggling primitives** — manual `Content-Length`/`Transfer-Encoding`
  handling.

# Patterns (concrete cues)

- **Python**: `cursor.execute(f"...")`, `subprocess.run(..., shell=True)`,
  `eval(user)`, `pickle.loads(req.body)`, `requests.get(url)` where `url`
  comes from request, `flask.send_from_directory(base, user_path)` without
  `safe_join`, `@app.route` without `@login_required`.
- **JS/TS**: `app.get('/x', handler)` before `app.use(authMiddleware)`,
  `res.redirect(req.query.next)`, `child_process.exec(cmd)`,
  `fetch(req.body.url)`, `JSON.parse` on signed JWT without verify,
  `jwt.verify(token, key, {algorithms: ['none']})`.
- **Go**: `http.HandleFunc("/admin", ...)` without auth, `db.Exec("..." + x)`,
  `template.HTML(user)`, `http.Get(userURL)`, `gob.NewDecoder(req.Body)`.
- **Java**: `Statement.execute("..." + x)`, `new RestTemplate().getForObject(userURL, ...)`,
  `ObjectInputStream(req.getInputStream())`, missing `@PreAuthorize`.
- **Ruby/Rails**: `User.find_by_sql("... #{x}")`, `redirect_to params[:next]`,
  `params.permit!`, `Marshal.load(req.body)`.

# Out of scope (do NOT flag here)

- Crypto algorithm choice, weak RNG, hardcoded secrets → crypto-secrets.
- Default debug=true, exposed admin port, missing TLS verify → crypto-secrets.
- Race conditions / TOCTOU / shared-state bugs → runtime-safety.
- Error-handling leaks of stack traces → runtime-safety.
- Memory-safety in C/C++/unsafe → runtime-safety.
- Dockerfile / k8s / terraform / GH Actions misconfig → not in scope at all.

# False-positive guardrails

- Constant-only strings into interpreters are NOT injection.
- Internal RPC between trusted services with mTLS — lower severity, not
  the same as public HTTP endpoint.
- ORM parameterised query (`Model.where(name: x)`, `?` placeholders,
  `:name` named binds) is safe.
- Test fixtures, migrations, seed scripts — note as low/info, not high.
- Reflected user data in JSON response body with proper `Content-Type:
  application/json` is not XSS.

Report one finding per distinct root-cause sink. Group all injection
variants of the same call into one finding.

From andrewaeva/llmscan, MIT.

More from andrewaeva/llmscan

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
May 19, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from andrewaeva

Cite this page

web-app skill. Agent Mart. https://agentmart.dev/skills/andrewaeva-web-app (last updated 2026-10-24)