Erin131/SecuraScan-

GitHub: Erin131/SecuraScan-

一个轻量级 Python/Flask Web 漏洞扫描器,通过被动与主动检测发现安全标头缺失、反射型 XSS 和 SQL 注入等问题,帮助开发者从底层理解扫描器的检测逻辑。

Stars: 0 | Forks: 0

# SecuraScan 一个使用 Python/Flask 构建的轻量级 Web 应用漏洞扫描器。 它会抓取目标,然后运行针对常见 OWASP Top 10 问题的被动和主动检查, 并在终端风格的仪表板中展示结果。 **⚠️ 请仅扫描您拥有或获得明确书面测试授权的目标。** 主动检查会发送真实的注入 payload(XSS 标记、SQLi 探针, 包括基于 `SLEEP()` 的计时 payload)。 ## 为什么开发这个项目 作为对 OWASP ZAP 实践操作的补充而开发——与其仅仅使用现有的扫描器, 不如从头实现检测逻辑,这在面试中是更好的能力证明(“我知道扫描器是‘如何’检测反射型 XSS 的”,而不是“我知道如何在 ZAP 中点击运行”)。 ## 架构 - `scanner/crawler.py` — 广度优先、同源抓取;提取每个 `
` 及其输入字段名称作为测试面。 - `scanner/passive_checks.py` — 仅检查正常响应:缺失的安全标头(CSP、HSTS、X-Frame-Options 等)、脆弱的 cookie 标志(Secure/HttpOnly/SameSite)以及服务器/框架指纹识别。 - `scanner/active_checks.py` — - **XSS**:向每个发现的表单字段注入每次运行唯一的标记 payload,检查它是否在 HTML 响应中未转义地返回。 - **SQLi**:(1) 基于报错——发送引号破坏 payload 并扫描数据库错误签名(MySQL/Postgres/MSSQL/SQLite);(2) 基于时间的盲注——比较基线请求与注入 `SLEEP(3)` 请求的响应时间,因为盲注 SQLi 不会返回错误。 - `scanner/report.py` — 汇总发现结果,按严重程度排序(Critical → High → Medium → Low → Info)。 - `app.py` — Flask 路由:扫描表单,编排抓取 → 被动 → 主动 → 报告流程,渲染仪表板。 ## 设置 ``` python3 -m venv venv source venv/bin/activate pip install -r requirements.txt python3 app.py ``` 打开 http://localhost:5000 ## 安全测试建议 不要将此工具随意指向随机的第三方网站。良好的安全目标包括: - 您自己构建的本地应用(例如您的其他 Flask 项目之一) - 故意存在漏洞的练习应用:OWASP Juice Shop、DVWA、 bWAPP —— 在本地 Docker 中运行 - 您自己部署的作品集项目(显然,需要经过您自己的允许) ## 已知局限性(在面试中提及这点很有加分——体现了你的判断力) - 没有 JavaScript 渲染——纯静态抓取器无法发现 SPA 路由或客户端注入的表单(使用像 Playwright 这样的无头浏览器可以解决这个问题)。 - SQLi 检测是基于签名/计时的,并非详尽无遗——像 sqlmap 这样的生产级工具具有更多的 payload 变体和特定于 DBMS 的逻辑。 - 无身份验证处理——目前还无法在登录墙后进行抓取。 - 如果目标本身就响应很慢,基于时间的 SQLi 存在误报风险;真正的评估在出具报告前,会使用多个延迟值(例如 SLEEP(1) 对比 SLEEP(5))进行确认。 ## 可能的扩展 - 添加经过身份验证的扫描(session cookie 输入) - 添加 CSRF token 存在性检查 - 为重度依赖 JS 的应用添加无头浏览器抓取模式 - 将报告导出为 PDF(与您现有的报告编写工作相结合)
标签:CISA项目, Flask, Python, SQL注入检测, Web应用扫描器, XSS检测, 多模态安全, 无后门, 逆向工具