Krishnaqwerty/OWASP-Scanner
GitHub: Krishnaqwerty/OWASP-Scanner
一款基于Python的轻量级Web漏洞扫描原型工具,专注于检测SQL注入和反射型XSS漏洞,为安全测试和CI/CD集成提供基础能力。
Stars: 0 | Forks: 0
# OWASP Scanner (原型)
一个基于 Python 的原型,用于检测常见的 Web 漏洞:
- SQL 注入(基于错误)
- 跨站脚本攻击 (XSS)(反射型)
本项目旨在为未来的 CI/CD 或云安全集成奠定基础。
## 安全与道德声明
本工具仅供教育用途及经授权的安全测试使用。未经所有者明确的书面许可,请勿扫描任何系统。您需对遵守所有法律和协议负责。
## 功能特性
- 通过 CLI `--url` 输入,并支持可选的指定深度递归爬取
- 扫描查询参数和 HTML 表单 (GET/POST)
- 使用 `requests` 和 `beautifulsoup4`
- 结构化的 JSON 报告和简洁的控制台摘要
- 日志记录到 `scanner.log`
- 可选的多线程
## 安装
要求 Python 3.8+。
```
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
## 使用方法
```
python scanner.py --url https://example.com --depth 2 --output report.json
```
常用选项:
## Docker
构建镜像(在 `owasp_scanner` 目录下):
```
docker build -t your-dockerhub-username/owasp_scanner:latest .
```
运行:
```
docker run --rm -p 8501:8501 your-dockerhub-username/owasp_scanner:latest
```
环境变量:
- PORT:容器内部的端口(默认为 8501)。您可以覆盖该设置,例如使用 `-e PORT=8080` 并通过 `-p 8080:8080` 映射端口。
- BROWSER_PORT:当与容器端口不同时,在启动 URL 中显示的宿主机可见端口。默认为 PORT。
推送到 Docker Hub:
```
docker login
docker push your-dockerhub-username/owasp_scanner:latest
```
推送后,您可以在任何地方拉取并运行:
```
docker pull hellokrishnaqwerty/owasp_scanner:latest
docker run --rm -p 8501:8501 hellokrishnaqwerty/owasp_scanner:latest
```
- `--timeout 8.0` HTTP 超时
- `--threads 6` 增加并行度
- `--cookies "session=abc; csrftoken=xyz"` 提供 cookies
- `--include-external` 允许爬取外部域
- `--verbose` 启用 debug 日志
JSON 报告格式:
```
{
"target": "https://example.com",
"scan_date": "YYYY-MM-DD HH:MM",
"vulnerabilities": [
{ "type": "SQL Injection", "url": "...", "parameter": "...", "payload": "..." }
]
}
```
## 注意事项
- 这是一个启发式原型;结果可能包含误报/漏报。
- SQLi 模块会查找常见的数据库错误信息。盲注/时间盲注检测不在此范围内。
- XSS 检测会查找反射的 payload 标记;它不会执行 JavaScript。
## 扩展目标(建议)
- 添加一个用于交互式扫描的最小化 Flask UI
- 添加异步或更高级的爬虫
- 添加身份验证流程、CSRF 处理、速率限制
- 在预发布环境中运行扫描的 CI 工作流
## 许可证
MIT
## Web UI (Streamlit)
包含一个最小化的网络安全主题 Web UI。
使用以下命令启动:
```
streamlit run app.py
```
然后在浏览器中打开提供的本地 URL,设置目标和深度,然后点击“Start Scan”。扫描完成后您可以下载 JSON 报告。
### Docker Hub 上的预构建镜像
您可以从 Docker Hub 拉取预构建的镜像:
```
docker pull hellokrishnaqwerty/owasp_scanner:latest
docker run --rm -p 8501:8501 hellokrishnaqwerty/owasp_scanner:latest
```
这会自动运行 Streamlit UI。打开 http://localhost:8501。
### 绑定到宿主机端口 3001
两种简单的选项:
1. 保持容器的 8501 端口,映射宿主机的 3001 端口,并相应地设置打印的 URL:
```
docker run --rm -p 3001:8501 -e BROWSER_PORT=3001 your-dockerhub-username/owasp_scanner:latest
# 打开 http://localhost:3001
```
2. 将容器和宿主机端口都更改为 3001:
```
docker run --rm -e PORT=3001 -p 3001:3001 your-dockerhub-username/owasp_scanner:latest
# 打开 http://localhost:3001
```
## 故障排除(连接被拒绝)
如果您在运行容器后看到浏览器错误,如“0.0.0.0 拒绝连接”:
- 在浏览器中使用 http://localhost:8501(或 http://127.0.0.1:8501)。日志中显示的 0.0.0.0 地址是“所有接口”的占位符,在浏览器中不起作用。
- 确保您的端口映射与容器端口匹配:
- 如果您运行 `docker run -p 8501:8501 ...`,请打开 `http://localhost:8501`。
- 如果您覆盖了内部端口,请确保两者匹配:`docker run -e PORT=8080 -p 8080:8080 ...` 然后打开 `http://localhost:8080`。
- 检查容器是否正在运行以及端口是否已映射:
- `docker ps` 应该显示 `0.0.0.0:8501->8501/tcp`(或您使用的端口)。
- 查看日志以确认 Streamlit 已启动:
- `docker logs -f ` 应该显示 “You can now view your Streamlit app…” 消息。
- 防火墙/VPN/代理:暂时禁用或允许所选端口上的 Docker/Streamlit 流量。
如果在 Intel 与 Apple Silicon Mac 上仍然存在问题:请使用 GitHub Actions 构建的多架构镜像或在本地为您的平台重新构建。
## CI/CD (GitHub Actions → Docker Hub)
此仓库包含一个 GitHub Actions 工作流,用于在每次推送或打标签时构建并推送 Docker 镜像。
徽章(如有需要,请替换 owner/repo):

设置步骤:
1. 在您的 GitHub 仓库中,前往 Settings → Secrets and variables → Actions 并添加:
- `DOCKERHUB_USERNAME`:您的 Docker Hub 用户名
- `DOCKERHUB_TOKEN`:Docker Hub 访问令牌(在 https://hub.docker.com/settings/security 创建)
2. 确保工作流文件存在于 `.github/workflows/docker-publish.yml`(包含在本项目的仓库根目录中)。
3. 推送到任何分支或创建 Git 标签(例如 `v1.0.0`)以触发工作流。
镜像将发布到:
```
docker.io/$DOCKERHUB_USERNAME/owasp_scanner
```
标签:
- 默认分支上的 `latest`
- 分支构建的分支名称
- Git 标签的标签名称
- 每次构建的 commit SHA 标签
标签:BeautifulSoup, BeEF, CI/CD安全集成, CISA项目, DAST, Docker, DOE合作, HTML表单解析, JSON报告, Kubernetes, Python安全工具, requests, SQL注入检测, Web安全, XSS检测, 加密, 反射型XSS, 基于错误的SQL注入, 安全教育, 安全防御评估, 开源安全工具, 恶意软件分析, 漏洞扫描器, 爬虫, 网络安全, 蓝队分析, 请求拦截, 跨站脚本攻击, 逆向工具, 逆向工程平台, 隐私保护, 黑盒测试