Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
dynast-bench — A DAST benchmark of intentionally-vulnerable apps with ground-truth answer keys for scoring scanners | Kitploit
उपकरण/GitHubGitHub/j3ssie/dynast-bench
Vulnerability ScannersWeb Vulnerability ScannersAPI Security TestingPenetration TestingLearning & EducationCurated ResourcesLabs & Practice
GitHubj3ssie/dynast-bench

dynast-bench

A DAST benchmark of intentionally-vulnerable apps with ground-truth answer keys for scoring scanners

रिपॉजिटरी देखें
4721 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
अनुरोधित भाषा में सामग्री उपलब्ध नहीं है। अंग्रेज़ी संस्करण दिखाया जा रहा है।

DynAST-Bench

A DAST benchmark of intentionally-vulnerable apps with ground-truth answer keys for scoring scanners.

⚠️ This repository contains DELIBERATELY INSECURE applications. They exist only to benchmark security tooling - DAST scanners, SAST engines, and LLM security agents. Every app binds to 127.0.0.1, ships a LOUD banner, and holds no real data. Never deploy any of this on a public network.

A suite of 19 intentionally-vulnerable apps, one per stack, each with a documented, machine-checkable ground truth. The point is to measure how well a scanner or agent (a) finds the planted bugs, (b) ignores the safe near-miss code sitting right next to them, and (c) doesn't hallucinate findings on the patched twin.

The apps at a glance

19 apps · 549 planted vulnerabilities · 146 near-misses · 546 runnable PoCs · 594 cataloged endpoints. Every app boots on 127.0.0.1:13311, ships a vuln/+safe/ twin pair and a single-image build. prints this table live; prints its endpoint catalog.

--solo
dynast-bench list
dynast-bench surface <app>
AppStackDatastoreVulnsNear-missDocs
aspnetC# / ASP.NET Core Razor PagesSQL Server2812plan
fastapiPython / FastAPI + Jinja2Postgres265plan
ginGo / GinPostgres127readme
golangGo / chiPostgres264plan
graphqlNode / GraphQL 16 API-onlyPostgres316plan
jspJava / JSP + Servlets (Tomcat)Postgres286plan
laravelPHP 8.3 / Laravel 11 + BladeMySQL257plan

Extra sidecars per stack (Mailpit, MinIO, Redis, Jenkins, Prometheus, Ollama, …) are listed in The apps below.

The per-stack design docs live in benchmark-plans/ - start there for the full vulnerability catalog of each app. This README is the operational guide: how the repo is laid out and how to run and score an app.

Vulnerability classes covered

Every planted bug carries a CWE and an OWASP category. Rolled up by class - each bug counted once, under its primary CWE - the planted bugs break down roughly as (rollup last regenerated at 480 bugs; per-app counts above are current):

ClassCWEsBugsApps
Sensitive data exposure (errors, logs, debug endpoints, backups, source)200, 209, 489, 524, 532, 538, 540, 5483916
Default / hardcoded / leaked credentials321, 522, 798, 1104, 13923818
Missing or broken authorization (BFLA, vertical + horizontal)269, 284, 285, 668, 862, 8633718
Cross-site scripting (reflected · stored · DOM)792816
Authentication bypass · weak session · JWT verification287, 288, 290, 306, 347, 384, 613, 614, 13852813
SQL injection (incl. second-order, ORDER BY, NoSQL)89, 9432717
Proxy / parser interpretation conflicts (path confusion, header trust)345, 348, 349, 436, 441, 693, 697, 706, 8072710
SSRF (incl. blind, redirect chains, internal-only sinks)9182017
IDOR / BOLA (user-controlled object key)6391917
Path traversal · LFI/RFI · zip slip22, 981916
Mass assignment / over-posting · prototype pollution915, 13211816
Brute force · missing rate limiting · resource exhaustion307, 400, 406, 674, 7701711
Business-logic, pricing and quota abuse625, 8401514
OS command / argument injection781412
Insecure deserialization (pickle · PHP · Java · YAML)470, 5021411
CORS misconfiguration94214

By OWASP category (2021 Top 10 for the web apps, API Top 10 2023 where the app is API-only):

OWASPBugsOWASP APIBugs
A01 Broken Access Control118API8 Security Misconfiguration21
A03 Injection89API5 Broken Function Level Authorization6
A05 Security Misconfiguration72API1 Broken Object Level/Property Authorization4
A07 Identification & Authentication Failures65API2 Broken Authentication4
A04 Insecure Design34API7 Server Side Request Forgery4
A08 Software & Data Integrity Failures17API9 Improper Inventory Management3
A10 SSRF15API3 Broken Object Property Level Authorization2
A02 Cryptographic Failures15API4 Unrestricted Resource Consumption2
A09 Logging & Monitoring Failures4API6 Unrestricted Access to Sensitive Business Flows1
A06 Vulnerable & Outdated Components3API10 Unsafe Consumption of APIs1

Two non-web tracks sit alongside these: the network app plants 32 host/port and service-level findings for network scanners, and the two LLM apps (llmchat, llmagent) plant prompt-injection, tool-abuse and RAG-poisoning bugs scored on a separate injection-channel track.

Each bug is also tagged with a detection difficulty (118 E, 68 E-M, 202 M, 61 M-H, 100 H), a taint distance (351 in-file, 83 cross-file, 87 cross-service, 28 config) and a reachability (368 pre-auth, 181 user), so recall can be broken down along each of those axes instead of reported as one number. The per-app catalogs live in benchmark-plans/.

Repository structure

root@kitploit:~
dynast-bench/
├── README.md             # you are here - overview, safety, run/score guide
├── examples/             # ready-to-score findings/v1 + endpoints/v1 files
├── Makefile              # top-level runner: list / run / verify / validate / solo any app
├── benchmark-plans/      # per-stack design docs (the vulnerability catalogs)
├── dynast-bench/           # the `dynast-bench` CLI + scorer (Bun/TS)
└── vulnerable-apps/      # the 19 apps - each a separated, self-contained folder
    ├── _template/        # skeleton; copy it to start a new app
    ├── fastapi/  golang/  nextjs/  nestjs/  springboot/
    └── rails/  wordpress/  php/  jsp/  aspnet/  ...

Running apps (dynast-bench CLI)

The CLI is the easiest way to drive the suite - it health-gates boots, arbitrates the shared ports, and speaks --json so a scanner harness can consume it. Needs Bun 1.2+ and Docker.

root@kitploit:~
make install                             # compile the CLI + link it into ~/.bun/bin
                                         # (BIN_DIR=/somewhere/else to pick the dir)

dynast-bench list                        # every app: vulns, PoCs, near-misses, what's up
dynast-bench vulns nextjs                # the planted bugs as a checklist, one title each
                                         # (--full · --near · --ids for a coverage diff)
dynast-bench start nextjs                # build + boot, wait for health, print the URL
dynast-bench verify nextjs               # run the ground-truth PoCs (expect all exploitable)
dynast-bench validate nextjs             # twin loop: vuln all-exploitable → safe all-fixed
dynast-bench status                      # variant, mode, target, health
dynast-bench stop --all                  # stop everything
dynast-bench clean --all --images --yes  # reclaim containers, volumes, networks, images

dynast-bench start nextjs --variant safe # the patched twin (false-positive run)
dynast-bench start --count 5 --parallel  # 5 apps at once, one port each + a summary table
dynast-bench start --all --solo --parallel   # whole fleet, one image + port each
dynast-bench run nextjs -- my-scanner --url '$TARGET'   # start → scan → stop

Full reference: dynast-bench/README.md.

Ports

Everything lives in a quiet slice of the ephemeral range, so the suite doesn't fight the usual 3000/8000/8080/5432 crowd - and every app owns a fixed port, so a URL always means the same app, alone or in a batch of five:

rangewhat
13311–13339the app under test - the URL you point a scanner at, one port per app in list order (aspnet 13311, fastapi 13312, … nextjs 13322)
13340–13484that app's sidecars (mailpit, phpMyAdmin, Jenkins, Prometheus, …), 5 apiece
13500–13599relocation pool

dynast-bench list is the map. If anything is already listening on a port an app owns, dynast-bench start leaves it alone and publishes that one service from the relocation pool instead, then prints (and --json-reports) the real URL. Nothing ever binds beyond 127.0.0.1. dynast-bench doctor shows which app ports are free; make targets don't relocate and publish the compose defaults (13311+) one app at a time, honouring DYNAST_PORT=<n>; --port N pins it.

Running apps (top-level Makefile)

The Makefiles remain the low-level contract and work standalone:

root@kitploit:~
make list                  # show all apps (a [solo] tag = has a single-image build)
make run APP=nextjs        # start via compose (app + datastores)
make verify APP=nextjs     # run its ground-truth PoCs (expect all exploitable)
make validate APP=nextjs   # full twin loop: vuln all-pass -> safe all-fixed
make down APP=nextjs        # stop it
make solo APP=nextjs       # run as ONE self-contained image - no compose needed
make solo-down APP=nextjs  # stop the standalone image
# shorthands: make run-nextjs   make validate-nextjs

Two ways to run every app:

  • Compose (make run) - the canonical multi-service topology the ground truth targets (app + Postgres/Redis/etc. as separate containers).
  • Standalone (make solo) - one self-contained image per app (vuln/Dockerfile.standalone) with the datastores + an internal SSRF sink embedded, so docker build + docker run works with no compose. Behaviour and PoCs are identical (compose service names are aliased to 127.0.0.1).

The root stays deliberately small: this README, the design guide, the shared tooling, and the apps. Everything operational for a given app is inside that app's own folder.

Per-app anatomy

Every app under vulnerable-apps/ has the identical shape:

root@kitploit:~
vulnerable-apps/<stack>/
├── README.md            # LOUD banner + run notes
├── Makefile             # up · reset · safe · verify · score · diff  (uniform interface)
├── vuln/                # the vulnerable variant - this is what you scan by default
│   ├── docker-compose.yml   # independent; binds 127.0.0.1 only
│   ├── app/                 # application source; the planted bugs live here
│   └── db/seed.sql          # seed incl. a cross-tenant user + a weak default cred
├── safe/                # the patched twin - same app, every planted bug fixed
│   ├── docker-compose.yml
│   ├── app/
│   └── db/seed.sql
└── ground-truth/        # the answer key - see "Ground truth" below
    ├── VULNERABILITIES.yaml  # every planted bug
    ├── SURFACE.yaml          # every endpoint the app exposes
    ├── verify/          # one runnable PoC per bug
    └── expected/        # optional golden normalized findings

The vuln/safe twin

Each app ships two separated variant folders rather than git branches or patch files:

  • vuln/ - the app with every planted bug. The default target; what a scanner points at.
  • safe/ - the same app with every planted bug fixed and nothing else changed (parameterized queries, escaped output, added authz, safe deserializers, …).

diff -ru vulnerable-apps/<stack>/vuln vulnerable-apps/<stack>/safe is the ground truth. It must touch exactly the lines named in ground-truth/VULNERABILITIES.yaml and nothing else. Scanning the safe/ variant measures a tool's false-positive rate: every finding there is a false alarm, because the twin is clean by construction.

Because each variant's Docker build context is its own folder (vuln/ or safe/), the app's ground-truth/ sits outside every build context and cannot be baked into an image - the answer key can't leak into the running app, by construction.

Ground truth (ground-truth/)

Two answer keys, because there are two questions. VULNERABILITIES.yaml says what is wrong in the app; SURFACE.yaml says what is there at all.

VULNERABILITIES.yaml records one entry per planted bug:

root@kitploit:~
- id: SQLI-001
  variant_paths:                 # same relative path in both variants
    vuln: vuln/app/routes/search.py
    safe: safe/app/routes/search.py
  symbol: search_posts
  route: "GET /posts/search?q="
  cwe: CWE-89
  owasp: "A03:2021-Injection"
  severity: high                 # info | low | medium | high | critical
  difficulty: E                  # E | E-M | M | M-H | H  (detection difficulty)
  taint: in-file                 # in-file | cross-file | cross-service
  reachability: pre-auth         # pre-auth | user | admin
  near_miss: SAFE-SQLI-001       # id of the safe twin planted nearby
  match:                         # machine anchors for the scorer (generated)
    http: { method: GET, path: "/posts/search", params: [q] }
    file: { path: vuln/app/routes/search.py, symbol: search_posts, lines: [18, 24] }
    markers: [GLOBEX-CONFIDENTIAL-MARKER-7f3a]
  poc: ground-truth/verify/sqli_001.sh

SURFACE.yaml records one entry per operation the app exposes, vulnerable and benign alike - it is the denominator for endpoint coverage:

root@kitploit:~
operations:
  - id: posts.search
    kind: http                 # http | graphql | ws | llm | net
    method: GET
    path: /api/posts/search
    params: [q]
    discovery: js-runtime      # same crawl tiers as the answer key
    reachability: user
    vulns: [SQLI-001]          # omit when the operation is benign

  - id: graphql.mutation.update-post
    kind: graphql              # the op BEHIND POST /graphql, which is its own entry
    op: updatePost
    graphql_kind: mutation
    via: graphql.transport
    discovery: static-html

Benign operations are in there on purpose: a catalog of only the vulnerable routes would measure coverage of the answer key rather than of the app.

verify/ holds one runnable PoC per bug - it exits 0 against vuln/ and non-zero against safe/. That's the executable definition of "the bug is real (and actually fixed in the twin)."

The shared runner (dynast-bench/tools/poc-runner.sh) adds a third outcome the exit code cannot carry on its own: the harness could not run. Point the suite at a port nothing is listening on and a good half of any app's PoCs exit 1 - indistinguishable from a genuine fix. So the runner health-probes the target before it believes a rejection, applies a per-PoC deadline, and fails both legs on a timeout, a missing tool or a target that stopped answering. "The suite could not run" is never recorded as "the vulnerability is fixed".

Shared tooling (dynast-bench/, Bun/TypeScript)

One toolchain, used by every app, so cross-stack results are comparable:

  • dynast-bench.ts - the CLI: start/stop/reset/clean, health gating, port arbitration, PoC verification, scoring, --json for harnesses.
  • src/schema/ - types + validators for the two report formats (findings/v1, endpoints/v1) and the two answer keys (VULNERABILITIES.yaml, SURFACE.yaml), the CWE-family table used for partial credit, and the path/route/operation normalizers both sides of a comparison go through.
  • src/normalize/ - adapters converting raw scanner output (OWASP ZAP, SARIF from Semgrep/CodeQL/Snyk, nuclei, Burp XML, nmap XML) into that format. The format is auto-detected, so score takes native output directly.
  • src/scorer/ - matches findings against the answer key and emits precision / recall / F1, recall per difficulty / severity / reachability / taint / CWE, a discrimination score over the near-misses, and a duplicate (noise) ratio. Alongside it, an endpoint-coverage track grades how much of the app a run actually reached and splits every miss into "never found the endpoint" vs "found it, missed the bug".
root@kitploit:~
dynast-bench verify   <app>                 # run the app's ground-truth PoCs
dynast-bench score    <app> findings.json   # findings → P/R/F1 + per-dimension recall
dynast-bench coverage <app> endpoints.json  # endpoint discovery → how much was reached
dynast-bench surface  <app>                 # the operation checklist a crawl is graded on
dynast-bench diff     <app>                 # the vuln↔safe delta vs the answer key
dynast-bench check    --all                 # CI gate: schema · anchors · diff scope · binds

examples/ holds files you can score immediately - a findings run, a false-positive run, three endpoint traces and two blank templates, each documented with the numbers it produces:

root@kitploit:~
dynast-bench score    nextjs examples/findings.json --safe examples/findings-safe.json
dynast-bench coverage nextjs examples/endpoints.json --findings examples/findings.json

Full reference - the finding schema, the matching tiers, every metric: dynast-bench/README.md.

Uniform Makefile interface (identical in every app)

root@kitploit:~
make up       # docker compose up the vuln/ variant (127.0.0.1 only), wait for health
make reset    # down -v && up → fresh, byte-identical state
make safe     # bring up the safe/ variant instead (for false-positive runs)
make verify   # run every ground-truth PoC; expect all PASS against vuln/
make score FINDINGS=f.json    # grade a scanner's findings → P/R/F1
make diff     # the vuln↔safe delta, cross-checked against the answer key
make check    # CI gate: schema · anchors · diff scope · PoCs · 127.0.0.1 binds

The apps

AppStackDBExtra servicesDesign doc
fastapiPython / FastAPI + Jinja2PostgresMinIO, Mailpitfastapi.md
golangGo / chiPostgresPrometheus, Grafanagolang.md
ginGo / GinPostgreschromium, ImageMagick (in-image)README
nextjsNode / Next.js 15PostgresRedis, Mailpitnextjs.md
nestjsNode / NestJS + HandlebarsPostgresRedis, nginxnestjs.md
springbootJava / Spring Boot + ThymeleafPostgresJenkins, Prometheusspringboot.md
railsRuby / Rails 7.2PostgresMinIO, nginxrails.md
wordpressPHP / WordPress + pluginMySQLnginx, Mailpitwordpress.md
phpPHP / procedural LAMPMySQLphpMyAdmin, Mailpitphp.md
jspJava / JSP + Servlets (Tomcat)PostgresMailpitjsp.md
aspnetC# / ASP.NET Core Razor PagesSQL ServerMailpit

Plus three API-only apps (GraphQL, WebSocket, Swagger/OpenAPI), a network-range fleet for host/port scanners, and two LLM apps:

AppStackDBExtra servicesDesign doc
llmchatPython / FastAPI + LangChain (RAG chatbot)Postgres+pgvectorRedis, Ollama, internal svcllmchat.md
llmagentNode / Fastify + Vercel AI SDK + MCP (agent)PostgresRedis, Ollama, partner-MCP, internal svcllmagent.md

Both LLM apps run a local model via an internal-only Ollama container (gemma3:1b for chat, qwen2.5:1.5b for tool calling) - no API key, no egress, no per-run cost - and ship a scripted LLM_BACKEND=stub backend so the ground-truth PoCs stay deterministic against a stochastic model.

See benchmark-plans/README.md for the shared domain model, the OWASP-Top-10 coverage matrix, and the benchmark-design principles (near-misses, taint distance, logic-only bugs).

Getting started

root@kitploit:~
make install                           # once: puts `dynast-bench` on your PATH
dynast-bench doctor                    # docker reachable? which ports are taken?

dynast-bench start fastapi             # boots the vuln/ variant, waits for health
dynast-bench verify fastapi            # sanity-check: every planted bug's PoC PASSes

# ...point your scanner/agent at $(dynast-bench target fastapi), collect findings.json...

dynast-bench start fastapi --variant safe   # patched twin → measures false positives
dynast-bench reset fastapi                  # restore fresh, re-seeded state
dynast-bench clean --all --yes              # give the disk back

Or drive one app directly with its Makefile:

root@kitploit:~
cd vulnerable-apps/fastapi
make up      # vuln/ variant on 127.0.0.1
make verify  # every planted bug's PoC PASSes
make safe    # the patched twin
make reset   # fresh state

Status

  • 19 apps carry a complete answer key: 549 planted vulnerabilities, 146 near-misses, 546 PoCs, and a Dockerfile.standalone each (--solo). dynast-bench list prints the live table.
  • nextjs is the reference implementation - built and validated end to end (35 vulns + 15 near-misses). make validate APP=nextjs proves every PoC exploitable on vuln/ and fixed on safe/; make solo APP=nextjs runs it from one image. Copy its patterns.
  • dynast-bench CLI - built: runs, verifies, scores and cleans any app, in compose or single-image mode, with --json for harnesses.
  • The scorer - built (dynast-bench/src/): scanner output → normalized findings → precision/recall/F1, per-difficulty recall, a discrimination score over the near-misses, and separate discovery (network) and injection-channel (LLM) tracks.
  • Endpoint coverage - built: a SURFACE.yaml per app (~600 operations across the fleet) grading how much of the app a run actually reached, and splitting every miss into "never found the endpoint" vs "found it, missed the bug".
  • Per-app invariants over all 19 answer keys and surface catalogs run in make test; dynast-bench check --all is the CI gate.

Scoring a tool

root@kitploit:~
dynast-bench start nextjs --json | jq -r .target        # boot, get the URL
zap-baseline.py -t http://127.0.0.1:13311 -J zap.json   # scan
dynast-bench score nextjs zap.json --full               # grade it

# measure false positives properly: scan the patched twin too
dynast-bench start nextjs --variant safe
my-scanner --url http://127.0.0.1:13311 --out safe.json
dynast-bench score nextjs zap.json --safe safe.json

score reads a findings/v1 file or native ZAP / SARIF / nuclei / Burp / nmap output - the format is sniffed. Start from examples/ if you are wiring up a tool: examples/template-findings.json is a blank skeleton with every field, and examples/findings.json is a working file you can score right now.

Endpoint discovery is graded separately, against each app's SURFACE.yaml:

root@kitploit:~
dynast-bench coverage nextjs endpoints.json --findings findings.json

That is what separates a discovery miss (never reached the endpoint - fix the crawler) from an analysis miss (reached it, did not report - fix the scanner). See dynast-bench/README.md for the schema, the matching tiers and every metric.

Reading the report (Leg │ Precision │ Recall │ F1)

A leg is one scan run against one target state:

LegWhat it is
blackboxno credentials - the unauthenticated attacker view
credentialedsame target with the seeded logins injected, so authenticated surface (IDOR, privilege escalation) is reachable
safe-twinthe patched twin (--safe), a false-positive baseline - ideally finds nothing

All three run 0.0–1.0, and for all three higher is better (1.0 is perfect):

MetricFormulaBetterReads as
PrecisionTP / (TP + FP)↑ higherof everything reported, how much was real. 0.38 = ~38% of findings were genuine, the rest noise. High = few false alarms.
RecallTP / (TP + FN)↑ higherof the bugs actually planted, how many were found. 0.73 = 8 of 11. High = few misses.
F12 × P × R / (P + R)↑ higherharmonic mean of the two - the headline "overall quality" number. Only high when both are, so it penalises being noisy and missing bugs.

The one inversion: on the safe-twin leg there is nothing real to find, so every finding there is a false alarm - fewer is better, and an empty report is the perfect score.

Endpoint coverage

Recall tells you how many bugs a tool found. It cannot tell you why it missed the rest - and the two reasons need opposite fixes:

MissMeaningWhat to fix
discovery missnever reached the endpoint carrying the bugthe crawler
analysis missreached the endpoint, did not report the bugthe analysis

Telling them apart needs a second input: the endpoints your tool says it found. That is endpoints/v1, scored against each app's SURFACE.yaml.

root@kitploit:~
dynast-bench surface  nextjs                       # the checklist a crawl is graded on
dynast-bench coverage nextjs endpoints.json        # how much did it reach?
dynast-bench coverage nextjs endpoints.json --findings findings.json   # ...and why not the rest
dynast-bench score    nextjs findings.json --endpoints endpoints.json  # both in one report

A crawler that reads HTML and runs JS but never completes a multi-step flow:

root@kitploit:~
operations   62.5%   25 of 40
detection    25.0%   of the bugs on operations it reached
misses:      11 never reached the operation · 18 reached it and did not report

  static-html    6/6   100.0%
  js-static      5/5   100.0%
  js-runtime    11/19   57.9%
  interaction    3/5    60.0%
  flow           0/5     0.0%

The tier breakdown is the useful part: 100% on static-html and 0% on flow is a discovery problem, not a scanner problem, and those read identically in a single recall number.

Two rules keep the number honest:

  • Transport is not operation. One POST /graphql does not exercise the 25 GraphQL operations behind it; one WebSocket handshake does not exercise its events; one POST /api/runs does not exercise an agent's tools. Reaching a URL and exercising what lives there are separately scored.
  • Missing telemetry produces no track at all, never 0%. "We did not measure this" and "it reached nothing" are opposite claims about a tool.

Reported endpoints that match nothing cost precision but never reduce coverage, so spraying a wordlist is not a way to score higher. Full model: dynast-bench/README.md#endpoint-coverage.

License

dynast-bench is made with ♥ by @j3ssie to benchmark Vigolium and Gimorra (An autonomous offensive-security agent), and it is released under the MIT license.

टूल डाउनलोड करें
llmagentNode / Fastify + AI SDK + MCPPostgres298plan
llmchatPython / FastAPI + LangChain RAGPostgres+pgvector309plan
nestjsNode / NestJS + HandlebarsPostgres236plan
networkSimulated multi-host network rangemixed fleet325plan
nextjsNode / Next.js 15 (reference impl)Postgres3515plan
phpPHP / procedural LAMPMySQL215plan
railsRuby / Rails 7.2Postgres266plan
springbootJava / Spring Boot + ThymeleafPostgres304plan
swaggerOpenAPI / Swagger UI + spec loadingPostgres195plan
websocketNode 22 / ws + Socket.IO realtimePostgres286plan
weirdproxynginx + Apache + Traefik over one originnone164plan
wordpressPHP / WordPress + custom pluginMySQL286plan
14
Race conditions / TOCTOU3621414
Open redirect6011414
User & resource enumeration (observable response discrepancy)204, 5981312
Code injection · SSTI · expression language94, 917, 1059, 13361110
Weak crypto & randomness · cleartext transport295, 319, 327, 330, 338116
Password reset + account recovery flaws184, 64099
Unrestricted / unsafe file upload43499
CSRF (incl. cross-site WebSocket hijacking)35288
Prompt injection & LLM tool abuse (direct · indirect · RAG)142772
XXE / XML external entity61155
Supply chain & integrity (unsigned updates, vulnerable deps)494, 103522
Insecure network exposure (binding, service misconfiguration)132721
Insufficient logging / log injection11711
aspnet.md