mcpField
Q
qe-security-testing

qe-security-testing

github.com/proffesor-for-testing安全51984 次安装今天更新
代码仓库

关于 qe-security-testing

面向安全测试和审计工作的技能,汇总 OWASP Top 10、认证授权、输入验证、依赖项及机密信息检查方法,并提供测试示例。

主要功能

  1. 01按 OWASP Top 10 检查漏洞
  2. 02验证认证与访问控制
  3. 03测试注入和输入验证
  4. 04扫描依赖项与机密信息
  5. 05将安全检查纳入 CI/CD

适用场景

  1. 01开展应用安全审计
  2. 02验证 API 端点的认证和授权
  3. 03检查代码与日志中的机密信息
  4. 04在 CI/CD 中运行持续安全检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-security-testing

安装后在 Claude Code 中输入/qe-security-testing确认已加载。

详细介绍

安全测试

<default_to_action> 测试安全性或开展审计时:

  1. 系统地测试 OWASP Top 10 漏洞
  2. 验证每个端点的身份验证和授权
  3. 扫描依赖项中的已知漏洞(npm audit)
  4. 检查是否存在注入攻击(SQL、XSS、命令)
  5. 确认代码/日志中未暴露机密

快速安全检查:

  • 访问控制 → 测试水平/垂直权限提升
  • 加密 → 验证密码哈希、HTTPS,确认未暴露敏感数据
  • 注入 → 测试 SQL 注入、XSS、命令注入
  • 身份验证 → 测试弱密码、会话固定、MFA 强制要求
  • 配置 → 检查错误消息是否泄露信息

关键成功因素:

  • 像攻击者一样思考,像防御者一样构建
  • 将安全性融入构建过程,而不是最后再添加
  • 在 CI/CD 中持续测试,而不只是发布前测试 </default_to_action>

快速参考卡

适用场景
  • 安全审计和渗透测试
  • 测试身份验证/授权
  • 验证输入清理
  • 审查安全配置
OWASP Top 10(2021)
#漏洞关键测试
1访问控制失效用户 A 访问用户 B 的数据
2加密机制失效明文密码、HTTP
3注入SQL/XSS/命令注入
4不安全设计速率限制、会话超时
5安全配置错误详细错误、暴露的 /admin
6易受攻击的组件npm audit、过时的软件包
7身份验证失效弱密码、未启用 MFA
8完整性失效未签名更新、恶意软件
9日志记录失效遭受攻击时没有审计记录
10SSRF服务器获取内部 URL
工具
类型工具用途
SASTSonarQube、Semgrep静态代码分析
DASTOWASP ZAP、Burp动态扫描
依赖项npm audit、Snyk依赖项漏洞
机密git-secrets、TruffleHog机密扫描
Agent 协作
  • qe-security-scanner:多层 SAST/DAST 扫描
  • qe-api-contract-validator:API 安全测试
  • qe-quality-analyzer:安全代码审查

关键漏洞测试

1. 访问控制失效
// Horizontal escalation - User A accessing User B's data
test('user cannot access another user\'s order', async () => {
  const userAToken = await login('userA');
  const userBOrder = await createOrder('userB');

  const response = await api.get(`/orders/${userBOrder.id}`, {
    headers: { Authorization: `Bearer ${userAToken}` }
  });
  expect(response.status).toBe(403);
});

// Vertical escalation - Regular user accessing admin
test('regular user cannot access admin', async () => {
  const userToken = await login('regularUser');
  expect((await api.get('/admin/users', {
    headers: { Authorization: `Bearer ${userToken}` }
  })).status).toBe(403);
});
2. 注入攻击
// SQL Injection
test('prevents SQL injection', async () => {
  const malicious = "' OR '1'='1";
  const response = await api.get(`/products?search=${malicious}`);
  expect(response.body.length).toBeLessThan(100); // Not all products
});

// XSS
test('sanitizes HTML output', async () => {
  const xss = '<script>alert("XSS")</script>';
  await api.post('/comments', { text: xss });

  const html = (await api.get('/comments')).body;
  expect(html).toContain('&lt;script&gt;');
  expect(html).not.toContain('<script>');
});
3. 加密机制失效
test('passwords are hashed', async () => {
  await db.users.create({ email: '[email protected]', password: 'MyPassword123' });
  const user = await db.users.findByEmail('[email protected]');

  expect(user.password).not.toBe('MyPassword123');
  expect(user.password).toMatch(/^\$2[aby]\$\d{2}\$/); // bcrypt
});

test('no sensitive data in API response', async () => {
  const response = await api.get('/users/me');
  expect(response.body).not.toHaveProperty('password');
  expect(response.body).not.toHaveProperty('ssn');
});
4. 安全配置错误
test('errors don\'t leak sensitive info', async () => {
  const response = await api.post('/login', { email: '[email protected]', password: 'wrong' });
  expect(response.body.error).toBe('Invalid credentials'); // Generic message
});

test('sensitive endpoints not exposed', async () => {
  const endpoints = ['/debug', '/.env', '/.git', '/admin'];
  for (let ep of endpoints) {
    expect((await fetch(`https://example.com${ep}`)).status).not.toBe(200);
  }
});
5. 速率限制
test('rate limiting prevents brute force', async () => {
  const responses = [];
  for (let i = 0; i < 20; i++) {
    responses.push(await api.post('/login', { email: '[email protected]', password: 'wrong' }));
  }
  expect(responses.filter(r => r.status === 429).length).toBeGreaterThan(0);
});

安全检查清单

身份验证
  • 强密码要求(12 个字符以上)
  • 密码哈希(bcrypt、scrypt、Argon2)
  • 敏感操作启用 MFA
  • 多次尝试失败后锁定账户
  • 登录后更改会话 ID
  • 会话超时
授权
  • 检查每个请求的授权
  • 最小权限原则
  • 不存在水平权限提升
  • 不存在垂直权限提升
数据保护
  • 全程使用 HTTPS
  • 静态数据已加密
  • 代码/日志中不含机密
  • 符合 PII 要求(GDPR)
输入验证
  • 服务端验证
  • 参数化查询(避免 SQL 注入)
  • 输出编码(避免 XSS)
  • 速率限制

CI/CD 集成

# GitHub Actions
security-checks:
  steps:
    - name: Dependency audit
      run: npm audit --audit-level=high

    - name: SAST scan
      run: npm run sast

    - name: Secret scan
      uses: trufflesecurity/trufflehog@main

    - name: DAST scan
      if: github.ref == 'refs/heads/main'
      run: docker run owasp/zap2docker-stable zap-baseline.py -t https://staging.example.com

提交前钩子:

#!/bin/sh
git-secrets --scan
npm run lint:security

Agent 辅助安全测试

// Comprehensive multi-layer scan
await Task("Security Scan", {
  target: 'src/',
  layers: { sast: true, dast: true, dependencies: true, secrets: true },
  severity: ['critical', 'high', 'medium']
}, "qe-security-scanner");

// OWASP Top 10 testing
await Task("OWASP Scan", {
  categories: ['broken-access-control', 'injection', 'cryptographic-failures'],
  depth: 'comprehensive'
}, "qe-security-scanner");

// Validate fix
await Task("Validate Fix", {
  vulnerability: 'CVE-2024-12345',
  expectedResolution: 'upgrade package to v2.0.0',
  retestAfterFix: true
}, "qe-security-scanner");

Agent 协作提示

记忆命名空间
aqe/security/
├── scans/*           - Scan results
├── vulnerabilities/* - Found vulnerabilities
├── fixes/*           - Remediation tracking
└── compliance/*      - Compliance status
Fleet 协作
const securityFleet = await FleetManager.coordinate({
  strategy: 'security-testing',
  agents: [
    'qe-security-scanner',
    'qe-api-contract-validator',
    'qe-quality-analyzer',
    'qe-deployment-readiness'
  ],
  topology: 'parallel'
});

常见错误

❌ 依靠隐蔽性实现安全

将管理员入口隐藏在 /super-secret-admin → 使用适当的身份验证

❌ 仅进行客户端验证

JavaScript 验证可以被绕过 → 始终在服务端验证

❌ 信任用户输入

假设输入是安全的 → 清理、验证并转义所有输入

❌ 硬编码机密

将 API 密钥写入代码 → 使用环境变量和机密管理


相关技能


请谨记

像攻击者一样思考: 你会尝试破坏什么?测试它。 像防御者一样构建: 在证明输入无害之前,始终假设输入是恶意的。 持续测试: 安全测试应持续进行,而非一次性完成。

借助 Agent: Agent 可自动扫描漏洞、跟踪修复进度并验证修复。使用 Agent 大规模维护安全态势。

评论

支持 Markdown