import {
Recorder,
Runner,
PluginManager,
parseSession,
stringifySession,
} from "@vulcn/engine";
import detectXss from "@vulcn/plugin-detect-xss";
import payloadsPlugin from "@vulcn/plugin-payloads";
// Record a session
const recording = await Recorder.start("https://example.com", {
browser: "chromium",
headless: false,
});
// Wait for user to finish interacting
// ...
const session = await recording.stop();
// Save session
const yaml = stringifySession(session);
await fs.writeFile("session.vulcn.yml", yaml);
// Set up plugins
const manager = new PluginManager();
manager.addPlugin(payloadsPlugin, { builtin: true });
manager.addPlugin(detectXss, { detectDialogs: true });
await manager.initialize();
// Run security tests
const result = await Runner.execute(
session,
{
headless: true,
onFinding: (finding) => {
console.log(`Found: ${finding.title}`);
},
},
{ pluginManager: manager },
);
console.log(`Tested ${result.payloadsTested} payloads`);
console.log(`Found ${result.findings.length} vulnerabilities`);
// Cleanup
await manager.destroy();