brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
performing-web-application-penetration-test遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。
Independent GitHub snapshot · Automated classification · Original documentation governs
不适用场景:未获书面授权擅自测试 Web 应用程序、在高峰流量期间未经明确批准测试生产系统,或对 Web 基础设施进行拒绝服务测试。
映射 Web 应用程序的整个攻击面:
X-Powered-By、Server)、Cookie(JSESSIONID = Java,PHPSESSID = PHP,ASP.NET_SessionId = .NET)和页面扩展名识别技术栈ffuf 枚举端点:ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u https://target.com/FUZZ -mc 200,301,302,403LinkFinder.py 审查 JavaScript 文件,查找硬编码 API 端点、密钥和客户端路由测试认证机制的弱点:
验证访问控制是否正确执行:
X-HTTP-Method-Override: DELETE)/api/users/123/../456/profile)以绕过基于路径的授权检查测试所有输入点的注入漏洞:
' OR 1=1--、' UNION SELECT NULL,NULL-- 和时间盲注载荷('; WAITFOR DELAY '0:0:5'--)。对已确认的注入点使用 sqlmap 进行自动化检测和利用<script>alert(document.domain)</script>、"><img src=x onerror=alert(1)> 和事件处理器等载荷测试反射型、存储型和 DOM 型 XSS。在所有上下文中测试:HTML 正文、属性、JavaScript 和 URLhttp://169.254.169.254/latest/meta-data/、http://127.0.0.1:6379/);、|、&&、`)后跟命令(id、whoami、ping -c 3 collaborator.net)<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>){{7*7}}、${7*7}、<%= 7*7 %>评估会话处理的安全性:
Secure、HttpOnly 和 SameSite 标志。缺少 HttpOnly 会导致基于 XSS 的会话窃取;缺少 SameSite 会导致 CSRF测试自动化扫描器无法检测到的应用特定逻辑缺陷:
将所有发现汇编成结构化报告:
| 术语 | 定义 |
|---|---|
| OWASP WSTG | Web 安全测试指南;按测试类别(认证、授权、输入验证等)组织的全面开源 Web 应用安全测试指南 |
| IDOR | 不安全直接对象引用;应用程序暴露内部对象标识符且未验证请求用户是否有权访问该对象的漏洞 |
| CSRF | 跨站请求伪造;强制已认证用户的浏览器向存在漏洞的 Web 应用发送伪造请求的攻击 |
| 会话固定 | 攻击者在用户认证前将其会话 ID 设置为已知值,然后在登录后劫持会话的攻击 |
| 强制浏览 | 通过直接请求不从可见应用链接的 URL 来访问应用资源,绕过预期访问控制的技术 |
| SSTI | 服务器端模板注入;将模板指令注入服务器端模板引擎以实现远程代码执行 |
背景:一家零售公司正在推出基于 Node.js 和 React 前端、PostgreSQL 数据库构建的新电子商务平台。应用通过 Stripe 集成处理信用卡支付并存储客户 PII。测试范围包括具有完整 API 访问权限的预发布环境。
方法:
/api/orders/{orderId})中发现 IDOR 漏洞,任何已认证用户可通过遍历订单 ID 查看任意订单常见陷阱:
## 发现:订单 API 中的不安全直接对象引用
**ID**: WEB-003
**严重性**: 高危(CVSS 7.5)
**受影响 URL**: GET /api/v1/orders/{orderId}
**参数**: orderId(路径参数)
**描述**:
订单获取端点未验证已认证用户是否拥有所请求的订单。任何已认证用户
均可通过递增路径参数中的 orderId,访问包含客户姓名、收货地址、邮箱、
电话号码和订单项目的任意订单详情。
**重现步骤**:
1. 以用户 A(testuser@example.com)身份认证
2. 记录用户 A 的订单 ID:10451
3. 使用用户 A 的会话令牌发送 GET /api/v1/orders/10452
4. 观察到返回了用户 B 的订单详情,包含完整 PII
**HTTP 请求**:
GET /api/v1/orders/10452 HTTP/1.1
Host: staging.example.com
Authorization: Bearer eyJhbGc....[用户 A 的令牌]
**HTTP 响应**(截断):
HTTP/1.1 200 OK
{"orderId":10452,"customerName":"Jane Smith","email":"jane@...","address":"123 Main St"}
**影响**:
攻击者可枚举所有客户订单,提取约 25,000 名客户的 PII(姓名、邮箱、
地址、电话号码)。
**修复建议**:
添加授权中间件,在返回订单数据前验证已认证用户的 ID 与订单的 userId 字段是否匹配。
使用 UUID 代替顺序整数作为订单标识符,防止枚举。