Raw capture โ raw/security-skills-instavm.md
url: https://github.com/instavm/security-skills title: Security Skills for CLI Agents author: instavm date_fetched: 2026-07-18 date_published: 2025
A collection of 16 specialized security testing skills for AI coding agents (Claude Code, Gemini CLI, or any agent supporting MCP/Skills). Built from analysis of 4,000+ paid HackerOne bug bounty reports, each skill distills vulnerability-specific patterns into actionable grep/regex searches, curl test commands, severity ratings, and false positive guidance. Installable via npx skills add instavm/security-skills.
skills/
mitm-find-idor/SKILL.md โ Insecure Direct Object Reference (168 lines)
mitm-find-auth/SKILL.md โ Authentication & authorization issues (202 lines)
mitm-find-bizlogic/SKILL.md โ Business logic flaws (251 lines)
mitm-find-ssrf/SKILL.md โ Server-Side Request Forgery (230 lines)
mitm-find-sqli/SKILL.md โ SQL injection patterns (271 lines)
mitm-find-otp/SKILL.md โ OTP/2FA bypass (70 lines)
mitm-find-pii/SKILL.md โ PII exposure (61 lines)
mitm-find-secrets/SKILL.md โ Leaked secrets & API keys (63 lines)
mitm-find-callback/SKILL.md โ Payment callback/webhook issues (69 lines)
mitm-find-checksum/SKILL.md โ Checksum/integrity bypass (76 lines)
mitm-find-enumerable/SKILL.md โ Enumerable endpoints & IDs (66 lines)
mitm-find-insecure/SKILL.md โ Insecure configurations (60 lines)
mitm-find-referer/SKILL.md โ Referer header leakage (57 lines)
mitm-list-apis/SKILL.md โ API endpoint extraction from traffic (36 lines)
mitm-subdomains/SKILL.md โ Subdomain enumeration (56 lines)
mitm-security-audit/SKILL.md โ Comprehensive 8-step security audit checklist (73 lines)
mitm-report/SKILL.md โ Security vulnerability report generation (71 lines)
README.md โ Setup and usage guide (92 lines)
Total: ~1,830 lines across all SKILL.md files, plus README. No code โ this is a pure prompt-engineering artifact. Each skill is a self-contained markdown file with YAML frontmatter (name, description) followed by structured vulnerability detection guidance.
Every skill follows a consistent template:
1. YAML frontmatter with name and description (for skill registry integration)
2. Header with the skill's specific mission and $ARGUMENTS variable
3. Prerequisites block โ always mitmdump --set flow_detail=3 2>&1 | tee log.txt
4. High-value patterns โ vulnerability-specific grep patterns and real HackerOne bounty examples with source URLs
5. Vulnerability categories โ taxonomy with severity ratings (CRITICAL/HIGH/MEDIUM/LOW/INFO)
6. Testing methodology โ step-by-step curl/bash commands for reproducing findings
7. Structured output format โ template for each finding (endpoint, evidence, impact, remediation)
8. False positives โ explicit patterns to ignore, preventing over-reporting
Each skill is degenerately independent โ intentionally designed to work in complete isolation. There is no shared state, no vulnerability database, no cross-skill deduplication. The coordinating mitm-security-audit skill is a lightweight 73-line checklist that invokes the analysis patterns from individual skills sequentially, not a shared protocol layer.
This independence has a deliberate consequence: overlapping findings. An IDOR finding from mitm-find-idor may also appear as an auth finding from mitm-find-auth. The mitm-report skill stitches them together into a coherent report, but only at presentation time โ there is no programmatic deduplication.
All skills share a single common input: log.txt produced by mitmproxy's dump mode. The skills use grep and regex against this plain-text traffic log rather than parsing structured formats like HAR or mitmproxy's native flow files. This is a deliberate simplicity trade-off:
- Pro: Works with any text-based traffic capture, minimal dependencies, easy to explain
- Con: No structured access to request/response pairs, headers, or bodies; regex-based extraction is fragile and misses encoded/compressed content
The core innovation is the parameter vocabulary โ each skill encodes a curated list of parameter names that are likely to be associated with a specific vulnerability class. For example, IDOR parameters:
user_id, userId, user-id, uid, account_id, accountId
customer_id, customerId, member_id, memberId
profile_id, owner_id, creator_id, author_id
order_id, orderId, booking_id, bookingId, reservation_id
transaction_id, txn_id, payment_id, invoice_id
document_id, doc_id, file_id, attachment_id
These aren't generated โ they're distilled from 132 real HackerOne IDOR bounty reports. The skill encodes both the parameter name AND its typical location (path, query, body, header) and the ID encoding pattern (sequential, Base64, hex, UUID, short hash, padded).
The SQLi skill (271 lines, the longest) encodes database-specific payloads for four databases:
# MySQL: ' AND SLEEP(5)--
# PostgreSQL: '; SELECT pg_sleep(5)--
# MSSQL: '; WAITFOR DELAY '0:0:5'--
# Oracle: ' AND DBMS_PIPE.RECEIVE_MESSAGE('a',5)--
This isn't just a payload list โ it encodes the detection methodology: error-based (grep for database-specific error strings), time-based (measure response time with sleep payloads), boolean-based (compare true/false condition responses), and union-based (increment NULL columns to find column count).
The SSRF skill encodes an IP representation bypass table, not just target payloads:
http://127.0.0.1 โ http://2130706433 (decimal)
http://127.0.0.1 โ http://0x7f000001 (hex)
http://127.0.0.1 โ http://0177.0.0.1 (octal)
http://127.0.0.1 โ http://127.1 (short form)
http://localhost โ http://localtest.me (DNS bypass)
This is tactical knowledge from real SSRF exploitation, not academic taxonomy.
The business logic skill (251 lines, second-longest) encodes a different approach โ it can't rely on parameter vocabularies because business logic flaws are too varied. Instead it uses flow-based analysis: mapping financial flows (payment, checkout, redeem), verification flows (email, phone, OTP), and workflow state machines (step, stage, status), then prescribing parameter manipulation tests for each.
for i in {1..10}; do
curl -X POST 'https://target.com/api/redeem' -d '{"code":"PROMO123"}' &
done
wait
Simple but effective โ the skill encodes the test pattern (concurrent same-coupon redemption) along with the verification check ("was code redeemed multiple times?").
Unlike a vulnerability taxonomy or academic paper, each skill is structured as an operational playbook: grep pattern โ curl test โ severity label โ report template. There is no theoretical discussion of vulnerability classes, no OWASP references, no CVSS scoring. This sacrifices educational value for immediate utility โ an AI agent can execute the skill's instructions without understanding the underlying vulnerability class.
Using grep on log.txt rather than structured mitmproxy flow parsing is the project's defining technical choice. Benefits: universal input format, zero dependencies, works with any traffic capture tool that can produce text output. Costs: no structured access to headers, bodies, or request/response pairs; regex patterns can match false positives in response bodies or non-API content.
Each skill works alone. There's no library, no shared vulnerability database, no cross-skill deduplication. This means installing 16 skills costs 16ร the context for overlapping coverage, but also means any single skill works without the others โ the user installs only what they need.
The report skill (mitm-report) relies on the AI agent to synthesize findings across skills, deduplicate, and prioritize โ it provides only a template, not a programmatic merge algorithm. This is a bet that the LLM will do a reasonable job at synthesis without explicit coordination logic.
The fundamental architecture addresses the context problem by specialization: rather than loading 4,000 bug reports into context, each skill is a focused 50-270 line prompt. The trade-off is that comprehensive coverage requires running multiple skills sequentially, each in its own context window, and the agent must carry findings forward manually.
The project occupies a unique niche: it's not a framework, runtime, or scanner โ it's a knowledge transfer mechanism that encodes human security expertise into LLM-consumable prompts. The "4,000+ HackerOne reports" is the moat โ the skills encode patterns that are only learnable from large-scale bounty report analysis, not from reading documentation or academic papers.