abdigalia83-code/threat-hunting-sql-injection
GitHub: abdigalia83-code/threat-hunting-sql-injection
一个基于 Spring Boot 的 Java Web 安全扫描器,利用 AI 异常检测与混合分析实现 SQL 注入的实时威胁狩猎。
Stars: 0 | Forks: 0
# Web 安全扫描器
一个全面的基于 Java 的 Web 安全扫描器,旨在识别常见的 Web 漏洞,例如 SQL 注入、跨站脚本(XSS)、CSRF 漏洞和敏感信息泄露。采用 Spring Boot 构建,具备模块化设计和企业级特性。
## 🚀 功能特性
- **SQL 注入检测**:通过在 URL 参数和表单中注入多种载荷来识别潜在的 SQL 注入漏洞
- **跨站脚本(XSS)检测**:通过注入 XSS 载荷到 URL 参数并检查其在响应中的反射来检测 XSS 漏洞
- **CSRF 保护测试**:全面的 CSRF 令牌验证和 SameSite Cookie 测试
- **敏感信息泄露检测**:扫描网页内容以发现表示敏感数据的模式,例如电子邮件地址、电话号码、SSN、API 密钥和信用卡号
- **Web 爬虫**:智能爬虫,可遍历目标网站以发现并扫描多个页面
- **速率限制**:内置速率限制,避免对目标服务器造成过大压力
- **可配置扫描**:用于载荷、模式和扫描设置的灵活配置系统
- **全面报告**:带有颜色编码输出的详细漏洞报告
- **数据库集成**:使用 H2 数据库持久化存储扫描结果
- **Spring Boot 架构**:采用依赖注入和配置管理的工业级架构
## 🛠️ 使用技术
- **Java 21**:具有现代特性的核心编程语言
- **Spring Boot 3.2.0**:企业级应用框架,提供依赖注入、配置管理和自动配置
- **Spring Data JPA**:带有 H2 数据库的数据持久层
- **Spring Boot Actuator**:生产就绪的监控与管理功能
- **Maven**:项目管理和构建自动化工具
- **OkHttp**:高性能 HTTP 客户端,用于发起请求
- **JSoup**:HTML 解析与操作库
- **JLine**:高级命令行界面交互
- **SLF4J + Logback**:全面的日志框架
- **Jackson**:用于配置和报告的 JSON 处理
- **Resilience4j**:速率限制与容错处理
- **JUnit 5**:单元测试框架
- **AssertJ**:用于测试的流式断言库
- **Mockito**:用于单元测试的模拟框架
## 如何构建
要构建项目,请导航到项目根目录并运行以下 Maven 命令:
```
mvn clean install
```
## 如何运行
**重要提示**:默认情况下,扫描器 CLI 被禁用以保持灵活性。若要从命令行运行扫描器,必须通过传递 `-Dscanner.cli.enabled=true` 来启用它。
你可以通过提供目标 URL 作为命令行参数来运行扫描器。
**示例用法:**
要扫描目标网站(例如 `http://example.com`):
```
mvn spring-boot:run -Dspring-boot.run.arguments="http://example.com" -Dscanner.cli.enabled=true
```
或者,在构建 JAR 后:
```
java -jar target/web-security-scanner-.jar http://example.com --scanner.cli.enabled=true
```
**退出代码配置:**
默认情况下,扫描完成时无论是否发现漏洞,扫描器始终以代码 0(成功)退出。这允许在 CI/CD 流水线中使用扫描器,而不会因漏洞检测导致构建失败。
若要在发现漏洞时让扫描器以非零代码退出(对 CI/CD 中的安全网关很有用):
```
# 使用 Maven
mvn spring-boot:run -Dspring-boot.run.arguments="http://example.com" -Dspring-boot.run.jvmArguments="-Dscanner.cli.fail-on-vulnerabilities=true" -Dscanner.cli.enabled=true
# 使用 JAR
java -jar target/web-security-scanner-.jar http://example.com --scanner.cli.enabled=true --scanner.cli.fail-on-vulnerabilities=true
```
启用 `fail-on-vulnerabilities=true` 后:
- 退出代码 0:未发现漏洞
- 退出代码 1:发现漏洞
- 退出代码 2:发生扫描错误
**使用易受攻击的网站进行测试:**
为了测试目的,你可以使用一个已知的易受攻击网站,例如 `http://testphp.vulnweb.com/`。这将展示扫描器检测各种漏洞的能力。
```
mvn spring-boot:run -Dspring-boot.run.arguments="http://testphp.vulnweb.com" -Dscanner.cli.enabled=true
```
或
```
java -jar target/web-security-scanner-.jar http://testphp.vulnweb.com --scanner.cli.enabled=true
```
扫描器将直接输出检测到的漏洞到控制台。
## 📊 配置
扫描器使用 Spring Boot 的外部化配置系统。你可以通过以下方式自定义扫描行为:
### 应用程序属性
- **`application.yml`**:主配置文件,包含默认设置
- **`application-test.yml`**:测试专用配置
- **`scanner.cli.enabled`**:启用/禁用 CLI 模式(默认:true)
- **`scanner.cli.fail-on-vulnerabilities`**:发现漏洞时以非零代码退出(默认:false)
### 可配置设置
- **SQL 注入载荷**:自定义 SQL 注入测试载荷
- **XSS 载荷**:配置 XSS 检测模式
- **敏感数据模式**:用于检测敏感信息的正则表达式
- **扫描设置**:最大深度、超时、速率限制
- **CSRF 设置**:令牌验证规则和 Cookie 策略
### 示例配置
```
scanner:
cli:
enabled: true
auto-shutdown: true
fail-on-vulnerabilities: false # Set to true for CI/CD security gates
scanSettings:
maxDepth: 3
timeoutSeconds: 30
rateLimitRequestsPerSecond: 3
csrfSettings:
testForms: true
checkSameSiteCookies: true
minimumTokenLength: 16
```
## 🧪 测试
该项目包含全面的单元测试和集成测试。
### 运行测试
```
# 运行所有测试
mvn test
# 使用特定配置文件运行测试
mvn test -Dspring.profiles.active=test
# 运行特定测试类
mvn test -Dtest=ConfigLoaderTest
# 运行带覆盖率测试
mvn test jacoco:report
```
### 测试覆盖率
- **86 个总测试**,覆盖所有主要组件
- **单元测试**:模型类、工具类、配置
- **集成测试**:完整的应用程序上下文、服务层
- **Spring Boot 测试**:配置验证、依赖注入
### 测试类别
- **配置测试**:扫描器配置加载与验证
- **模型测试**:漏洞模型、表单数据、CSRF 场景
- **服务测试**:报告生成、数据持久化
- **工具测试**:URL 工具、辅助函数
- **集成测试**:端到端扫描工作流
## 🔍 Spring Boot 特性
- **外部化配置**:通过 YAML/Properties 文件实现灵活的配置
- **依赖注入**:基于 Spring IoC 容器的清晰、可测试架构
- **自动配置**:根据类路径自动设置组件
- **Actuator 端点**:健康检查、指标与监控
- **基于配置文件的配置**:开发、测试和生产环境的不同设置
- **数据持久化**:基于 JPA 的数据访问,使用 H2 数据库
- **命令行接口**:可选的 CLI 模式,支持 JLine 集成
## 代码格式化
该项目使用 Google Java Format 来保持代码风格一致。
### 自动格式化
代码在 Maven 构建过程中自动格式化。格式化器在 `process-sources` 阶段运行。
### 手动格式化
要手动格式化所有 Java 文件:
```
mvn com.spotify.fmt:fmt-maven-plugin:format
```
### 检查格式化
要检查所有文件是否已正确格式化而不进行修改:
```
mvn com.spotify.fmt:fmt-maven-plugin:check
```
如果任何文件未正确格式化,此命令将失败,这对于 CI/CD 流水线非常有用。
### IDE 集成
对于本地开发,建议为你的 IDE 安装 Google Java Format 插件:
- **IntelliJ IDEA**:安装 “google-java-format” 插件
- **Eclipse**:安装 Google Java Format 插件
- **VS Code**:安装 “Language Support for Java(TM) by Red Hat” 扩展并启用 Google Java Format 支持
## 🛡️ 安全注意事项
- **速率限制**:内置速率限制可防止对目标服务器造成过大压力
- **可配置超时**:防止请求挂起
- **负责任的披露**:仅扫描你拥有或明确获得授权的系统
- **无持久化攻击**:扫描器仅执行只读的漏洞检测
## 📈 性能
- **并发扫描**:多线程扫描以提升性能
- **内存高效**:对大响应的流式处理
- **可配置限制**:可调节的深度和超时设置
- **连接池**:高效的 HTTP 连接管理
## 📝 许可证
本项目根据 MIT 许可证授权 - 详细信息请参阅 [许可证](LICENSE) 文件。
## ⚠️ 法律声明
本工具仅供教育和授权的安全测试使用。用户负责确保在扫描任何系统之前获得适当授权。开发者不对本工具的任何误用负责。
## 📞 支持
如有疑问、问题或贡献:
- 🐛 [报告问题](https://github.com/burakkaygusuz/web-security-scanner/issues)
- 💬 [讨论](https://github.com/burakkaygusuz/web-security-scanner/discussions)
- 🔄 [拉取请求](https://github.com/burakkaygusuz/web-security-scanner/pulls)
标签:AI异常检测, CISA项目, CSRF, H2数据库, IP 地址批量处理, Java 21, JSoup, JS文件枚举, Maven, OkHttp, SEO, Spring Boot, Spring Boot 3.2.0, Spring Data JPA, URL发现, Web安全扫描, Web爬虫, XSS, 企业级架构, 依赖注入, 关键词, 可配置扫描, 安全检测, 实时检测, 开发者评论分析, 彩色输出, 敏感信息暴露, 数据库集成, 漏洞情报, 漏洞验证, 生产监控, 签名检测, 网络安全审计