Skip to content
 
 

Latest commit

 

History

69 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VulnScan.Web

企業級弱點掃描與風險治理平台

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 應用程式安全檢測
相依性掃描 .NETnpm、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 Edition compose 並嘗試拉起本機 OpenVAS / Greenbone Docker 環境
  • 若本機 Docker 可用,另開一個視窗自動拉起本機 OWASP ZAP daemon Docker 環境
  • OpenVAS / ZAP bootstrap 腳本已修正 PowerShell param(...) 載入順序,雙擊 BAT 不應再因腳本語法錯誤跳出紅色視窗
  • OpenVAS / ZAP bootstrap 目前改為背景隱藏執行;若發生未處理例外,會寫入對應 bootstrap-status.txtbootstrap-state.txt,不再只是一閃而過的紅色錯誤視窗
  • start_vulnscan_web.bat 啟動 VulnScan.Web 本體時也改為背景隱藏執行,不再另外跳出 Web 專用 cmd 視窗;標準輸出 / 錯誤會寫到 App_Data\web-stdout.logApp_Data\web-stderr.log
  • 若背景 VulnScan.Web 啟動失敗,start_vulnscan_web.bat 會直接在主視窗列出 web-process.pidweb-stdout.logweb-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 / GreenboneOWASP ZAP 的 bootstrap 摘要,狀態分為 READY / STARTING / SKIPPED / FAILED
  • start_vulnscan_web.bat 現在會在 Web 登入頁可開啟後,繼續等待 OpenVAS / GreenboneOWASP 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 / GreenboneOWASP ZAPdocker compose 容器清單,包含容器名稱、image、service、建立時間、狀態與 ports
  • OWASP 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 / Greenbone Docker compose 服務
  • 停止 OWASP ZAP Docker 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!Demo
  • secmgr / Security123!Demo
  • scanner / Scanner123!Demo
  • viewer / 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 引擎與模板」功能。按下後系統會先執行 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。系統會依序檢查:

  1. VulnScan:NucleiPath(appsettings.json)
  2. 系統 PATH

若未找到,執行 Nuclei 掃描任務時會拋出 InvalidOperationException 並記錄失敗的 ScanRun

支援的 Nuclei 範本分類(ScanProfile):

  • All - 所有範本
  • cves - 已知 CVE
  • vulnerabilities - 一般弱點
  • misconfiguration - 錯誤設定
  • exposures - 曝露
  • default-logins - 預設登入

支援的 Nuclei Web DAST 分類:

  • web-sqli - SQL Injection
  • web-xss - Cross-Site Scripting
  • web-lfi - LFI / RFI
  • web-ssrf - SSRF
  • web-rce - Remote Code Execution
  • web-tech - Web Tech Detection

Nmap 掃描模式

支援 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 結果合併檢視。

主動 Patch 版本比對

掃描完成後自動檢查檢測到的軟體版本是否落在已知 CVE 範圍內:

  • 內建本地漏洞資料庫(App_Data/vulnerability-db/known-vulnerabilities.json
  • 支援完整 semver 範圍語法(< / > / = / >= / <= / - 範圍 / || OR)
  • 支援 AssetPorts.ServiceProduct/ServiceVersionVulnerabilities.DetectedVersion 雙來源
  • 產品資料庫現已支援 Alias / CPE 對映,PatchVersionService 不再只接受完全相同的產品名稱
  • Nmap 結果現在會額外保存 hostnameOS matchextrainfotunnelmethodconfidence 等指紋摘要到 RiskHint,供 CVE 比對時輔助判定產品
  • ServiceProduct 缺失時,系統會嘗試從 ServiceNameVulnNameDescriptionEvidenceRiskHint 內的產品特徵字串反推對應產品
  • 即使尚未命中 CVE,Nmap 也會同步建立 Info finding(主機存活、開放埠、服務與版本發現),避免設備頁與報告看起來完全沒有任何檢測結果
  • 嚴重度分級完整支援 Critical / High / Medium / Low / InfoNmap 會產生 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)兩種模式,完成後會把告警寫回 ScanRunsVulnerabilities 與原始 JSON 結果檔。

Nmap 相關行為

若要執行內建掃描,Windows 主機仍需可取得 nmap.exe。系統會依序檢查:

  1. VulnScan:NmapPath
  2. 系統 PATH
  3. 常見安裝路徑

系統檢查 頁的 Nmap 卡片提供「更新 Nmap 引擎」功能。Windows 上 Nmap 沒有與 Nuclei 相同的自我更新命令,因此系統會從官方下載頁解析最新版安裝檔、下載並啟動安裝程式;若出現 UAC 或安裝精靈,需完成安裝後重新整理狀態。Nmap 沒有 PoC 模板庫,因此模板版本欄位會標示不適用。

  • C:\Program Files (x86)\Nmap\nmap.exe
  • C:\Program Files\Nmap\nmap.exe
  • C:\Nmap\nmap.exe

若未找到:

  • 掃描任務 頁會先顯示前置檢查未通過
  • 立即掃描 按鈕會停用
  • SystemCheck 頁可直接查看狀態
  • Windows 上若角色為 AdminSecurityManager,可直接按 直接安裝 Nmap

Nmap 一鍵安裝流程會:

  1. 讀取官方下載頁 https://nmap.org/download.html
  2. 掃描官方下載頁與 https://nmap.org/dist/ 中所有 nmap-*-setup.exe
  3. 自動選擇最新版本
  4. 下載到 VulnScan.Web\App_Data\Installers
  5. 啟動官方 Windows installer

主要功能頁面

  • 掃描結果 / 紀錄
    • 看每次掃描是否成功、錯誤原因、Host / Open Port / 弱點數
  • 服務結果
    • 看實際掃到的 Port / Service / Product / Version
  • 弱點結果
    • 看真正的弱點明細、版本、嚴重度、改善狀態
  • 報告 / 匯出
    • 看摘要 KPI,並輸出 Excel / PDF
    • PDF 會套用正式初測報告格式,章節結構可比照 初測報告 類型交付文件
  • 系統檢查
    • NmapGreenboneOpenVAS DockerOWASP ZAP DockerSQLite / MSSQL 狀態
    • 可直接從 Web UI 觸發 OpenVAS / GreenboneOWASP ZAP 更新到最新版本

OpenVAS Docker 自動啟動

start_vulnscan_web.bat 會自動另開一個 PowerShell 視窗執行:

  • start_greenbone_openvas_docker.ps1

這支腳本會:

  1. 檢查 docker 是否已安裝且正在執行
  2. 從 Greenbone 官方文件位置下載最新 compose.yaml
  3. VulnScan.Web\App_Data\GreenboneCommunityDocker 建立 OpenVAS Docker 工作目錄
  4. 執行 docker compose up -d
  5. 在獨立視窗回報目前狀態與 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 等實際狀態

OWASP ZAP Docker 自動啟動

start_vulnscan_web.bat 也會自動另開一個 PowerShell 視窗執行:

  • start_owasp_zap_docker.ps1

這支腳本會:

  1. 檢查 docker 是否已安裝且正在執行
  2. VulnScan.Web\App_Data\OwaspZapDocker 建立 ZAP Docker 工作目錄
  3. 產生本機 ZAP API Key 檔案
  4. 建立本機 compose.yaml
  5. 執行 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/version API 驗證 2.17.0 等實際版本回應,而不是只看容器是否存在
  • SystemCheckOWASP ZAP Docker 卡片也會顯示 compose 容器列與 ports,方便確認 API 入口是否真的綁定到本機

正式報告版型

PDF 報表目前已改為正式初測報告格式,內容包含:

  1. 封面頁
  2. 主機系統安全掃描說明
  3. 風險分級表
  4. 使用弱點掃描資訊(掃描軟體、軟體版本、特徵碼版本、弱點資料庫版本)
  5. 執行計畫與檢測時程
  6. 檢測項目及範圍
  7. 漏洞數量統計與排行
  8. 建議修正弱點說明
  9. 風險評估與改善作法
  10. 改善任務規劃
  11. 總結與附件說明

目前版面也已做正式交付風格強化:

  • 封面加入品牌抬頭、交付摘要與 KPI 資訊卡
  • 內頁加入頁首識別列與章節色帶
  • 表格改為條紋底色與統一表頭樣式
  • 弱點建議 / 風險評估改為文件卡片區塊,降低系統匯出感

若需調整抬頭、受測單位、作業說明或掃描軟體版本,可修改:

  • VulnScan.Web/appsettings.json
  • VulnScan.Web/appsettings.Development.json

設定路徑:

  • VulnScan:ReportTemplate:OrganizationName
  • VulnScan:ReportTemplate:ReportTitle
  • VulnScan:ReportTemplate:ReportSubtitle
  • VulnScan:ReportTemplate:PreparedBy
  • VulnScan:ReportTemplate:Introduction
  • VulnScan:ReportTemplate:WorkMethod
  • VulnScan:ReportTemplate:ScopeStatement
  • VulnScan:ReportTemplate:ScanSoftwareName
  • VulnScan:ReportTemplate:ScanSoftwareVersion
  • VulnScan:ReportTemplate:SignatureVersion

重要現況

  • 本 repo 現在只維護 VulnScan.Web
  • 舊的 src/tests/Dockerfiledocker-compose.ymlstart_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 覆蓋登入流程、主要頁面可用性驗證

已知 E2E 問題

問題 狀態
WebhookSettings 表未自動建立(EnsureCreated() 未涵蓋) 🔴 需 EF Core Migration
Dashboard/RunningScans API 回傳 404 🔴 路由待確認
部分 POST 回傳 200 而非 302(表單欄位名稱不符) 🔴 需比對 Controller 參數

後續優先項目

目前下一輪優先項目:

  1. UsersController 與使用者管理頁
  2. EF Core Migration,取代 EnsureCreated()
  3. Greenbone 測試連線與更完整的同步治理
  4. DependencyScanService / PatchVersionService 補上單元測試
  5. 修復已知 E2E 問題(WebhookSettings 表、API 路由、POST 欄位名稱)

About

vulnshield-iso

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages