pallab-js/vulnScan
GitHub: pallab-js/vulnScan
一个基于Python的命令行Web漏洞扫描器,集成了多种DAST检测能力和灵活的报告输出,帮助安全人员快速发现Web应用中的安全风险。
Stars: 1 | Forks: 0
# WebScanner
一个全面、专业级的基于 CLI 的 Web 安全漏洞扫描器,结合了多种 DAST 扫描能力。灵感来源于 Nikto 和 Nuclei 等工具。
## 功能
### 漏洞检测
- **SQL 注入** - 基于报错、盲注、基于表单的检测
- **XSS** - 反射型、存储型、DOM 型
- **LFI/RFI** - 路径遍历、包装器协议
- **SSRF** - 内部服务、云元数据
- **CSRF** - Token 缺失、SameSite Cookie
- **命令注入** - Shell 命令注入
- **XXE** - XML 外部实体注入
- **不安全的反序列化** - Java 反序列化
- **身份验证问题** - 弱身份验证、权限提升
### CVE 扫描
- Log4j (CVE-2021-44228)
- Heartbleed (CVE-2014-0160)
- SSL/TLS 配置问题
- HTTP TRACE 注入
### 安全检查
- 安全头分析
- 服务器指纹识别与版本检测
- 敏感文件枚举
- HTTP 方法分析
- Cookie 安全属性
- SSL/TLS 配置
### 扫描能力
- Web 爬虫,用于全面扫描
- 并行多线程扫描
- 速率限制与隐蔽模式
- 代理支持
- 自定义 Header 注入
- 会话处理与身份验证
### 输出与报告
- 控制台(彩色,人类可读)
- JSON(结构化数据)
- XML(标准格式)
- CSV(电子表格分析)
- **HTML**(支持过滤的交互式报告)
- **SARIF**(CI/CD 集成)
## 安装
```
git clone https://github.com/yourusername/webscanner.git
cd vulnScan
pip install -r requirements.txt
```
## 快速开始
```
# 基本扫描
python -m webscanner http://example.com
# 使用特定检查进行扫描
python -m webscanner http://example.com --checks sqli_checks,xss_checks
# 具有交互式过滤的 HTML 报告
python -m webscanner http://example.com -o html -f report.html
# 启用 Web crawling
python -m webscanner http://example.com --crawl --crawl-depth 3
# 隐身模式 (降低请求率)
python -m webscanner http://example.com --stealth
```
## 可用检查
| 检查项 | 描述 |
|-------|-------------|
| `header_checks` | 安全头分析 |
| `server_info_checks` | 服务器指纹识别 |
| `file_checks` | 敏感文件枚举 |
| `misc_checks` | HTTP 方法,Cookie |
| `sqli_checks` | SQL 注入 |
| `xss_checks` | 跨站脚本攻击 (XSS) |
| `lfi_checks` | 本地/远程文件包含 |
| `ssrf_checks` | 服务端请求伪造 (SSRF) |
| `csrf_checks` | CSRF 防护 |
| `auth_checks` | 身份验证问题 |
| `cmd_injection` | 命令注入 |
| `xxe_checks` | XXE 漏洞 |
| `deserialization_checks` | 不安全的反序列化 |
| `log4j` | Log4j (CVE-2021-44228) |
| `ssl_config` | SSL/TLS 配置 |
| `trace_injection` | HTTP TRACE 注入 |
## CLI 选项
```
positional arguments:
url Target URL to scan
output options:
-o, --output FORMAT Output format (console/json/xml/csv/html/sarif)
-f, --output-file FILE Output file path
scan options:
-c, --checks CHECKS Comma-separated checks (default: all)
-t, --threads N Number of threads (default: 10)
--timeout SECONDS Request timeout (default: 30)
--delay SECONDS Delay between requests
--max-retries N Retry failed requests
--requests-per-second N Rate limit (0=unlimited)
http options:
--user-agent STRING Custom User-Agent
--proxy URL Proxy URL
--no-ssl-verify Skip SSL verification
--header "Key: Value" Custom HTTP header
crawling options:
--crawl Enable web crawling
--crawl-depth N Max crawl depth (default: 2)
--crawl-max-pages N Max pages to crawl (default: 100)
template options:
--templates PATH Custom templates directory
--template-id ID Run specific template
authentication:
--auth-login-url URL Login URL
--auth-username USER Username
--auth-password PASS Password
--auth-bearer TOKEN Bearer token
other options:
--stealth Stealth mode
--list-checks List all checks
--config FILE Config file
--save-results FILE Save results
--load-results FILE Load results
-v, --verbose Increase verbosity
--quiet Quiet mode
--version Show version
```
## 输出格式
### 控制台(默认)
带有严重程度细分的颜色编码、人类可读输出。
### JSON
用于编程处理的结构化输出:
```
python -m webscanner http://example.com -o json -f results.json
```
### HTML
带有过滤和严重程度图表的交互式报告:
```
python -m webscanner http://example.com -o html -f report.html
```
### SARIF
用于 CI/CD 集成(VS Code,GitHub)的 OASIS 标准:
```
python -m webscanner http://example.com -o sarif -f results.sarif
```
## 配置
创建一个 JSON 配置文件:
```
{
"scanner": {
"threads": 10,
"timeout": 30,
"delay": 0.1,
"max_retries": 3,
"requests_per_second": 0
},
"output": {
"format": "console",
"colors": true
},
"network": {
"proxies": {},
"headers": {}
}
}
```
结合 CLI 使用:
```
python -m webscanner http://example.com --config config.json
```
## 模板系统
WebScanner 支持类似 Nuclei 风格的 YAML 模板:
```
id: sqli-example
name: SQL Injection Example
severity: critical
description: SQL injection vulnerability detected
requests:
- method: GET
path: "/"
matchers:
- type: regex
regex:
- "SQL syntax.*MySQL"
- "Warning.*mysql_.*"
```
将模板放置在 `templates/` 目录中,或使用 `--templates` 标志。
## 插件开发
通过扩展 `BaseCheck` 创建自定义检查:
```
from webscanner.checks.base import BaseCheck
from webscanner.core.models import ScannerResult
class MyCustomCheck(BaseCheck):
def run(self):
response = self.make_request('GET', self.base_url)
if response and 'vulnerable' in response.text:
self.add_result(
url=self.base_url,
check_name='my_custom_check',
severity='high',
description='Custom vulnerability found',
evidence='...',
recommendation='Fix it'
)
return self.results
```
## 性能提示
- 调整 `--threads` 以进行并行扫描
- 使用 `--delay` 避免被检测到
- 启用 `--stealth` 进行被动扫描
- 针对长时间扫描可保存/加载结果
- 结合 `--checks` 使用特定检查项进行针对性扫描
## 环境要求
- Python 3.8+
- requests
- beautifulsoup4
- lxml
- pyyaml
- jinja2
- tqdm
## 许可证
MIT 许可证
标签:C2日志可视化, CISA项目, CSRF, DAST, DOE合作, Heartbleed, LFI/RFI, Log4j, meg, Python3, SARIF, SSL/TLS, SSRF, Web安全, XSS, XXE, XXE攻击, 信息安全, 动态应用安全测试, 反序列化漏洞, 命令注入, 域名侦查, 安全头分析, 恶意代码分类, 恶意软件分析, 指纹识别, 攻击路径可视化, 漏洞情报, 网络安全, 聊天机器人, 自动化分析, 蓝队分析, 调试插件, 跨站脚本, 隐私保护, 黑客工具