Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/trilwu/secskillsnpx agentmods add skills/trilwu/secskills/attacking-jwtWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/trilwu/secskills/attacking-jwt)<a href="https://agentmods.dev/skills/trilwu/secskills/attacking-jwt"><img src="https://agentmods.dev/badge/skills/trilwu/secskills/attacking-jwt.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.03267 |
| Opus 5 | $0.00000 | $0.01633 |
| Sonnet 5 | $0.00000 | $0.00653 |
| Haiku 4.5 | $0.00000 | $0.00327 |
Grade A, and why
attacking-jwt scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -s https://target/.well-known/jwks.json How it starts
The opening of the file, as written. The whole thing — 289 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Attacking JWT
A JWT is not a credential you are meant to read — it is a signature-verification
decision the server makes on bytes you control. Every field, including the
alg header that tells the server how to check the signature, is
attacker-supplied. The classic failures all come from the server trusting the
token's own header to decide how to verify it, or from a secret weak enough to
recover offline.
Only against systems you are authorized to test.
When to Use
- A request carries a token in three base64url parts joined by dots, typically
starting with
eyJ(the encoded{"of the header) - An
Authorization: Bearer <token>header is present - A session,
access_token,id_token, orremember-mevalue lives in a cookie,localStorage,sessionStorage, or a query parameter - The application authenticates or authorizes based on a signed token rather than a server-side session
- You control any claim (
sub,role,admin,aud,iss) and want to see whether the signature is actually enforced
When NOT to Use
- The wider web-application methodology — use
testing-web-applications - API authentication and authorization generally — use
testing-apis - The cryptographic primitives themselves (HMAC, RSA, ECDSA design) — use
reviewing-cryptography - The OAuth/OIDC flow that issues the token, redirect_uri and PKCE abuse —
use
attacking-oauth-oidc - Cloud IAM tokens (AWS STS, GCP, Azure AD access tokens) as an access
primitive — use
exploiting-cloud-platforms
Decode and Inspect First
A JWT is header.payload.signature, each part base64url (no padding, - and
_ instead of + and /). The first two parts are plaintext; only the
signature is protected.
# jwt_tool: the fastest way to read a token and see every claim
python3 jwt_tool.py <token>
# By hand, no tools, no network
echo '<header>' | tr '_-' '/+' | base64 -d 2>/dev/null; echo
echo '<payload>' | tr '_-' '/+' | base64 -d 2>/dev/null; echo
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 289 lines · 0 tokens per session scan A 79461dfc6968
attacking-jwt is a skill published in the GitHub repository trilwu/secskills (135 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 3,267 tokens. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
build-mcp-server
This skill should be used when the user asks to "build an MCP server", "create an MCP", "make an MCP integration", "wrap an API for Claude", "expose tools to Claude", "make an MCP app", or discusses building something with the Model Context Protocol. It is the entry point for MCP server development — it interrogates…
data-manager-api-setup
Guides developers through client library installation and authentication setup steps for the Data Manager API. Use this skill when a user is getting started with the Data Manager API and needs to setup their local environment, install the client library, or setup access to the API. Don't use for implementing audience…
workers-best-practices
Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from…
new
Create a new project to start development quickly.
skd-edit
Точечное редактирование схемы компоновки данных 1С (СКД). Используй когда нужно модифицировать существующую СКД — добавить поля, итоги, фильтры, параметры, изменить текст запроса.
skd-info
Анализ структуры схемы компоновки данных 1С (СКД) — наборы, поля, параметры, варианты. Используй для понимания отчёта — источник данных (запрос), доступные поля, параметры.