krt123456/saas-security-scan

GitHub: krt123456/saas-security-scan

一个零依赖的单文件 Python 工具,在企业安全审查或 SOC 2 评估前快速检查网站的外部安全基线问题。

Stars: 0 | Forks: 0

# saas-security-scan **针对任何网站的快速、被动、零依赖的外部安全基线检查。** 在企业安全审查或 SOC 2 评估之前,在你自己的网站上运行它,可以发现审查人员总是会标记的简单问题——缺失的安全标头、脆弱的 cookie 标志、可伪造的电子邮件 (SPF/DMARC)、旧版 TLS、暴露的 `.git`/`.env`,以及意外发布在前端 JavaScript 中的机密信息。 ``` $ python3 saas_security_scan.py example.com saas-security-scan — example.com risk score 11 (1 high / 2 medium / 0 low / 1 info) [ HIGH ] Possible Stripe live key in public JavaScript credential-shaped string served to every visitor [MEDIUM] 4 security header(s) missing missing: HSTS, Content-Security-Policy, X-Frame-Options, Permissions-Policy [MEDIUM] DMARC missing DMARC policy = absent [ INFO ] No security.txt disclosure contact GET /.well-known/security.txt != 200 ``` ## 为什么会有这个项目 大多数“安全扫描器”嘈杂、缓慢、需要注册账号,或者要求你安装一整套工具链。这是一个没有依赖(仅使用标准库)的单一 Python 文件,它只读取浏览器在一次页面加载中看到的内容——没有任何侵入性——并告诉你企业审查人员会在头五分钟内指出的安全基线问题。 它刻意保持保守:它只报告你可以在一次 `curl` 中自行验证的事实。没有误报,也没有为了显得忙碌而添加的“信息性”填充内容。 ## 安装 无需安装。只需 Python 3.7+(以及用于 DNS 检查的 `dig`,这是 macOS/Linux 上的标准配置)。 ``` curl -O https://raw.githubusercontent.com/krt123456/saas-security-scan/main/saas_security_scan.py python3 saas_security_scan.py yourdomain.com ``` ## 用法 ``` python3 saas_security_scan.py yourdomain.com # human-readable report python3 saas_security_scan.py yourdomain.com --json # machine-readable ``` 当存在高严重性发现时,退出代码为非零,因此你可以将其放入 CI 中: ``` # .github/workflows/security-scan.yml - run: python3 saas_security_scan.py ${{ vars.DOMAIN }} ``` ## 检查内容 | 检查项 | 严重性 | 含义 | |---|---|---| | 缺失安全标头 | 中 | HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy | | Cookie 标志 | 中 | 提供的会话 cookie 没有 `Secure` / `HttpOnly` | | 公开 JS 中的机密信息 | 高 | AWS / Google / Stripe / GitHub / Slack / SendGrid 密钥、私钥块 | | 旧版 TLS | 高 | 服务器仍在协商 TLS 1.0 / 1.1 | | TLS 证书过期 | 中 | 证书将在 20 天内过期 | | SPF / DMARC | 中 | 域名可能被伪造 / 钓鱼 | | 暴露的文件 | 高 | `.git/config`, `.env`, `.git/HEAD` 被公开提供服务 | | security.txt | 信息 | 无漏洞披露联系方式 | ## 不做的事情 这是一项被动的外部安全基线检查,而不是渗透测试。它无法发现在现代 SaaS 中实际上最关键的漏洞: - 损坏的对象级授权 (BOLA / IDOR) - 业务逻辑缺陷 - API 滥用链 - 登录背后的身份验证 / 会话弱点 这些需要由人类测试人员使用经过身份验证的访问权限进行测试。这是一种不同类型的工作——[以利用为导向的渗透测试](https://provecore.com),其中每一项发现都附带一个可用的概念验证。 ## 许可证 MIT — 请参阅 [LICENSE](LICENSE)。可自由使用,包括商业用途。 由 **[Provecore](https://provecore.com)** 维护 — 专为准备进行企业交易和 SOC 2 审查的 B2B SaaS 团队提供渗透测试。
标签:Python, StruQ, Web安全, 动态分析, 安全基线检查, 安全扫描, 实时处理, 无后门, 时序注入, 蓝队分析, 逆向工具