@intentsolutionsio/penetration-tester 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +19 -0
- package/LICENSE +21 -0
- package/README.md +160 -0
- package/commands/pentest.md +84 -0
- package/commands/scan-headers.md +43 -0
- package/package.json +40 -0
- package/skills/performing-penetration-testing/SKILL.md +266 -0
- package/skills/performing-penetration-testing/references/OWASP_TOP_10.md +284 -0
- package/skills/performing-penetration-testing/references/REMEDIATION_PLAYBOOK.md +452 -0
- package/skills/performing-penetration-testing/references/SECURITY_HEADERS.md +365 -0
- package/skills/performing-penetration-testing/scripts/code_security_scanner.py +780 -0
- package/skills/performing-penetration-testing/scripts/dependency_auditor.py +777 -0
- package/skills/performing-penetration-testing/scripts/requirements.txt +4 -0
- package/skills/performing-penetration-testing/scripts/security_scanner.py +1166 -0
- package/skills/performing-penetration-testing/scripts/setup_pentest_env.sh +199 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "penetration-tester",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Security testing toolkit with HTTP header analysis, dependency auditing, and static code scanning",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Jeremy Longshore",
|
|
7
|
+
"email": "[email protected]"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/jeremylongshore/claude-code-plugins",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"security",
|
|
13
|
+
"penetration-testing",
|
|
14
|
+
"pentesting",
|
|
15
|
+
"owasp",
|
|
16
|
+
"exploitation",
|
|
17
|
+
"agent-skills"
|
|
18
|
+
]
|
|
19
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jeremy Longshore
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Penetration Tester Plugin
|
|
2
|
+
|
|
3
|
+
Security testing toolkit for web applications, dependencies, and source code.
|
|
4
|
+
Three real scanners that wrap established tools (requests, bandit, pip-audit,
|
|
5
|
+
npm audit) with unified reporting.
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
| Scanner | Target | What It Checks |
|
|
10
|
+
|---------|--------|----------------|
|
|
11
|
+
| `security_scanner.py` | Live URLs | Security headers, SSL/TLS, exposed endpoints, HTTP methods, CORS |
|
|
12
|
+
| `dependency_auditor.py` | Project dirs | npm and pip vulnerabilities, CVEs, outdated packages |
|
|
13
|
+
| `code_security_scanner.py` | Codebases | Hardcoded secrets, SQL injection, command injection, insecure deserialization |
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
/plugin install penetration-tester@claude-code-plugins-plus
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Setup
|
|
22
|
+
|
|
23
|
+
Install Python dependencies:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
bash scripts/setup_pentest_env.sh
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Or with a virtual environment:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bash scripts/setup_pentest_env.sh --venv
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Requires Python 3.9+. The setup script installs `requests`, `bandit`, and
|
|
36
|
+
`pip-audit`, then verifies each tool works.
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
**Check security headers on a URL:**
|
|
41
|
+
```
|
|
42
|
+
> Check the security headers on https://example.com
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Audit project dependencies:**
|
|
46
|
+
```
|
|
47
|
+
> Audit the dependencies in this project for vulnerabilities
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Scan code for security issues:**
|
|
51
|
+
```
|
|
52
|
+
> Scan this codebase for hardcoded secrets and security issues
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Full security audit:**
|
|
56
|
+
```
|
|
57
|
+
> Run a full security audit on this project
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Scanners
|
|
61
|
+
|
|
62
|
+
### security_scanner.py
|
|
63
|
+
|
|
64
|
+
HTTP security analysis for live web applications.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
python3 scripts/security_scanner.py https://example.com
|
|
68
|
+
python3 scripts/security_scanner.py https://example.com --checks headers,ssl
|
|
69
|
+
python3 scripts/security_scanner.py https://example.com --output report.json
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Checks:**
|
|
73
|
+
- Security headers (CSP, HSTS, X-Frame-Options, X-Content-Type-Options,
|
|
74
|
+
Referrer-Policy, Permissions-Policy)
|
|
75
|
+
- SSL/TLS certificate validity and expiry
|
|
76
|
+
- Exposed endpoints (.git, .env, admin panels, server-status)
|
|
77
|
+
- Dangerous HTTP methods (PUT, DELETE, TRACE)
|
|
78
|
+
- CORS misconfigurations (wildcard, reflected origin)
|
|
79
|
+
|
|
80
|
+
### dependency_auditor.py
|
|
81
|
+
|
|
82
|
+
Unified dependency vulnerability scanner.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python3 scripts/dependency_auditor.py /path/to/project
|
|
86
|
+
python3 scripts/dependency_auditor.py . --min-severity high
|
|
87
|
+
python3 scripts/dependency_auditor.py . --scanners npm,pip --output findings.json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Supports:**
|
|
91
|
+
- npm projects (via `npm audit`)
|
|
92
|
+
- Python projects (via `pip-audit`)
|
|
93
|
+
- Auto-detects project type from manifest files
|
|
94
|
+
|
|
95
|
+
### code_security_scanner.py
|
|
96
|
+
|
|
97
|
+
Static analysis for security vulnerabilities.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
python3 scripts/code_security_scanner.py /path/to/code
|
|
101
|
+
python3 scripts/code_security_scanner.py . --tools bandit,regex --severity high
|
|
102
|
+
python3 scripts/code_security_scanner.py . --exclude "test_*,*_test.py"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Detects:**
|
|
106
|
+
- Hardcoded secrets (API keys, AWS keys, passwords, tokens)
|
|
107
|
+
- SQL injection (string concatenation in queries)
|
|
108
|
+
- Command injection (os.system, subprocess with shell=True)
|
|
109
|
+
- Eval/exec usage
|
|
110
|
+
- Insecure deserialization (pickle, unsafe YAML loading)
|
|
111
|
+
- Weak cryptography (MD5, SHA1)
|
|
112
|
+
- Disabled SSL verification
|
|
113
|
+
|
|
114
|
+
## Output
|
|
115
|
+
|
|
116
|
+
All scanners produce:
|
|
117
|
+
- Markdown-formatted reports for terminal display
|
|
118
|
+
- JSON reports via `--output` for programmatic use
|
|
119
|
+
- Risk scoring with severity levels (critical, high, medium, low, info)
|
|
120
|
+
- Remediation guidance for each finding
|
|
121
|
+
|
|
122
|
+
Exit code 0 means no critical or high findings. Exit code 1 means issues found.
|
|
123
|
+
|
|
124
|
+
## Reference Documentation
|
|
125
|
+
|
|
126
|
+
The `references/` directory contains detailed guides:
|
|
127
|
+
|
|
128
|
+
- **OWASP_TOP_10.md** -- Each OWASP Top 10 risk with scanner mapping and fix templates
|
|
129
|
+
- **SECURITY_HEADERS.md** -- HTTP header implementation for Express, Django, Nginx, Apache
|
|
130
|
+
- **REMEDIATION_PLAYBOOK.md** -- Copy-paste fix templates for common vulnerabilities
|
|
131
|
+
|
|
132
|
+
## Authorization Warning
|
|
133
|
+
|
|
134
|
+
**Only test systems you are authorized to test.**
|
|
135
|
+
|
|
136
|
+
- Never scan URLs you do not own or have written permission to test
|
|
137
|
+
- Local code scanning and dependency auditing of your own projects is always safe
|
|
138
|
+
- The scanners will ask for authorization confirmation before external scans
|
|
139
|
+
- Unauthorized security testing may violate laws in your jurisdiction
|
|
140
|
+
|
|
141
|
+
## Commands
|
|
142
|
+
|
|
143
|
+
- `/pentest` -- Full security testing workflow with authorization checks
|
|
144
|
+
- `/scan-headers` -- Quick security header check for a single URL
|
|
145
|
+
|
|
146
|
+
## Requirements
|
|
147
|
+
|
|
148
|
+
- Python 3.9+
|
|
149
|
+
- `requests` >= 2.31.0
|
|
150
|
+
- `bandit` >= 1.7.5 (optional, for code scanning)
|
|
151
|
+
- `pip-audit` >= 2.6.0 (optional, for Python dependency auditing)
|
|
152
|
+
- `npm` (optional, for JavaScript dependency auditing)
|
|
153
|
+
|
|
154
|
+
## Contributors
|
|
155
|
+
|
|
156
|
+
- [@duskfallcrew](https://github.com/duskfallcrew) -- Reported AV false positive from PHP payloads in docs (#300), prompting the v2.0.0 rebuild
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT License - See LICENSE file for details.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pentest
|
|
3
|
+
description: Run a security testing workflow against a target URL or codebase
|
|
4
|
+
shortcut: pent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Security Testing Workflow
|
|
8
|
+
|
|
9
|
+
Run a structured security assessment. This command walks through authorization,
|
|
10
|
+
scope selection, scanning, and reporting.
|
|
11
|
+
|
|
12
|
+
## Step 1: Authorization Check
|
|
13
|
+
|
|
14
|
+
Before scanning anything, confirm authorization:
|
|
15
|
+
|
|
16
|
+
- If the target is a URL: ask the user to confirm they own it or have written
|
|
17
|
+
permission to test it.
|
|
18
|
+
- If the target is local code/dependencies: confirm it is the user's own project.
|
|
19
|
+
- **Do not proceed without explicit authorization.**
|
|
20
|
+
|
|
21
|
+
## Step 2: Determine Scope
|
|
22
|
+
|
|
23
|
+
Ask the user what they want to test:
|
|
24
|
+
|
|
25
|
+
1. **Web application** (URL) -- security headers, SSL, exposed endpoints, CORS
|
|
26
|
+
2. **Dependencies** (project directory) -- npm/pip vulnerability audit
|
|
27
|
+
3. **Source code** (directory) -- static analysis for secrets, injection, etc.
|
|
28
|
+
4. **Full audit** -- all of the above
|
|
29
|
+
|
|
30
|
+
## Step 3: Run Scanners
|
|
31
|
+
|
|
32
|
+
Based on the selected scope, run the appropriate scripts from the plugin:
|
|
33
|
+
|
|
34
|
+
### Web Application Scan
|
|
35
|
+
```bash
|
|
36
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/security_scanner.py TARGET_URL --verbose
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Dependency Audit
|
|
40
|
+
```bash
|
|
41
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/dependency_auditor.py TARGET_DIR --verbose
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Code Security Scan
|
|
45
|
+
```bash
|
|
46
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/code_security_scanner.py TARGET_DIR --verbose
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Save JSON reports for any scan that finds critical or high issues:
|
|
50
|
+
```bash
|
|
51
|
+
python3 SCANNER --output /tmp/security-report-$(date +%Y%m%d).json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Step 4: Present Findings
|
|
55
|
+
|
|
56
|
+
Summarize results for the user:
|
|
57
|
+
|
|
58
|
+
1. **Summary table** -- total findings by severity across all scanners
|
|
59
|
+
2. **Critical/High findings** -- detail each one with the risk and impact
|
|
60
|
+
3. **Remediation priorities** -- ordered list of what to fix first
|
|
61
|
+
|
|
62
|
+
## Step 5: Suggest Remediations
|
|
63
|
+
|
|
64
|
+
For each critical and high finding:
|
|
65
|
+
|
|
66
|
+
1. Explain the vulnerability in plain language
|
|
67
|
+
2. Provide the specific fix (reference REMEDIATION_PLAYBOOK.md)
|
|
68
|
+
3. Show how to verify the fix
|
|
69
|
+
|
|
70
|
+
Offer to apply code fixes directly for code-level findings.
|
|
71
|
+
|
|
72
|
+
## Step 6: Generate Report
|
|
73
|
+
|
|
74
|
+
If the user wants a saved report, combine all findings into a single JSON file:
|
|
75
|
+
```bash
|
|
76
|
+
# Reports are saved via the --output flag on each scanner
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Safety Rules
|
|
80
|
+
|
|
81
|
+
- Never run scans against unauthorized targets
|
|
82
|
+
- All scanners use safe, non-destructive techniques (GET requests, static analysis)
|
|
83
|
+
- No exploit payloads are sent to targets
|
|
84
|
+
- No data is exfiltrated or modified
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scan-headers
|
|
3
|
+
description: Quick security header check for a single URL
|
|
4
|
+
shortcut: sh
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Quick Security Header Scan
|
|
8
|
+
|
|
9
|
+
Fast single-URL check for HTTP security headers. This is a shortcut for running
|
|
10
|
+
just the header analysis from the full pentest workflow.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
Ask the user for the target URL, then run:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/security_scanner.py TARGET_URL --checks headers
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## What Gets Checked
|
|
21
|
+
|
|
22
|
+
- Content-Security-Policy (CSP)
|
|
23
|
+
- Strict-Transport-Security (HSTS)
|
|
24
|
+
- X-Frame-Options
|
|
25
|
+
- X-Content-Type-Options
|
|
26
|
+
- Referrer-Policy
|
|
27
|
+
- Permissions-Policy
|
|
28
|
+
- Server version disclosure
|
|
29
|
+
- X-XSS-Protection (deprecated, informational)
|
|
30
|
+
|
|
31
|
+
## Output
|
|
32
|
+
|
|
33
|
+
Present the results as a table showing each header, whether it's present, its
|
|
34
|
+
value, and any issues found. Include the overall header security score.
|
|
35
|
+
|
|
36
|
+
For any missing or misconfigured headers, provide the recommended value and
|
|
37
|
+
a brief explanation of what it protects against. Reference
|
|
38
|
+
`references/SECURITY_HEADERS.md` for implementation details.
|
|
39
|
+
|
|
40
|
+
## Authorization
|
|
41
|
+
|
|
42
|
+
Even though this only sends a single GET request, confirm the user has
|
|
43
|
+
authorization to test the target URL before scanning.
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@intentsolutionsio/penetration-tester",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Security testing toolkit with HTTP header analysis, dependency auditing, and static code scanning",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"security",
|
|
7
|
+
"penetration-testing",
|
|
8
|
+
"pentesting",
|
|
9
|
+
"owasp",
|
|
10
|
+
"exploitation",
|
|
11
|
+
"agent-skills",
|
|
12
|
+
"claude-code",
|
|
13
|
+
"claude-plugin",
|
|
14
|
+
"tonsofskills"
|
|
15
|
+
],
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/jeremylongshore/claude-code-plugins-plus-skills.git",
|
|
19
|
+
"directory": "plugins/security/penetration-tester"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://tonsofskills.com/plugins/penetration-tester",
|
|
22
|
+
"bugs": "https://github.com/jeremylongshore/claude-code-plugins-plus-skills/issues",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"author": {
|
|
25
|
+
"name": "Jeremy Longshore",
|
|
26
|
+
"email": "[email protected]"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"README.md",
|
|
33
|
+
".claude-plugin",
|
|
34
|
+
"skills",
|
|
35
|
+
"commands"
|
|
36
|
+
],
|
|
37
|
+
"scripts": {
|
|
38
|
+
"postinstall": "node -e \"console.log(\\\"\\\\n→ This npm package is a tracking/proof artifact. Install the plugin via:\\\\n ccpi install penetration-tester\\\\n or /plugin install penetration-tester@claude-code-plugins-plus in Claude Code\\\\n\\\")\""
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performing-penetration-testing
|
|
3
|
+
description: |
|
|
4
|
+
Perform security testing on web applications, APIs, and codebases. Use when
|
|
5
|
+
the user asks to "run a security scan", "check for vulnerabilities", "audit
|
|
6
|
+
dependencies", "check security headers", "find security issues", "pentest",
|
|
7
|
+
"security audit", or "scan for secrets". Trigger with "pentest", "security scan",
|
|
8
|
+
"vulnerability check", "audit dependencies", "check headers", "find secrets".
|
|
9
|
+
version: 2.0.0
|
|
10
|
+
allowed-tools: Read, Write, Edit, Grep, Glob, Bash(python3:*), Bash(pip:*), Bash(npm:*), Bash(bandit:*)
|
|
11
|
+
license: MIT
|
|
12
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
13
|
+
compatible-with: claude-code, codex, openclaw
|
|
14
|
+
tags: [security, testing, audit]
|
|
15
|
+
---
|
|
16
|
+
# Penetration Testing Skill
|
|
17
|
+
|
|
18
|
+
Security testing toolkit with three specialized scanners for web applications,
|
|
19
|
+
dependency chains, and source code.
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
This skill provides three real, working security scanners:
|
|
24
|
+
|
|
25
|
+
1. **security_scanner.py** -- HTTP security header analysis, SSL/TLS certificate
|
|
26
|
+
checks, exposed endpoint probing, dangerous HTTP method detection, and CORS
|
|
27
|
+
misconfiguration testing. Targets live URLs.
|
|
28
|
+
|
|
29
|
+
2. **dependency_auditor.py** -- Unified vulnerability scanner for project
|
|
30
|
+
dependencies. Wraps `npm audit` and `pip-audit` with normalized severity
|
|
31
|
+
output. Targets project directories.
|
|
32
|
+
|
|
33
|
+
3. **code_security_scanner.py** -- Static analysis combining `bandit` (Python)
|
|
34
|
+
with custom regex patterns for hardcoded secrets, SQL injection, command
|
|
35
|
+
injection, eval/exec usage, and insecure deserialization. Targets codebases.
|
|
36
|
+
|
|
37
|
+
## Prerequisites
|
|
38
|
+
|
|
39
|
+
- Python 3.9+
|
|
40
|
+
- `requests` library (for security_scanner.py)
|
|
41
|
+
- Optional: `bandit` (for code scanning), `pip-audit` (for dependency auditing)
|
|
42
|
+
- Optional: `npm` (for JavaScript dependency auditing)
|
|
43
|
+
|
|
44
|
+
Run the setup script to install all dependencies:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/setup_pentest_env.sh
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Or with a virtual environment (recommended):
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/setup_pentest_env.sh --venv
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Instructions
|
|
57
|
+
|
|
58
|
+
Step 1. Confirm Authorization
|
|
59
|
+
|
|
60
|
+
Before running any scan, verify the user has authorization to test the target.
|
|
61
|
+
Ask explicitly:
|
|
62
|
+
|
|
63
|
+
> "Do you have authorization to perform security testing on this target? I need
|
|
64
|
+
> confirmation before proceeding."
|
|
65
|
+
|
|
66
|
+
If testing a URL, confirm the user owns or has written permission to test it.
|
|
67
|
+
If testing local code/dependencies, confirm it's the user's own project.
|
|
68
|
+
|
|
69
|
+
**Never scan targets without explicit authorization.**
|
|
70
|
+
|
|
71
|
+
Step 2. Define Scope
|
|
72
|
+
|
|
73
|
+
Determine what to scan based on the user's request:
|
|
74
|
+
|
|
75
|
+
| User says | Scanner to use | Target |
|
|
76
|
+
|-----------|---------------|--------|
|
|
77
|
+
| "check headers" / "scan URL" | security_scanner.py | URL |
|
|
78
|
+
| "audit dependencies" / "check packages" | dependency_auditor.py | Directory |
|
|
79
|
+
| "find secrets" / "code audit" | code_security_scanner.py | Directory |
|
|
80
|
+
| "full security scan" | All three | URL + Directory |
|
|
81
|
+
| "check SSL" / "certificate" | security_scanner.py --checks ssl | URL |
|
|
82
|
+
| "CORS check" | security_scanner.py --checks cors | URL |
|
|
83
|
+
|
|
84
|
+
Step 3. Run Scans
|
|
85
|
+
|
|
86
|
+
Execute the appropriate scanner(s):
|
|
87
|
+
|
|
88
|
+
**Web application scan:**
|
|
89
|
+
```bash
|
|
90
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/security_scanner.py TARGET_URL
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
With specific checks:
|
|
94
|
+
```bash
|
|
95
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/security_scanner.py TARGET_URL --checks headers,ssl,endpoints,methods,cors
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Dependency audit:**
|
|
99
|
+
```bash
|
|
100
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/dependency_auditor.py /path/to/project
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
With severity filter:
|
|
104
|
+
```bash
|
|
105
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/dependency_auditor.py /path/to/project --min-severity high
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Code security scan:**
|
|
109
|
+
```bash
|
|
110
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/code_security_scanner.py /path/to/code
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
With specific tools:
|
|
114
|
+
```bash
|
|
115
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/code_security_scanner.py /path/to/code --tools bandit,regex --severity high
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Step 4. Analyze Results
|
|
119
|
+
|
|
120
|
+
Review the scanner output. Each finding includes:
|
|
121
|
+
1. **Severity** -- critical, high, medium, low, or info
|
|
122
|
+
2. **Title** -- what was found
|
|
123
|
+
3. **Detail** -- technical explanation
|
|
124
|
+
4. **Remediation** -- how to fix it
|
|
125
|
+
|
|
126
|
+
Prioritize findings by severity: critical and high findings first.
|
|
127
|
+
|
|
128
|
+
Step 5. Report Findings
|
|
129
|
+
|
|
130
|
+
Present results to the user in a clear format:
|
|
131
|
+
5. Start with a summary (total findings by severity)
|
|
132
|
+
6. Group findings by severity
|
|
133
|
+
7. For each finding, explain the risk and provide the remediation steps
|
|
134
|
+
8. Reference the appropriate playbook entry from references/
|
|
135
|
+
|
|
136
|
+
Step 6. Suggest Remediations
|
|
137
|
+
|
|
138
|
+
For each finding, provide:
|
|
139
|
+
9. The specific code change or configuration needed
|
|
140
|
+
10. Reference to REMEDIATION_PLAYBOOK.md for copy-paste templates
|
|
141
|
+
11. Verification steps to confirm the fix works
|
|
142
|
+
|
|
143
|
+
## Scanner Reference
|
|
144
|
+
|
|
145
|
+
### security_scanner.py
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Usage: python3 security_scanner.py URL [OPTIONS]
|
|
149
|
+
|
|
150
|
+
Options:
|
|
151
|
+
--checks CHECKS Comma-separated: headers,ssl,endpoints,methods,cors (default: all)
|
|
152
|
+
--output FILE Write JSON report to file
|
|
153
|
+
--timeout SECS Request timeout in seconds (default: 10)
|
|
154
|
+
--verbose Show detailed progress
|
|
155
|
+
--help Show help
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Checks performed:
|
|
159
|
+
- Security headers: CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy
|
|
160
|
+
- SSL/TLS: certificate validity, expiry, protocol version
|
|
161
|
+
- Exposed endpoints: .git, .env, admin panels, server-status, directory listing
|
|
162
|
+
- HTTP methods: dangerous methods (PUT, DELETE, TRACE)
|
|
163
|
+
- CORS: wildcard origins, reflected origins, credentials misconfiguration
|
|
164
|
+
|
|
165
|
+
### dependency_auditor.py
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
set -euo pipefail
|
|
169
|
+
Usage: python3 dependency_auditor.py DIRECTORY [OPTIONS]
|
|
170
|
+
|
|
171
|
+
Options:
|
|
172
|
+
--scanners SCANNERS Comma-separated: npm,pip (default: auto-detect)
|
|
173
|
+
--min-severity LEVEL Minimum severity: critical,high,moderate,low (default: low)
|
|
174
|
+
--output FILE Write JSON report to file
|
|
175
|
+
--verbose Show detailed progress
|
|
176
|
+
--help Show help
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Auto-detects project type from package.json, requirements.txt, pyproject.toml, etc.
|
|
180
|
+
|
|
181
|
+
### code_security_scanner.py
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Usage: python3 code_security_scanner.py DIRECTORY [OPTIONS]
|
|
185
|
+
|
|
186
|
+
Options:
|
|
187
|
+
--tools TOOLS Comma-separated: bandit,regex (default: all available)
|
|
188
|
+
--output FILE Write JSON report to file
|
|
189
|
+
--severity LEVEL Minimum severity: critical,high,medium,low (default: low)
|
|
190
|
+
--exclude PATTERNS Comma-separated glob patterns to exclude
|
|
191
|
+
--verbose Show detailed progress
|
|
192
|
+
--help Show help
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Detects: hardcoded secrets, SQL injection, command injection, eval/exec, insecure
|
|
196
|
+
deserialization, weak cryptography, disabled SSL verification.
|
|
197
|
+
|
|
198
|
+
## Examples
|
|
199
|
+
|
|
200
|
+
### Quick header check
|
|
201
|
+
|
|
202
|
+
User: "Check the security headers on https://example.com"
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/security_scanner.py https://example.com --checks headers
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Full project security audit
|
|
209
|
+
|
|
210
|
+
User: "Run a full security audit on my project"
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# 1. Scan dependencies
|
|
214
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/dependency_auditor.py .
|
|
215
|
+
|
|
216
|
+
# 2. Scan code for security issues
|
|
217
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/code_security_scanner.py .
|
|
218
|
+
|
|
219
|
+
# 3. If the project has a deployed URL, scan it too
|
|
220
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/security_scanner.py https://the-deployed-url.com
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Code-only audit for secrets
|
|
224
|
+
|
|
225
|
+
User: "Check this codebase for hardcoded secrets"
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
python3 ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/code_security_scanner.py . --tools regex --severity high
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Output
|
|
232
|
+
|
|
233
|
+
All scanners produce structured security reports:
|
|
234
|
+
|
|
235
|
+
- **Console report**: Markdown-formatted findings with severity, description, and remediation
|
|
236
|
+
- **JSON report**: Machine-readable output via `--output` flag for CI integration
|
|
237
|
+
- **Exit codes**: 0 = no critical/high findings, 1 = critical/high findings found
|
|
238
|
+
- **Risk score**: security_scanner.py provides a 0-100 score (100 = most secure)
|
|
239
|
+
- **Severity levels**: critical, high, medium, low, info for each finding
|
|
240
|
+
- **Remediation guidance**: Specific fix instructions for each finding
|
|
241
|
+
|
|
242
|
+
## Error Handling
|
|
243
|
+
|
|
244
|
+
**Missing dependencies:**
|
|
245
|
+
If a scanner fails because a tool isn't installed, run the setup script:
|
|
246
|
+
```bash
|
|
247
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/performing-penetration-testing/scripts/setup_pentest_env.sh
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Connection errors:**
|
|
251
|
+
If security_scanner.py can't reach the target URL:
|
|
252
|
+
- Verify the URL is correct and accessible
|
|
253
|
+
- Check if the site requires VPN or special network access
|
|
254
|
+
- Try with `--timeout 30` for slow servers
|
|
255
|
+
|
|
256
|
+
**Permission errors:**
|
|
257
|
+
If code_security_scanner.py can't read files:
|
|
258
|
+
- Check file permissions in the target directory
|
|
259
|
+
- Exclude protected directories with `--exclude`
|
|
260
|
+
|
|
261
|
+
## Resources
|
|
262
|
+
|
|
263
|
+
For detailed reference material, see:
|
|
264
|
+
- `references/OWASP_TOP_10.md` -- OWASP Top 10 risks with scanner mapping
|
|
265
|
+
- `references/SECURITY_HEADERS.md` -- HTTP security header implementation guide
|
|
266
|
+
- `references/REMEDIATION_PLAYBOOK.md` -- Copy-paste fix templates
|