Milad-Amirjalali/WebSec-Scanner
GitHub: Milad-Amirjalali/WebSec-Scanner
一款基于 Node.js 的综合性 Web 安全扫描工具,提供 HTTP 标头检测、SSL/TLS 审查、端口扫描、子域名发现、CMS 漏洞比对和密钥扫描等多维度安全审计能力。
Stars: 1 | Forks: 0
# WebSec Scanner
[](LICENSE)
[]()
**[English](#english)** | **[فارسی](#فارسی)**
## 英语
### 功能
- **HTTP 安全标头** — 检查 7 个关键标头 (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection),对结果进行评分和分级,并标记服务器信息泄露标头。
- **SSL/TLS** — 证书颁发者、有效期、过期警告、正在使用的协议和 cipher。
- **端口扫描器** — 快速/前 100 端口/全系统/全部 65535 端口模式,对未映射的开放端口进行主动服务指纹识别,以及:
- **CDN 归属识别** — 检测目标是否位于 Cloudflare/Fastly/Akamai 后面,并标记哪些开放端口是可以被真正确认的(通过真实的 Host/SNI 限定请求),而哪些端口仅仅是开放在 CDN 的共享 anycast IP 上,无法归属于该域名。
- **不可靠网络检测** — 在随机端口上进行 canary 探测,以捕捉 TUN 模式下的 VPN/代理(或配置错误的 Docker 网络)将所有 TCP 端口伪装为已连接的环境,并将整个扫描标记为不可信,而不是报告误报。
- **子域名发现** — 将证书透明度 (通过 Certspotter 获取 crt.sh) 和被动 DNS (HackerTarget) 与精心挑选的字典相结合,渲染交互式网络图谱,并检测**泛解析 DNS**,从而过滤掉那些仅仅因为 catch-all 记录才“解析”的猜测名称。
- **CMS / WordPress 审计** — 通过 meta 标签、资产路径、RSS feed、REST API 和登录页面检测 WordPress;将检测到的版本与小型 CVE 数据库进行交叉比对。
- **Secret 扫描器** — 扫描粘贴的源代码或配置,查找 AWS/Google/Telegram 密钥、私钥、JWT、数据库连接字符串和通用的 API-key 模式(输出已脱敏)。
- **OWASP Top 10 指南** — 参考清单,其中包含每个类别的漏洞代码与修复代码片段对比。
- **双语用户界面** — 标题栏的切换按钮可以在波斯语 (RTL) 和英语 (LTR) 之间切换整个用户界面及所有扫描结果;上次扫描会自动以新语言重新运行。
- **实时进度** — 完整扫描会通过 Server-Sent Events 传输真实进度,而不是模拟的进度条。
### 技术栈
- **后端**: Node.js, Express
- **前端**: 原生 HTML/CSS/JS (无框架),使用 [vis-network](https://visjs.github.io/vis-network/) 绘制子域名图谱
### 运行
#### 使用 Node.js
```
npm install
npm start
# 或运行 test suite:
npm test
```
服务器监听于 `http://localhost:3000` (可通过 `PORT` 环境变量覆盖)。
#### 使用 Docker
```
docker compose up --build
# 或直接运行:
docker build -t websec-scanner .
docker run -p 3000:3000 websec-scanner
```
### 项目结构
```
server.js Express app, API routes, SSE streaming for the full scan
lib/
headerScanner.js HTTP security header checks
sslScanner.js SSL/TLS certificate inspection
portScanner.js Port scanning, CDN attribution, wildcard/network sanity checks
dnsScanner.js DNS record + SPF/DMARC lookup
subdomainScanner.js Subdomain discovery, wildcard DNS detection, network graph data
cmsScanner.js WordPress detection + CVE audit
secretScanner.js Secret/API-key pattern scanning
owaspData.js OWASP Top 10 reference content
i18n.js fa/en translation helper used across lib/*.js
public/
index.html, css/, js/app.js Frontend (bilingual, vanilla JS)
test/runTests.js Automated test suite (npm test)
```
### 许可证
MIT — 详见 [LICENSE](LICENSE)。
## 波斯语
### 特性
- **هدرهای امنیتی HTTP** — بررسی ۷ هدر کلیدی (HSTS، CSP، X-Frame-Options، X-Content-Type-Options، Referrer-Policy، Permissions-Policy، X-XSS-Protection)، نمرهدهی و رتبهبندی، و شناسایی هدرهای افشاکننده اطلاعات سرور.
- **SSL/TLS** — صادرکننده گواهی، بازه اعتبار، هشدار نزدیک به انقضا، پروتکل و Cipher مورد استفاده.
- **اسکنر پورت** — حالتهای سریع/۱۰۰ پورت برتر/کامل سیستمی/کل ۶۵۵۳۵ پورت، شناسایی فعال سرویس برای پورتهای ناشناخته، بههمراه:
- **تشخیص انتساب CDN** — وقتی هدف پشت Cloudflare/Fastly/Akamai باشد، تشخیص میدهد کدام پورتهای باز واقعاً با یک درخواست واقعی Host/SNI برای همان دامنه تایید شدهاند، در برابر پورتهایی که فقط روی IP اشتراکی anycast آن CDN باز هستند و ربطی به دامنه ندارند.
- **تشخیص شبکه غیرقابلاعتماد** — یک پروب کنترلی روی یک پورت تصادفی، محیطهایی که VPN/پروکسی با حالت TUN (یا شبکه Docker با تنظیم اشتباه) همه پورتها را بهصورت مصنوعی «باز» نشان میدهند را شناسایی و کل نتیجه اسکن را بهعنوان غیرقابلاعتماد علامت میزند.
- **کشف سابدومین** — ترکیب Certificate Transparency (از طریق Certspotter) و DNS منفعل (HackerTarget) با یک واژهنامه دقیق، رسم نقشه گرافیکی تعاملی شبکه، و تشخیص **DNS از نوع Wildcard** تا نامهای حدسی که فقط بهخاطر رکورد catch-all «resolve» میشوند فیلتر شوند.
- **آنالیز CMS و وردپرس** — شناسایی وردپرس از طریق متا تگ، مسیرهای دارایی، فید RSS، REST API و صفحه ورود؛ تطبیق نسخه شناساییشده با یک پایگاهداده کوچک از CVEها.
- **اسکنر کلید/Secret** — بررسی سورسکد یا کانفیگ چسباندهشده برای کلیدهای AWS/گوگل/تلگرام، کلیدهای خصوصی، JWT، رشته اتصال دیتابیس و الگوهای عمومی API Key (با خروجی سانسورشده).
- **راهنمای OWASP Top 10** — چکلیست مرجع همراه با نمونه کد ناامن در برابر امن برای هر دسته.
- **رابط دوزبانه** — دکمه تغییر زبان در هدر، کل رابط و نتیجه اسکن را بین فارسی (راستبهچپ) و انگلیسی (چپبهراست) عوض میکند؛ آخرین اسکن بهصورت خودکار در زبان جدید دوباره اجرا میشود.
- **پیشرفت زنده** — اسکن کامل بهجای نوار پیشرفت شبیهسازیشده، پیشرفت واقعی را از طریق Server-Sent Events استریم میکند.
### 技术
- **بکاند**: Node.js، Express
- **فرانتاند**: HTML/CSS/JS خالص (بدون فریمورک)، [vis-network](https://visjs.github.io/vis-network/) برای نقشه گرافیکی سابدومینها
### 运行
#### 使用 Node.js
```
npm install
npm start
# 或运行测试:
npm test
```
سرور روی `http://localhost:3000` بالا میآید (با متغیر محیطی `PORT` قابل تغییر است).
#### 使用 Docker
```
docker compose up --build
# 或直接运行:
docker build -t websec-scanner .
docker run -p 3000:3000 websec-scanner
```
### 项目结构
```
server.js اپ Express، مسیرهای API، استریم SSE برای اسکن کامل
lib/
headerScanner.js بررسی هدرهای امنیتی HTTP
sslScanner.js بررسی گواهی SSL/TLS
portScanner.js اسکن پورت، تشخیص انتساب CDN، بررسی wildcard/شبکه
dnsScanner.js دریافت رکوردهای DNS و SPF/DMARC
subdomainScanner.js کشف سابدومین، تشخیص DNS از نوع Wildcard، داده نقشه شبکه
cmsScanner.js شناسایی وردپرس و آنالیز CVE
secretScanner.js اسکن الگوهای کلید/Secret
owaspData.js محتوای مرجع OWASP Top 10
i18n.js هلپر ترجمه fa/en استفادهشده در lib/*.js
public/
index.html, css/, js/app.js فرانتاند (دوزبانه، JS خالص)
test/runTests.js مجموعه تست خودکار (npm test)
```
### 许可证
MIT — به فایل [LICENSE](LICENSE) مراجعه کنید.
标签:GitHub, GNU通用公共许可证, MITM代理, Node.js, StruQ, Web安全, 实时处理, 密码管理, 数据泄露, 自定义脚本, 蓝队分析, 请求拦截