@vulcn/engine 0.1.0 → 0.3.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/CHANGELOG.md +63 -1
- package/LICENSE +662 -21
- package/README.md +41 -175
- package/dist/index.cjs +841 -240
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +658 -55
- package/dist/index.d.ts +658 -55
- package/dist/index.js +821 -232
- package/dist/index.js.map +1 -1
- package/package.json +33 -16
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
**Security testing made simple.** Record once, test with payloads, find vulnerabilities.
|
|
4
4
|
|
|
5
|
-
[](https://github.com/vulcnize/vulcn/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/vulcn)
|
|
7
|
-
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
# Install globally
|
|
15
15
|
npm install -g vulcn
|
|
16
16
|
|
|
17
|
-
# Record a session
|
|
18
|
-
vulcn record
|
|
17
|
+
# Record a session (opens browser)
|
|
18
|
+
vulcn record https://example.com/login
|
|
19
19
|
|
|
20
|
-
# Run with
|
|
21
|
-
vulcn run session.vulcn.yml
|
|
20
|
+
# Run with security payloads
|
|
21
|
+
vulcn run session.vulcn.yml
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
**Zero-config browser support** — Vulcn uses your existing Chrome or Edge. No browser downloads needed.
|
|
@@ -27,198 +27,64 @@ vulcn run session.vulcn.yml --payload xss-basic
|
|
|
27
27
|
|
|
28
28
|
## 🎯 What is Vulcn?
|
|
29
29
|
|
|
30
|
-
Vulcn is a security testing
|
|
30
|
+
Vulcn is a **driver-based security testing framework** that:
|
|
31
31
|
|
|
32
|
-
1. **Records**
|
|
33
|
-
2. **Replays** them with security payloads injected
|
|
34
|
-
3. **Detects** vulnerabilities
|
|
32
|
+
1. **Records** interactions (browser clicks, API requests, CLI commands)
|
|
33
|
+
2. **Replays** them with security payloads injected
|
|
34
|
+
3. **Detects** vulnerabilities via plugins (XSS, SQLi, reflection, etc.)
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### Architecture
|
|
37
37
|
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 🚀 Features
|
|
41
|
-
|
|
42
|
-
| Feature | Description |
|
|
43
|
-
| --------------------- | --------------------------------------------------- |
|
|
44
|
-
| 🎬 **Record** | Capture browser sessions as replayable YAML files |
|
|
45
|
-
| 🔍 **Test** | Inject XSS, SQLi, and custom payloads automatically |
|
|
46
|
-
| 🌐 **Cross-platform** | Works on macOS, Linux, and Windows |
|
|
47
|
-
| 🚫 **Zero-config** | Uses system Chrome/Edge by default |
|
|
48
|
-
| 📊 **CI/CD Ready** | Exit codes for pipeline integration |
|
|
49
|
-
| 🔧 **Extensible** | Add custom payloads and detection patterns |
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 📦 Installation
|
|
54
|
-
|
|
55
|
-
### CLI
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
npm install -g vulcn
|
|
59
38
|
```
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const session = await Recorder.start("https://example.com");
|
|
72
|
-
// ... user interacts ...
|
|
73
|
-
const recorded = await session.stop();
|
|
74
|
-
|
|
75
|
-
// Run with payloads
|
|
76
|
-
const result = await Runner.execute(recorded, ["xss-basic"]);
|
|
77
|
-
console.log(result.findings);
|
|
39
|
+
┌─────────────────────────────────────────────────────────┐
|
|
40
|
+
│ vulcn CLI │
|
|
41
|
+
├─────────────────────────────────────────────────────────┤
|
|
42
|
+
│ @vulcn/engine │
|
|
43
|
+
│ ┌─────────────────────┐ ┌──────────────────────────┐ │
|
|
44
|
+
│ │ DriverManager │ │ PluginManager │ │
|
|
45
|
+
│ │ • browser │ │ • payloads │ │
|
|
46
|
+
│ │ • api (soon) │ │ • detect-xss │ │
|
|
47
|
+
│ │ • cli (soon) │ │ • detect-reflection │ │
|
|
48
|
+
│ └─────────────────────┘ └──────────────────────────┘ │
|
|
49
|
+
└─────────────────────────────────────────────────────────┘
|
|
78
50
|
```
|
|
79
51
|
|
|
80
52
|
---
|
|
81
53
|
|
|
82
|
-
##
|
|
83
|
-
|
|
84
|
-
Start recording a session:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
vulcn record --url https://target.com/login
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Options:
|
|
91
|
-
|
|
92
|
-
- `--url, -u` — Start URL (required)
|
|
93
|
-
- `--output, -o` — Output file (default: `session.vulcn.yml`)
|
|
94
|
-
- `--browser, -b` — Browser (`chromium`, `firefox`, `webkit`)
|
|
95
|
-
- `--headless` — Run headless
|
|
96
|
-
|
|
97
|
-
When recording:
|
|
54
|
+
## 📦 Packages
|
|
98
55
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
Run a recorded session with payloads:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
vulcn run session.vulcn.yml --payload xss-basic --payload sqli-basic
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Options:
|
|
114
|
-
|
|
115
|
-
- `--payload, -p` — Payload to use (can specify multiple)
|
|
116
|
-
- `--headless` — Run headless (default: true)
|
|
117
|
-
- `--browser, -b` — Browser to use
|
|
118
|
-
|
|
119
|
-
### Built-in Payloads
|
|
120
|
-
|
|
121
|
-
| Payload | Category | Description |
|
|
122
|
-
| ------------ | -------- | ------------------------------ |
|
|
123
|
-
| `xss-basic` | XSS | Script tags and event handlers |
|
|
124
|
-
| `xss-event` | XSS | Event handler injection |
|
|
125
|
-
| `xss-svg` | XSS | SVG-based XSS |
|
|
126
|
-
| `sqli-basic` | SQLi | Basic SQL injection |
|
|
127
|
-
| `sqli-error` | SQLi | Error-based SQLi detection |
|
|
128
|
-
| `sqli-blind` | SQLi | Blind SQLi payloads |
|
|
129
|
-
|
|
130
|
-
List all payloads:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
vulcn payloads
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 📄 Session Format
|
|
139
|
-
|
|
140
|
-
Sessions are stored as YAML:
|
|
141
|
-
|
|
142
|
-
```yaml
|
|
143
|
-
version: "1"
|
|
144
|
-
name: Login Test
|
|
145
|
-
recordedAt: "2026-02-05T12:00:00Z"
|
|
146
|
-
browser: chromium
|
|
147
|
-
viewport:
|
|
148
|
-
width: 1280
|
|
149
|
-
height: 720
|
|
150
|
-
startUrl: https://example.com/login
|
|
151
|
-
steps:
|
|
152
|
-
- id: step_001
|
|
153
|
-
type: navigate
|
|
154
|
-
url: https://example.com/login
|
|
155
|
-
timestamp: 0
|
|
156
|
-
- id: step_002
|
|
157
|
-
type: input
|
|
158
|
-
selector: input[name="username"]
|
|
159
|
-
value: testuser
|
|
160
|
-
injectable: true
|
|
161
|
-
timestamp: 1500
|
|
162
|
-
- id: step_003
|
|
163
|
-
type: click
|
|
164
|
-
selector: button[type="submit"]
|
|
165
|
-
timestamp: 3000
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## 🩺 Browser Management
|
|
171
|
-
|
|
172
|
-
Check available browsers:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
vulcn doctor
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
Install Playwright browsers (if needed):
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
vulcn install chromium
|
|
182
|
-
vulcn install --all # Install all browsers
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## 🔧 CI/CD Integration
|
|
188
|
-
|
|
189
|
-
Vulcn returns exit code `1` when vulnerabilities are found:
|
|
190
|
-
|
|
191
|
-
```yaml
|
|
192
|
-
# GitHub Actions example
|
|
193
|
-
- name: Security Test
|
|
194
|
-
run: |
|
|
195
|
-
npm install -g vulcn
|
|
196
|
-
vulcn run tests/login.vulcn.yml --payload xss-basic --headless
|
|
197
|
-
```
|
|
56
|
+
| Package | Description |
|
|
57
|
+
| -------------------------------------------------------------------------------------------------- | ---------------------------------------- |
|
|
58
|
+
| [`vulcn`](https://www.npmjs.com/package/vulcn) | CLI tool |
|
|
59
|
+
| [`@vulcn/engine`](https://www.npmjs.com/package/@vulcn/engine) | Core engine with driver & plugin systems |
|
|
60
|
+
| [`@vulcn/driver-browser`](https://www.npmjs.com/package/@vulcn/driver-browser) | Browser recording with Playwright |
|
|
61
|
+
| [`@vulcn/plugin-payloads`](https://www.npmjs.com/package/@vulcn/plugin-payloads) | XSS, SQLi, SSRF payloads |
|
|
62
|
+
| [`@vulcn/plugin-detect-xss`](https://www.npmjs.com/package/@vulcn/plugin-detect-xss) | Execution-based XSS detection |
|
|
63
|
+
| [`@vulcn/plugin-detect-reflection`](https://www.npmjs.com/package/@vulcn/plugin-detect-reflection) | Pattern-based reflection detection |
|
|
198
64
|
|
|
199
65
|
---
|
|
200
66
|
|
|
201
67
|
## 📚 Documentation
|
|
202
68
|
|
|
203
|
-
|
|
204
|
-
|
|
69
|
+
**Full documentation is available at [docs.vulcn.dev](https://docs.vulcn.dev)**
|
|
70
|
+
|
|
71
|
+
- [Quickstart Guide](https://docs.vulcn.dev/quickstart)
|
|
72
|
+
- [CLI Reference](https://docs.vulcn.dev/cli/overview)
|
|
73
|
+
- [Driver System](https://docs.vulcn.dev/drivers/overview)
|
|
74
|
+
- [Plugin System](https://docs.vulcn.dev/plugins/overview)
|
|
75
|
+
- [API Reference](https://docs.vulcn.dev/api/overview)
|
|
205
76
|
|
|
206
77
|
---
|
|
207
78
|
|
|
208
|
-
##
|
|
79
|
+
## 🤝 Contributing
|
|
209
80
|
|
|
210
|
-
|
|
211
|
-
- [ ] Custom payload definitions
|
|
212
|
-
- [ ] SSRF and path traversal payloads
|
|
213
|
-
- [ ] Authenticated session support
|
|
214
|
-
- [ ] API endpoint testing
|
|
215
|
-
- [ ] Vulnerability severity scoring
|
|
81
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
216
82
|
|
|
217
83
|
---
|
|
218
84
|
|
|
219
85
|
## 📝 License
|
|
220
86
|
|
|
221
|
-
[
|
|
87
|
+
[AGPL-3.0](./LICENSE) © [rawlab](https://rawlab.dev)
|
|
222
88
|
|
|
223
89
|
---
|
|
224
90
|
|