H1-Bericht
Dies ist ein SecOps, AI Summarization-Bereich Automatisierungsworkflow mit 9 Nodes. Hauptsächlich werden Agent, HttpRequestTool, ChatTrigger, LmChatGoogleGemini und andere Nodes verwendet. Extrahieren von umsetzbaren Sicherheits-Erkenntnissen aus HackerOne-Berichten mit Google Gemini
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •Google Gemini API Key
Verwendete Nodes (9)
Kategorie
{
"id": "GQvrSUkdvgHiSl4W",
"meta": {
"instanceId": "c5257b5cf4d48704d636909c07c4408a69d6799d0a855eab46287eeb702c84b0",
"templateCredsSetupCompleted": true
},
"name": "H1 reports",
"tags": [
{
"id": "B57Byrk0DBYk6h5Q",
"name": "The Herald",
"createdAt": "2025-07-07T03:11:18.909Z",
"updatedAt": "2025-07-07T03:11:18.909Z"
}
],
"nodes": [
{
"id": "bedea6c7-e283-4339-9b7f-dd1d1bcf8016",
"name": "Google Gemini-Chat-Modell",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
576,
208
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-pro"
},
"credentials": {
"googlePalmApi": {
"id": "9X33EcTu2Vxq1AUX",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "ce8f1868-70e3-4b0a-8e6c-6078359b7d9e",
"name": "GET H1 report",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
912,
208
],
"parameters": {
"url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
"options": {},
"toolDescription": "Makes a request to \n```\nhttps://hackerone.com/reports/<hackerone-report-id>.json\n```\nexample:\n\nhttps://hackerone.com/reports/312543.json\nhttps://hackerone.com/reports/342543.json"
},
"typeVersion": 4.2
},
{
"id": "0e7065ce-f2aa-416d-9488-dbffa4bb0f67",
"name": "Bei Chat-Nachricht empfangen",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
448,
0
],
"webhookId": "0ffa61ef-4e16-43f7-a57b-7e103047dc9f",
"parameters": {
"public": true,
"options": {
"title": "H1 report summarizer",
"subtitle": "",
"customCss": "/* Font Import (place in your <head>) */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Fira+Code&display=swap');\n\n:root {\n /* 🎨 Color Palette - Minimal + Elegant */\n --chat--color-primary: #e74266;\n --chat--color-primary-shade-50: #d63b5d;\n --chat--color-primary-shade-100: #c73352;\n --chat--color-secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n\n --chat--color-white: #ffffff;\n --chat--color-light: #f9fafb;\n --chat--color-light-shade-50: #e5e7eb;\n --chat--color-light-shade-100: #d1d5db;\n --chat--color-medium: #9ca3af;\n --chat--color-dark: #111827;\n --chat--color-muted: #6b7280;\n\n /* Fonts & Sizing */\n --chat--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --chat--code-font: 'Fira Code', monospace;\n --chat--font-size: 1rem;\n\n /* Layout & Spacing */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.75rem;\n --chat--transition-duration: 0.25s;\n\n /* Window */\n --chat--window--width: 420px;\n --chat--window--height: 620px;\n --chat--window--box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1);\n\n /* Header */\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-white);\n --chat--heading--font-size: 1.4rem;\n\n /* Message Bubbles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: 0.85rem 1rem;\n --chat--message--border-radius: 0.75rem;\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--user--background: var(--chat--color-secondary);\n --chat--message--user--color: var(--chat--color-white);\n\n /* Input */\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: var(--chat--color-dark);\n --chat--input--border: 1px solid var(--chat--color-light-shade-100);\n --chat--input--border-radius: 0.75rem;\n --chat--input--placeholder: var(--chat--color-muted);\n\n /* Code Blocks */\n --chat--code--background: #111827;\n --chat--code--text: #f9fafb;\n}\n\n/* 🪟 Chat Window */\n.chat-window {\n width: var(--chat--window--width);\n height: var(--chat--window--height);\n background: var(--chat--color-light);\n box-shadow: var(--chat--window--box-shadow);\n border-radius: var(--chat--border-radius);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: var(--chat--font-family);\n -webkit-font-smoothing: antialiased;\n}\n\n/* 🧠 Header */\n.chat-header {\n background: var(--chat--header--background);\n color: var(--chat--header--color);\n padding: var(--chat--spacing);\n font-size: var(--chat--heading--font-size);\n font-weight: 600;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n}\n\n/* 📜 Message Container */\n.chat-messages {\n flex: 1;\n padding: var(--chat--spacing);\n overflow-y: auto;\n background: var(--chat--color-light);\n}\n\n/* 💬 Message Bubbles */\n.chat-message {\n max-width: 75%;\n padding: var(--chat--message--padding);\n border-radius: var(--chat--message--border-radius);\n margin-bottom: 0.75rem;\n font-size: var(--chat--message--font-size);\n line-height: 1.5;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n word-break: break-word;\n transition: 0.2s ease-in-out;\n}\n\n.chat-message.bot {\n background: var(--chat--message--bot--background);\n color: var(--chat--message--bot--color);\n align-self: flex-start;\n}\n\n.chat-message.user {\n background: var(--chat--message--user--background);\n color: var(--chat--message--user--color);\n align-self: flex-end;\n}\n\n/* 🧑💻 Code Block Styling - Enhanced Visibility */\n.chat-message pre {\n box-sizing: border-box;\n display: block;\n font-family: var(--chat--code-font), monospace;\n font-size: 0.9rem; /* Slightly larger font */\n line-height: 1.6; /* More spacing */\n background: #f8f8f8; /* Dark but not pure black */\n color: #333; /* Light gray for better readability */\n padding: 1rem;\n border-radius: 0.5rem;\n margin-top: 0.75rem;\n white-space: pre-wrap;\n word-break: break-word;\n overflow-x: auto;\n border: 1px solid #ddd; /* Subtle border */\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n\n/* Label above code blocks - More visible */\n.chat-message pre::before {\n content: \"payload\";\n display: block;\n font-size: 0.8rem;\n color: #666;\n margin-bottom: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n/* Syntax highlighting colors (example) */\n.chat-message pre .keyword { color: #569cd6; } /* Blue for keywords */\n.chat-message pre .string { color: #ce9178; } /* Orange for strings */\n.chat-message pre .comment { color: #6a9955; } /* Green for comments */\n.chat-message pre .number { color: #b5cea8; } /* Light green for numbers */\n\n/* Improved scrollbar */\n.chat-message pre::-webkit-scrollbar {\n height: 8px; /* Thicker scrollbar */\n background-color: #2a2a2a;\n}\n.chat-message pre::-webkit-scrollbar-thumb {\n background: #5a5a5a;\n border-radius: 4px;\n}\n\n/* ✍️ Typing Indicator */\n.chat-typing {\n color: var(--chat--color-muted);\n font-style: italic;\n margin-top: 0.5rem;\n animation: blink 1s infinite;\n}\n@keyframes blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.4; }\n}\n\n/* ⌨️ Input Footer */\n.chat-input-area {\n display: flex;\n padding: var(--chat--spacing);\n border-top: 1px solid var(--chat--color-light-shade-100);\n background: var(--chat--color-white);\n}\n\n.chat-input {\n flex: 1;\n font-family: var(--chat--font-family);\n font-size: var(--chat--font-size);\n background: var(--chat--input--background);\n color: var(--chat--input--text-color);\n border: var(--chat--input--border);\n border-radius: var(--chat--input--border-radius);\n padding: 0.75rem 1rem;\n}\n.chat-input::placeholder {\n color: var(--chat--input--placeholder);\n}\n\n/* 📤 Send Button */\n.chat-send-btn {\n margin-left: 0.75rem;\n background: var(--chat--color-primary);\n color: var(--chat--color-white);\n border: none;\n border-radius: var(--chat--border-radius);\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n}\n.chat-send-btn:hover {\n background: var(--chat--color-primary-shade-50);\n}\n\n/* 💝 Attribution Below Header */\n.chat-header::after {\n content: \"Made with ❤️ by ethicxl\";\n display: block;\n text-align: right;\n padding: 0.5rem var(--chat--spacing);\n background: var(--chat--color-dark);\n font-size: 0.75rem;\n color: var(--chat--color-medium);\n font-weight: 400;\n font-family: var(--chat--font-family);\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n}\n\n/* Remove the problematic positioning */\n.chat-input-area {\n position: static;\n margin-bottom: 0;\n}"
},
"initialMessages": "Hey!\nSend your report's link down below"
},
"typeVersion": 1.1
},
{
"id": "5f51af95-aa06-43f8-b7c9-c5ff5a4298cb",
"name": "H1 report summarizer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
640,
0
],
"parameters": {
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "=You are an expert AI assistant designed for a high-level bug bounty hunter. Your task is to extract and summarize only **unique, high-impact technical insights** from security reports, not general summaries.\n\nTool Calling:\n\n* Before you write anything you must:\n* Call the tool `GET H1 report` exactly once, passing the full URL you received.\n* Parse the returned JSON for report contents (they would be in JSON)\n\nFocus your analysis on:\n- New payloads, edge-case techniques, or chaining methods\n- Root cause analysis with practical pentesting value\n- Workflow insights that save time or increase discovery\n- Snippets that can be reused or adapted (code, diffs, commands)\n- CVSS/impact context only if it reflects real-world exploitation potential\n\nYour tone is concise, factual, and tailored for advanced hunters. Do not include background explanations or definitions.\n\nFormat the output as:\n\n1. **Summary** (1–2 sentence BLUF)\n2. **Techniques**:\n - *Name*: Short tag for the finding (e.g., SSRF via PDF render)\n - *Context*: Where/how the bug was triggered\n - *Technique*: Raw payload, code, diff, or steps\n - *Impact*: What the attacker could achieve\n3. **Pro Tip** (optional): A short insight that can be reused elsewhere\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "61f8445f-7789-44ea-8ed8-edd54eba19d7",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
1168,
-128
],
"parameters": {
"color": 4,
"width": 376,
"height": 208,
"content": "## 🎯 WORKFLOW PURPOSE\n\nConverts HackerOne report URLs into actionable security insights for bug bounty hunters.\n\n**INPUT**: H1 report URL (e.g., hackerone.com/reports/123456.json)\n**OUTPUT**: Structured technical analysis with payloads & techniques"
},
"typeVersion": 1
},
{
"id": "19e3ab93-8027-423d-bc98-5d21eb66db2a",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-32
],
"parameters": {
"width": 352,
"height": 204,
"content": "### 📨 CHAT INTERFACE\n\n**Setup Required**:\n- Deploy webhook publicly\n- Send H1 URLs ending in .json\n- Custom CSS for pentester theme\n\n**Format**: https://hackerone.com/reports/ID"
},
"typeVersion": 1
},
{
"id": "56c29618-9568-4b8c-aeff-81cfb820bd1f",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-288
],
"parameters": {
"width": 268,
"height": 200,
"content": "### 🧠 Main Agent\n\n**Requires**: Google Gemini API key\n\n**Purpose**: \n- Orchestrates analysis workflow\n- Calls HTTP tool automatically\n- Formats output for hunters"
},
"typeVersion": 1
},
{
"id": "3cb80e59-054b-4d8f-8786-e63595b888ec",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
352
],
"parameters": {
"width": 248,
"height": 196,
"content": "### 🔧 GEMINI LLM\n\n**Config**: Use gemini-2.5-pro\n**Auth**: Google PaLM API credentials\n\n**Note**: Can substitute with other models if needed"
},
"typeVersion": 1
},
{
"id": "f0e4251b-f830-47a9-8709-63b37472f9ff",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
912,
368
],
"parameters": {
"width": 264,
"height": 200,
"content": "### 📡 HTTP FETCHER\n\n**Target**: HackerOne JSON API\n**Method**: GET request\n**Security**: No hardcoded credentials\n\n**Auto-called** by AI agent with URL from chat"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8fbd7882-d242-44cd-a45c-ef598ba294d8",
"connections": {
"ce8f1868-70e3-4b0a-8e6c-6078359b7d9e": {
"ai_tool": [
[
{
"node": "5f51af95-aa06-43f8-b7c9-c5ff5a4298cb",
"type": "ai_tool",
"index": 0
}
]
]
},
"5f51af95-aa06-43f8-b7c9-c5ff5a4298cb": {
"main": [
[]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "5f51af95-aa06-43f8-b7c9-c5ff5a4298cb",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "5f51af95-aa06-43f8-b7c9-c5ff5a4298cb",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Sicherheitsbetrieb, KI-Zusammenfassung
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Diesen Workflow teilen