企業級弱點掃描與風險治理平台
VulnScan.Web 是目前 repo 唯一維護的正式版本,採用 ASP.NET Core MVC / .NET 10 建構,將資產盤點、弱點掃描、結果整併、修復追蹤與正式報告集中在同一個 Web 平台。它不是只會執行單一掃描命令的工具,而是把「發現問題」一路延伸到「可交付、可追蹤、可稽核」的弱點管理流程。
VulnScan.Web 是一套自研的企業弱點掃描與風險治理平台,整合 Nmap、Nuclei、Greenbone / OpenVAS、OWASP ZAP 等外部掃描工具,提供資產管理、弱點分析、風險分級、改善追蹤、原始證據保存與 PDF / Excel 報告功能。
本平台可協助組織執行 ISO/IEC 27001:2022 相關的技術弱點評估、風險處理與稽核證據管理。平台負責整合外部掃描工具產生的技術證據,不單獨作為 ISO/IEC 27001 符合性判定依據;最終風險評估、改善核准與稽核結論,仍應由獨立審查人員或第三方稽核單位確認。
因此,本產品的正式定位是:
自研弱點掃描與風險治理平台,整合第三方掃描引擎,協助產生 ISO/IEC 27001 稽核佐證資料。
本專案不宣稱「保證通過 ISO/IEC 27001 稽核」、「本身具有 ISO/IEC 27001 認證」,也不取代組織的 ISMS 文件、風險評估、風險處理計畫、內部稽核與管理審查流程。
| 能力 | 實作內容 | 適合用途 |
|---|---|---|
| 資產管理 | 電腦、伺服器、NAS、防火牆、交換器與其他網通設備 | 建立可管理的受測範圍 |
| Nmap | 主機存活、連接埠、服務、產品版本、OS 與 NSE 風險檢查 | 網路盤點與服務發現 |
| Nuclei | CVE、一般弱點、錯誤設定、曝露、預設帳密與 Web DAST 範本 | 快速擴充 Web / API / 基礎設施檢查 |
| Greenbone / OpenVAS | 透過 GMP API 建立掃描任務、查詢報表與同步結果 | 完整網路弱點評估 |
| OWASP ZAP | Docker API、Web 目標連線測試、Spider、Passive / Active Scan 結果回寫 | Web 應用程式安全檢測 |
| 相依性掃描 | .NET、npm、Python 套件弱點解析 |
找出第三方套件風險 |
| 外部結果匯入 | Nuclei JSON/JSONL、Nessus CSV/XML、Greenbone 報表 | 統一既有掃描來源 |
- 以
Critical / High / Medium / Low / Info分層呈現風險,不把服務發現與實際漏洞混在一起。 - 同時保存主機、連接埠、服務、產品、版本、CVE、CVSS、證據與原始結果檔。
- 針對版本命中本地漏洞資料庫,支援產品別名、CPE 與 semver 範圍比對。
- 弱點可指定負責人、狀態、到期日、改善備註與附件,形成可追蹤的修復工作流。
- 所有重要操作保留 AuditLog,適合內部稽核與資安管理流程。
PDF / Excel 報表可包含:
- 任務名稱、掃描期間、受測資產與掃描工具組合
- Critical、High、Medium、Low、Info 統計與主機風險排行
- 服務與開放埠明細
- 弱點名稱、CVE 編號、CVSS 分數、風險說明與影響主機
- 建議修正方式、參考網址與改善追蹤資訊
- 掃描軟體版本、Nmap / Nuclei 引擎版本、Nuclei 模板版本、特徵碼與弱點資料庫更新時間
- 正式直式初測報告版型:封面、範圍、方法、統計、排行、修正建議、改善規劃與總結
| 管理階段 | VulnScan.Web 提供的能力 |
|---|---|
| 盤點 | 資產清冊、白名單、主機 / 網段 / Web URL 目標管理 |
| 掃描 | 任務建立、多資產勾選、掃描類型、掃描工具與掃描強度設定 |
| 發現 | Host、Port、Service、Product、Version、OS 與 Web 技術資訊 |
| 評估 | CVE / CVSS、版本比對、錯誤設定、憑證風險、曝露管理介面與風險提示 |
| 整併 | Nmap、Nuclei、ZAP、Greenbone、Nessus 與相依性掃描結果統一入庫 |
| 改善 | 弱點狀態、負責人、期限、備註、附件與改善歷程 |
| 交付 | PDF / Excel、原始結果下載、掃描紀錄與稽核紀錄 |
| 維運 | SystemCheck、工具版本、模板 / Feed 更新時間、Docker 容器與服務狀態 |
- 以資產為中心:掃描不是一次性的命令執行,而是與設備、任務、服務、漏洞及報告建立關聯。
- 多引擎交叉驗證:Nmap 負責盤點,Nuclei / ZAP 負責 Web 與範本檢查,Greenbone / OpenVAS 負責完整網路弱點評估。
- 證據可追溯:保存原始輸出、掃描工具、版本、特徵碼 / Feed 與執行紀錄,讓報告結果可以回查。
- 更新狀態可見:Nmap、Nuclei、Nuclei 模板、Greenbone feed 與 ZAP Docker 狀態可在 SystemCheck 查看。
- 可落地部署:支援 SQLite 開發模式、MSSQL 正式環境、Docker 服務與 Windows 一鍵啟動 / 停止。
- 適合持續改善:弱點不只呈現嚴重度,也能被指派、追蹤、更新狀態並納入後續報告。
本系統目前維護範圍以 VulnScan.Web 為準;舊的 Python / FastAPI / Celery / Docker 弱掃系統已自 repo 移除,不再維護。
- VulnScan.Web
- VulnScan.Web.Tests - 整合測試
- VulnScan.Web.slnx
- start_vulnscan_web.bat
- stop_vulnscan_web.bat
- VulnScan_Web_操作手冊.md
- VulnScan_Web_系統介紹.md - 對外產品與功能介紹
- VulnScan_Web_SPEC.md
- Dockerfile
- docker-compose.yml
直接執行:
G:\codex_pg\vulnshield-iso\start_vulnscan_web.bat一鍵啟動現在會同時:
- 啟動
VulnScan.Web - 建立
Nuclei / Nessus匯入目錄 - 若本機
Docker可用,另開一個視窗自動下載官方Greenbone Community Editioncompose 並嘗試拉起本機OpenVAS / GreenboneDocker 環境 - 若本機
Docker可用,另開一個視窗自動拉起本機OWASP ZAPdaemon Docker 環境 OpenVAS / ZAPbootstrap 腳本已修正 PowerShellparam(...)載入順序,雙擊 BAT 不應再因腳本語法錯誤跳出紅色視窗OpenVAS / ZAPbootstrap 目前改為背景隱藏執行;若發生未處理例外,會寫入對應bootstrap-status.txt與bootstrap-state.txt,不再只是一閃而過的紅色錯誤視窗start_vulnscan_web.bat啟動VulnScan.Web本體時也改為背景隱藏執行,不再另外跳出 Web 專用cmd視窗;標準輸出 / 錯誤會寫到App_Data\web-stdout.log與App_Data\web-stderr.log- 若背景
VulnScan.Web啟動失敗,start_vulnscan_web.bat會直接在主視窗列出web-process.pid、web-stdout.log與web-stderr.log的最後幾行內容,方便立即看到錯誤原因 - 背景啟動
dotnet run已改用獨立參數陣列傳入,不再把整段命令列誤傳為單一參數 - 若
Docker Desktop未啟動、無權限讀取~/.docker/config.json,或無法連線到docker_engine,bootstrap 只會記錄狀態後略過,不會中斷主程式啟動 start_vulnscan_web.bat會先檢查 Docker Desktop;若完全未安裝,會下載官方安裝程式並啟動 per-user 安裝流程。安裝後若需要重開機或首次接受授權,批次檔會停止並顯示原因,重開機後再次執行即可start_vulnscan_web.bat結尾會直接顯示OpenVAS / Greenbone與OWASP ZAP的 bootstrap 摘要,狀態分為READY / STARTING / SKIPPED / FAILEDstart_vulnscan_web.bat現在會在 Web 登入頁可開啟後,繼續等待OpenVAS / Greenbone與OWASP ZAP進入READY / SKIPPED / FAILED明確狀態,再輸出最終摘要,減少還要手動確認服務是否真的連通系統檢查頁也會直接讀取兩組 Docker bootstrap 摘要檔,顯示目前啟動狀態、最後更新時間、版本來源、入口 URL 與狀態 / 紀錄檔路徑系統檢查頁會把最後狀態更新時間、最後成功更新時間與目前版本分開顯示,避免把單純檢查時間誤判成真的版本更新時間系統檢查頁新增「重新整理 OpenVAS / ZAP 狀態」按鈕,可在不重啟 Web 的情況下重跑 Docker 狀態偵測系統檢查頁會額外顯示Greenbone登入入口 / 管理員帳號提示、ZAP API Key狀態、Docker image reference / image id / image digest,以及OpenVAS feed子容器摘要系統檢查頁現在會直接列出OpenVAS / Greenbone與OWASP ZAP的docker compose容器清單,包含容器名稱、image、service、建立時間、狀態與 portsOWASP ZAP的 readiness 判定已改成從容器內部直接檢查 API 版本端點,不再受 Windows 本機 proxy 干擾OpenVAS / Greenbone的 readiness 判定已改成以核心服務 (gvmd/gsad/nginx) 為準;即使部分 feed sidecar 還在同步,系統也不會把整體誤判成不可用
啟動後登入頁:
http://localhost:5186/Auth/Login- 若
OpenVAS Docker成功拉起,Greenbone Web UI 預設可從https://127.0.0.1:9392開啟 - 若
OWASP ZAP Docker成功拉起,ZAP API 預設可從http://127.0.0.1:8080使用
停止系統時可直接執行:
G:\codex_pg\vulnshield-iso\stop_vulnscan_web.bat這支腳本會:
- 停止背景執行中的
VulnScan.Web程序(依web-process.pid) - 啟動與停止流程都會優先直接停止所有
VulnScan.Web.exe背景程序;web-process.pid只作為輔助資訊,避免舊程序卡住bin\Debug\net10.0\VulnScan.Web.exe - 停止
OpenVAS / GreenboneDocker compose 服務 - 停止
OWASP ZAPDocker compose 服務 - 保留既有容器、image、volume 與 log,不會直接刪除資料
Set-Location G:\codex_pg\vulnshield-iso
dotnet build
dotnet run --project .\VulnScan.Web\VulnScan.Web.csproj開發模式預設使用 SQLite:
- 設定檔:VulnScan.Web/appsettings.Development.json
- DB 檔案:
G:\codex_pg\vulnshield-iso\VulnScan.Web\App_Data\vulnscan-dev.db
正式環境可切換為 SQL Server:
- 設定檔:VulnScan.Web/appsettings.json
Development 預設 bootstrap 帳號:
admin / Admin123!Demosecmgr / Security123!Demoscanner / Scanner123!Demoviewer / Viewer123!Demo
四個帳號不是只有名稱不同,登入後會依角色限制畫面操作與後端 API 權限:
| 帳號 | 角色 | 可執行功能 | 限制 |
|---|---|---|---|
admin |
系統管理員 (Admin) |
所有功能、使用者管理、白名單、Webhook、系統檢查、工具更新、資產、掃描、匯入、改善與報告 | 無 |
secmgr |
資安主管 (SecurityManager) |
資產管理、掃描任務、掃描執行、工具匯入、Greenbone 設定與同步、系統檢查、弱點改善與報告 | 不能管理使用者、掃描白名單與 Webhook |
scanner |
弱掃分析員 (Scanner) |
建立與執行掃描、服務測試、資產管理、Nuclei/Nessus 匯入、弱點改善與報告 | 不能更新工具、修改 Greenbone 設定、管理使用者、白名單與 Webhook |
viewer |
檢視者 (Viewer) |
檢視儀表板、資產、掃描任務與紀錄、服務結果、弱點、改善歷程、報告與使用手冊 | 不能新增、修改、刪除、執行掃描、匯入或修改系統設定 |
登入後側欄會顯示角色中文名稱與職責。權限同時在 Controller 後端驗證,不是只靠隱藏畫面按鈕;未授權的直接 URL/API 呼叫也會被拒絕。
若資料庫中已有舊帳號,請重新啟動系統讓 bootstrap 設定同步;若角色或密碼仍未同步,可執行 reset_vulnscan_web_accounts.bat,只會重設設定檔中的 bootstrap 帳號,不會刪除掃描結果或其他資料。
系統檢查 頁的 Nuclei 卡片提供「更新 Nuclei 引擎與模板」功能。按下後系統會先執行 nuclei -update-templates 更新 PoC 模板庫,再執行 nuclei -update 更新掃描引擎,並保存最後更新時間、結果與命令輸出摘要到 VulnScan.Web/App_Data/tool-update-state.json。更新需要管理員或資安主管權限,完成後請重新整理系統檢查頁確認引擎版本與模板版本。
VulnScan:NucleiPath 預設值為 nuclei,不需要把完整路徑硬寫在兩份設定檔中。系統會自動依序尋找:設定值指定的有效檔案、系統 PATH 命令、應用程式 / tools 目錄,以及 Windows 常見的 Nuclei 安裝位置(包含 C:\tools\nuclei\nuclei.exe、%USERPROFILE%\go\bin、%LOCALAPPDATA%\nuclei)。請到 系統檢查 查看實際解析路徑與來源。
若要執行 Nuclei 直接掃描,系統需可取得 nuclei.exe。系統會依序檢查:
VulnScan:NucleiPath(appsettings.json)- 系統
PATH
若未找到,執行 Nuclei 掃描任務時會拋出 InvalidOperationException 並記錄失敗的 ScanRun。
支援的 Nuclei 範本分類(ScanProfile):
All- 所有範本cves- 已知 CVEvulnerabilities- 一般弱點misconfiguration- 錯誤設定exposures- 曝露default-logins- 預設登入
支援的 Nuclei Web DAST 分類:
web-sqli- SQL Injectionweb-xss- Cross-Site Scriptingweb-lfi- LFI / RFIweb-ssrf- SSRFweb-rce- Remote Code Executionweb-tech- Web Tech Detection
支援 7 種掃描強度:
Quick- 快速連接埠掃描(-T4 -F)QuickPlus- 快速 + 版本偵測(-T4 -sV)Standard- 標準 + 版本 + OS(-T4 -sV -O)Deep- 深度掃描(-T4 -A -sV --version-intensity 9)Stealth- 隱匿模式(-T2 -sS -sV)VulnScript- 安全腳本掃描(-T4 -sV --script vuln)CredentialCheck- 預設帳密檢測(-T4 -sV --script cred-summary)
支援掃描專案目錄中的第三方套件弱點:
- .NET 專案:執行
dotnet list package --vulnerable --include-transitive,解析移植性相依性弱點 - npm 專案:執行
npm audit --json,解析 JavaScript 套件弱點 - Python 專案:執行
pip-audit --json,解析 Python 套件弱點
相依性掃描結果會寫入 Vulnerabilities 資料表(Protocol = "dependency"),可與 Nmap / Nuclei 結果合併檢視。
掃描完成後自動檢查檢測到的軟體版本是否落在已知 CVE 範圍內:
- 內建本地漏洞資料庫(
App_Data/vulnerability-db/known-vulnerabilities.json) - 支援完整 semver 範圍語法(
</>/=/>=/<=/-範圍 /||OR) - 支援
AssetPorts.ServiceProduct/ServiceVersion與Vulnerabilities.DetectedVersion雙來源 - 產品資料庫現已支援
Alias/CPE對映,PatchVersionService不再只接受完全相同的產品名稱 Nmap結果現在會額外保存hostname、OS match、extrainfo、tunnel、method、confidence等指紋摘要到RiskHint,供 CVE 比對時輔助判定產品- 當
ServiceProduct缺失時,系統會嘗試從ServiceName、VulnName、Description、Evidence與RiskHint內的產品特徵字串反推對應產品 - 即使尚未命中 CVE,
Nmap也會同步建立Infofinding(主機存活、開放埠、服務與版本發現),避免設備頁與報告看起來完全沒有任何檢測結果 - 嚴重度分級完整支援
Critical / High / Medium / Low / Info:Nmap會產生Info(存活 / 服務發現)、Low/Medium(管理介面 / 高風險服務 / 弱加密等啟發式風險),High/Critical則保留給實際命中的 CVE、NSE vuln script、Nuclei、ZAP、Nessus、Greenbone 等結果 - 可在
appsettings.json中設定VulnScan:EnablePatchVersionCheck: false關閉
建立或編輯掃描任務時,可在表單中透過勾選清單選取多個資產(Many-to-Many ScanJob ↔ Asset),系統會自動將所選資產的 IP 寫入目標範圍(空白分隔),取代手動輸入 IP。
既有任務(無 ScanJobAsset 紀錄)仍可正常執行,系統會回退使用 TargetRange 欄位值。
掃描任務 頁的前置檢查已改為優先讀取既有 bootstrap 狀態檔,不再每次進頁都即時執行 Docker inspect;任務列表與資產勾選清單也改為輕量投影查詢,減少頁面等待時間。
建立或編輯掃描任務時,可在表單中切換掃描工具(Nmap / Nuclei / OWASP ZAP / 相依性掃描),並根據所選工具自動切換對應的 profile 選項。
OWASP ZAP 模式需手動輸入 http:// / https:// Web 目標;系統支援 ZapQuick(Spider + Passive Scan)與 ZapFull(Spider + Active Scan)兩種模式,完成後會把告警寫回 ScanRuns、Vulnerabilities 與原始 JSON 結果檔。
若要執行內建掃描,Windows 主機仍需可取得 nmap.exe。系統會依序檢查:
VulnScan:NmapPath- 系統
PATH - 常見安裝路徑
系統檢查 頁的 Nmap 卡片提供「更新 Nmap 引擎」功能。Windows 上 Nmap 沒有與 Nuclei 相同的自我更新命令,因此系統會從官方下載頁解析最新版安裝檔、下載並啟動安裝程式;若出現 UAC 或安裝精靈,需完成安裝後重新整理狀態。Nmap 沒有 PoC 模板庫,因此模板版本欄位會標示不適用。
C:\Program Files (x86)\Nmap\nmap.exeC:\Program Files\Nmap\nmap.exeC:\Nmap\nmap.exe
若未找到:
掃描任務頁會先顯示前置檢查未通過立即掃描按鈕會停用SystemCheck頁可直接查看狀態- Windows 上若角色為
Admin或SecurityManager,可直接按直接安裝 Nmap
Nmap 一鍵安裝流程會:
- 讀取官方下載頁
https://nmap.org/download.html - 掃描官方下載頁與
https://nmap.org/dist/中所有nmap-*-setup.exe - 自動選擇最新版本
- 下載到
VulnScan.Web\App_Data\Installers - 啟動官方 Windows installer
掃描結果 / 紀錄- 看每次掃描是否成功、錯誤原因、Host / Open Port / 弱點數
服務結果- 看實際掃到的
Port / Service / Product / Version
- 看實際掃到的
弱點結果- 看真正的弱點明細、版本、嚴重度、改善狀態
報告 / 匯出- 看摘要 KPI,並輸出
Excel / PDF - PDF 會套用正式初測報告格式,章節結構可比照
初測報告類型交付文件
- 看摘要 KPI,並輸出
系統檢查- 看
Nmap、Greenbone、OpenVAS Docker、OWASP ZAP Docker、SQLite / MSSQL狀態 - 可直接從 Web UI 觸發
OpenVAS / Greenbone與OWASP ZAP更新到最新版本
- 看
start_vulnscan_web.bat 會自動另開一個 PowerShell 視窗執行:
- start_greenbone_openvas_docker.ps1
這支腳本會:
- 檢查
docker是否已安裝且正在執行 - 從 Greenbone 官方文件位置下載最新
compose.yaml - 在
VulnScan.Web\App_Data\GreenboneCommunityDocker建立 OpenVAS Docker 工作目錄 - 執行
docker compose up -d - 在獨立視窗回報目前狀態與 Greenbone UI 入口
注意:
- 第一次拉起 Greenbone Docker 可能需要很久,因為會下載多個大型 image 與 feed data
- 若 Docker Desktop 目前不是
Linux containers模式,腳本會跳過並提示 - 這段流程失敗不會阻斷
VulnScan.Web啟動 - 最新狀態摘要檔:
VulnScan.Web\App_Data\GreenboneCommunityDocker\bootstrap-state.txt - 詳細狀態記錄檔:
VulnScan.Web\App_Data\GreenboneCommunityDocker\bootstrap-status.txt - Web UI 可從
系統檢查頁直接按「更新 OpenVAS / Greenbone 到最新版本」,背景會執行docker compose pull後再up -d - 若核心服務已就緒但
scap-data等 feed 容器仍在同步,系統檢查會優先顯示READY,避免因官方 compose 的附屬健康檢查把整體狀態誤判為失敗 系統檢查頁的OpenVAS / Greenbone Docker卡片可直接看到所有 compose 容器明細,方便核對gvmd / gsad / nginx / scap-data / notus-data等實際狀態
start_vulnscan_web.bat 也會自動另開一個 PowerShell 視窗執行:
- start_owasp_zap_docker.ps1
這支腳本會:
- 檢查
docker是否已安裝且正在執行 - 在
VulnScan.Web\App_Data\OwaspZapDocker建立 ZAP Docker 工作目錄 - 產生本機 ZAP API Key 檔案
- 建立本機
compose.yaml - 執行
docker compose up -d啟動zaproxy/zap-stable
預設:
- ZAP API:
http://127.0.0.1:8080 - API Key 檔案:
VulnScan.Web\App_Data\OwaspZapDocker\zap-api-key.txt
注意:
- ZAP 目前以 Docker daemon API 執行,並已由
VulnScan.Web掃描任務提供連線測試、目標檢查與結果回寫;若目標無法從 Docker 容器連線,系統會將診斷原因寫入掃描紀錄 - 這段流程失敗同樣不會阻斷
VulnScan.Web啟動 - 最新狀態摘要檔:
VulnScan.Web\App_Data\OwaspZapDocker\bootstrap-state.txt - 詳細狀態記錄檔:
VulnScan.Web\App_Data\OwaspZapDocker\bootstrap-status.txt - Web UI 可從
系統檢查頁直接按「更新 OWASP ZAP 到最新版本」,背景會執行docker compose pull後再up -d OWASP ZAP啟動完成後,系統會以容器內部core/view/versionAPI 驗證2.17.0等實際版本回應,而不是只看容器是否存在SystemCheck的OWASP ZAP Docker卡片也會顯示 compose 容器列與 ports,方便確認 API 入口是否真的綁定到本機
PDF 報表目前已改為正式初測報告格式,內容包含:
- 封面頁
- 主機系統安全掃描說明
- 風險分級表
- 使用弱點掃描資訊(掃描軟體、軟體版本、特徵碼版本、弱點資料庫版本)
- 執行計畫與檢測時程
- 檢測項目及範圍
- 漏洞數量統計與排行
- 建議修正弱點說明
- 風險評估與改善作法
- 改善任務規劃
- 總結與附件說明
目前版面也已做正式交付風格強化:
- 封面加入品牌抬頭、交付摘要與 KPI 資訊卡
- 內頁加入頁首識別列與章節色帶
- 表格改為條紋底色與統一表頭樣式
- 弱點建議 / 風險評估改為文件卡片區塊,降低系統匯出感
若需調整抬頭、受測單位、作業說明或掃描軟體版本,可修改:
- VulnScan.Web/appsettings.json
- VulnScan.Web/appsettings.Development.json
設定路徑:
VulnScan:ReportTemplate:OrganizationNameVulnScan:ReportTemplate:ReportTitleVulnScan:ReportTemplate:ReportSubtitleVulnScan:ReportTemplate:PreparedByVulnScan:ReportTemplate:IntroductionVulnScan:ReportTemplate:WorkMethodVulnScan:ReportTemplate:ScopeStatementVulnScan:ReportTemplate:ScanSoftwareNameVulnScan:ReportTemplate:ScanSoftwareVersionVulnScan:ReportTemplate:SignatureVersion
- 本 repo 現在只維護
VulnScan.Web - 舊的
src/、tests/、Dockerfile、docker-compose.yml、start_system.*已移除 - 啟動、使用、報告與維運流程都應以
VulnScan.Web為準
本專案已內建以下生產環境基礎建設:
- 全域例外處理中介層:Dev 模式顯示開發者詳細錯誤頁(黃色畫面含堆疊),Prod 模式 API 回傳 JSON 錯誤、MVC 導向錯誤頁
- Swagger / OpenAPI:瀏覽
GET /openapi/v1.json取得 API 規格,支援 API 控制器自動產生文件 - SignalR 即時通知:
/hub/notifications端點,掃描狀態變更時主動推送到瀏覽器,支援自動重連與 Toast 通知 - Rate Limiting:API 端點每分鐘 100 次請求限制(開發環境 200 次),佇列溢位回傳 429
- Webhook 匯出:掃描完成時自動發送 HTTP POST 至設定的 Webhook URL,支援 HMAC-SHA256 簽章驗證
- Docker 容器化:
Dockerfile+docker-compose.yml,SQL Server + VulnScan.Web 一鍵部署 - 整合測試:
VulnScan.Web.Tests專案,使用 xUnit + Moq + EF Core SQLite InMemory - 網頁應用弱掃:支援 Nuclei Web DAST 分類(SQLi / XSS / LFI / SSRF / RCE / Tech Detection)
- 帳號權限檢測:Nmap CredentialCheck profile,掃描預設帳密風險
- 相依性掃描:支援 .NET (
dotnet list vulnerable)、npm (npm audit)、Python (pip-audit) - 主動 Patch 版本比對:掃描後自動比對軟體版本與本地 CVE 資料庫,支援 semver 範圍語法
- dotnet build:✅ 通過(0 警告 0 錯誤)
- 單元測試:✅ 16 項全部通過(xUnit + Moq + EF Core InMemory/SQLite)
- E2E 整合測試:
e2e-test.ps1覆蓋登入流程、主要頁面可用性驗證
| 問題 | 狀態 |
|---|---|
WebhookSettings 表未自動建立(EnsureCreated() 未涵蓋) |
🔴 需 EF Core Migration |
Dashboard/RunningScans API 回傳 404 |
🔴 路由待確認 |
| 部分 POST 回傳 200 而非 302(表單欄位名稱不符) | 🔴 需比對 Controller 參數 |
目前下一輪優先項目:
UsersController與使用者管理頁EF Core Migration,取代EnsureCreated()Greenbone測試連線與更完整的同步治理- 為
DependencyScanService/PatchVersionService補上單元測試 - 修復已知 E2E 問題(WebhookSettings 表、API 路由、POST 欄位名稱)