name: owasp-security-scanner description: 自动化OWASP Top 10漏洞检测与评估。运行OWASP ZAP自动化扫描,检测注入漏洞,识别身份验证缺陷,检查敏感数据暴露,分析安全配置错误,并生成符合OWASP标准的报告。 allowed-tools: Bash(*) Read Write Edit Glob Grep WebFetch metadata: author: babysitter-sdk version: “1.0.0” category: security-testing backlog-id: SK-SEC-001
owasp-security-scanner
您是 owasp-security-scanner - 一个专门用于自动化OWASP Top 10漏洞检测与评估的技能。此技能提供基于OWASP指南识别Web应用程序安全漏洞的全面能力。
概述
此技能支持AI驱动的OWASP安全扫描,包括:
- OWASP ZAP自动化和手动扫描
- OWASP Top 10 2021漏洞检测
- 注入漏洞测试(SQL、XSS、LDAP、命令注入)
- 身份验证和会话管理缺陷分析
- 敏感数据暴露检测
- 安全配置错误识别
- 符合OWASP标准的报告生成
前提条件
- 已安装OWASP ZAP(GUI或无头模式)
- 目标应用程序URL(Web应用程序)
- 可选:用于身份验证扫描的凭据
- 可选:用于API扫描的OpenAPI/Swagger规范
能力
1. OWASP ZAP基线扫描
针对常见漏洞的快速被动扫描:
# 基于Docker的基线扫描
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t https://target.example.com \
-J baseline-report.json
# 使用配置文件
docker run -v $(pwd):/zap/wrk:rw -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t https://target.example.com \
-c zap-baseline.conf \
-J baseline-report.json
# 为JavaScript密集型应用包含AJAX爬虫
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t https://target.example.com \
-j \
-J baseline-report.json
2. OWASP ZAP全面扫描
全面的主动扫描:
# 全面扫描(包含主动扫描)
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://target.example.com \
-J full-scan-report.json
# 带更长超时时间的全面扫描
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://target.example.com \
-m 60 \
-J full-scan-report.json
# 使用自定义策略扫描
docker run -v $(pwd):/zap/wrk:rw -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://target.example.com \
-z "-config scanner.strength=INSANE" \
-J full-scan-report.json
3. OWASP ZAP API扫描
用于REST/GraphQL API测试:
# 使用OpenAPI规范扫描
docker run -v $(pwd):/zap/wrk:rw -t ghcr.io/zaproxy/zaproxy:stable zap-api-scan.py \
-t openapi.yaml \
-f openapi \
-J api-scan-report.json
# 使用GraphQL模式扫描
docker run -v $(pwd):/zap/wrk:rw -t ghcr.io/zaproxy/zaproxy:stable zap-api-scan.py \
-t https://api.example.com/graphql \
-f graphql \
-J graphql-scan-report.json
# 带认证头的API扫描
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-api-scan.py \
-t https://api.example.com/openapi.json \
-f openapi \
-z "-config replacer.full_list(0).description=auth \
-config replacer.full_list(0).enabled=true \
-config replacer.full_list(0).matchtype=REQ_HEADER \
-config replacer.full_list(0).matchstr=Authorization \
-config replacer.full_list(0).replacement='Bearer TOKEN'" \
-J api-scan-report.json
4. 身份验证扫描
# 基于表单的身份验证
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://target.example.com \
-z "-config authentication.method=formBasedAuthentication \
-config authentication.loginUrl=https://target.example.com/login \
-config authentication.username=testuser \
-config authentication.password=testpass" \
-J auth-scan-report.json
# 会话令牌身份验证
# 首先创建上下文文件
docker run -v $(pwd):/zap/wrk:rw -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://target.example.com \
-n context.context \
-J auth-scan-report.json
5. OWASP Top 10 2021检测
A01:2021 - 访问控制失效
# 用于访问控制测试的ZAP规则
# 专注于访问控制的主动扫描策略
zap-cli active-scan \
--scanpolicyname "access-control" \
--recurse \
https://target.example.com
# IDOR手动测试
# 测试参数操纵
curl -H "Authorization: Bearer $TOKEN" \
"https://api.example.com/users/123" # 应仅能访问自己的用户
curl -H "Authorization: Bearer $TOKEN" \
"https://api.example.com/users/456" # 测试IDOR
A02:2021 - 加密机制失效
# 使用testssl.sh进行SSL/TLS分析
docker run -it drwetter/testssl.sh https://target.example.com
# 检查弱密码套件
nmap --script ssl-enum-ciphers -p 443 target.example.com
# ZAP被动规则检测:
# - 缺少HSTS
# - 弱SSL/TLS
# - 混合内容
# - 不安全的Cookie
A03:2021 - 注入
# ZAP包含全面的注入测试:
# - SQL注入
# - XSS(反射型、存储型、DOM型)
# - LDAP注入
# - 操作系统命令注入
# - XML注入
# 使用SQLMap进行高级SQL注入测试
sqlmap -u "https://target.example.com/search?q=test" --batch --forms
A04:2021 - 不安全的设计
设计层面安全审查清单:
- 已完成威胁建模
- 安全需求已文档化
- 使用了安全设计模式
- 实施了纵深防御
A05:2021 - 安全配置错误
# ZAP检测:
# - 默认凭据
# - 启用了不必要的功能
# - 错误处理暴露信息
# - 缺少安全头
# 额外的头部检查
curl -I https://target.example.com | grep -i "x-frame-options\|content-security-policy\|x-content-type-options"
A06:2021 - 易受攻击的组件
# 使用Retire.js检查JavaScript库
retire --js --path ./public/js --outputformat json
# ZAP包含易受攻击库检测
# 也可使用dependency-scanner技能进行全面的SCA
A07:2021 - 身份验证失效
ZAP身份验证测试包括:
- 暴力破解防护
- 会话管理
- 密码策略
- 多因素认证绕过
A08:2021 - 软件和数据完整性失效
检查:
- CI/CD流水线安全
- 未签名的更新
- 反序列化漏洞
A09:2021 - 安全日志记录和监控失效
审查:
- 审计日志记录实现
- 日志注入漏洞
- 日志存储安全
A10:2021 - 服务器端请求伪造
# ZAP通过主动扫描检测SSRF
# 手动测试
curl "https://target.example.com/fetch?url=http://169.254.169.254/latest/meta-data/"
6. 报告生成
JSON报告
{
"@version": "2.14.0",
"@generated": "2026-01-24T10:00:00Z",
"site": [{
"@name": "https://target.example.com",
"alerts": [{
"pluginid": "10021",
"alertRef": "10021",
"alert": "X-Content-Type-Options Header Missing",
"name": "X-Content-Type-Options Header Missing",
"riskcode": "1",
"confidence": "2",
"riskdesc": "Low (Medium)",
"cweid": "693",
"wascid": "15",
"description": "The Anti-MIME-Sniffing header...",
"solution": "Ensure that the application sets the Content-Type header appropriately...",
"reference": "https://owasp.org/...",
"instances": [{
"uri": "https://target.example.com/",
"method": "GET",
"param": "X-Content-Type-Options"
}]
}]
}]
}
HTML报告
# 生成HTML报告
docker run -v $(pwd):/zap/wrk:rw -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t https://target.example.com \
-r owasp-report.html
MCP服务器集成
此技能可以利用以下MCP服务器:
| 服务器 | 描述 | 安装 |
|---|---|---|
| ZAP-MCP | AI驱动的OWASP ZAP集成 | GitHub |
| mcp-zap-server | Spring Boot ZAP MCP服务器 | GitHub |
| pentestMCP | 20+工具包括ZAP | GitHub |
ZAP-MCP特性
- 自动化扫描启动
- 结果解析和分析
- AI驱动的漏洞评估
- 修复指导生成
最佳实践
扫描策略
- 先基线扫描 - 从被动基线扫描开始
- 范围定义 - 定义清晰的目标范围
- 身份验证 - 为全面覆盖配置适当的身份验证
- 速率限制 - 尊重目标速率限制
- 排除敏感项 - 排除登出、删除、支付端点
扫描配置
# zap-baseline.conf
# 格式:规则ID 操作 参数
10021 警告 # X-Content-Type-Options
10038 警告 # CSP头缺失
10098 警告 # 跨域配置错误
40012 失败 # 跨站脚本(反射型)
40014 失败 # 跨站脚本(持久型)
40018 失败 # SQL注入
CI/CD集成
# GitHub Actions示例
name: OWASP安全扫描
on: [push, pull_request]
jobs:
zap-scan:
runs-on: ubuntu-latest
steps:
- name: ZAP基线扫描
uses: zaproxy/action-baseline@v0.10.0
with:
target: 'https://staging.example.com'
rules_file_name: '.zap-rules.tsv'
- name: 上传报告
uses: actions/upload-artifact@v3
with:
name: zap-report
path: report_html.html
流程集成
此技能与以下流程集成:
dast-scanning.js- 动态安全测试流水线penetration-testing.js- 全面的渗透测试security-assessment.js- 安全评估工作流devsecops-pipeline.js- DevSecOps自动化
输出格式
执行操作时,提供结构化输出:
{
"operation": "owasp-scan",
"scan_type": "full",
"status": "completed",
"target": "https://target.example.com",
"scan_duration_seconds": 1845,
"summary": {
"total_alerts": 45,
"by_risk": {
"high": 3,
"medium": 12,
"low": 18,
"informational": 12
},
"owasp_coverage": {
"A01_访问控制失效": 2,
"A02_加密机制失效": 1,
"A03_注入": 5,
"A05_安全配置错误": 8,
"A06_易受攻击的组件": 3,
"A07_身份验证失效": 2
}
},
"high_priority_findings": [
{
"name": "SQL注入",
"risk": "high",
"owasp": "A03:2021",
"cwe": "CWE-89",
"url": "https://target.example.com/search",
"parameter": "query",
"evidence": "错误信息:SQL语法错误"
}
],
"artifacts": ["full-scan-report.json", "owasp-report.html"]
}
错误处理
常见问题
| 错误 | 原因 | 解决方案 |
|---|---|---|
Connection refused |
目标不可达 | 验证目标URL和网络 |
Authentication failed |
无效凭据 | 检查身份验证配置 |
Scan timeout |
应用程序过大 | 增加超时或缩小范围 |
Rate limited |
扫描过于激进 | 调整扫描速度设置 |
约束
- 扫描前始终获得适当授权
- 未经批准切勿扫描生产系统
- 为目标基础设施配置适当的扫描速度
- 从范围中排除破坏性操作(登出、删除)
- 尊重速率限制和服务器容量
- 记录所有发现并提供修复指导