源代码渗透测试分析提示
来自 Wikiprompt,自由的提示词百科全书
源代码渗透测试分析提示 一份用于进行源代码辅助渗透测试的全面提示词,以专业报告形式呈现,包含13个详细章节,涵盖OWASP标准、配置、身份验证等内容。
提示词内容收藏
🌐
执行摘要
整体安全态势:关键
该应用程序存在多个关键漏洞,包括硬编码的AWS凭证、不安全的JWT实现、SQL注入、不安全的文件上传以及缺失安全头。攻击者可能完全控制应用程序,访问敏感数据,并破坏底层基础设施。
**前5个关键发现:**
1. **硬编码AWS凭证**(`.env`文件),,云账户完全泄露
2. **JWT密钥硬编码**(`auth.js`),,身份验证令牌可被伪造
3. **SQL注入**(`login.js`),,未经验证的输入直接拼接至SQL查询
4. **不安全的文件上传**(`upload.js`),,上传恶意文件可导致远程代码执行
5. **缺失安全头**(`server.js`),,点击劫持,MIME嗅探和XSS风险
**业务影响:**数据泄露,账户接管,法规罚款,品牌声誉受损以及完全云账户泄露。
---
## 1. 执行摘要
**整体安全态势:** 关键
该应用程序存在多个关键漏洞,包括硬编码的 AWS 凭证、不安全的 JWT 实现、SQL 注入、不安全的文件上传和缺失安全头。攻击者可以完全控制应用程序、访问敏感数据并破坏底层基础设施。
**前 5 个关键发现:**
1. **硬编码 AWS 凭证**(`.env` 文件), 云账户完全泄露
2. **JWT 密钥硬编码**(`auth.js`), 认证令牌可被伪造
3. **SQL 注入**(`login.js`), 未经验证的输入直接拼接到 SQL 查询中
4. **不安全的文件上传**(`upload.js`), 上传恶意文件可导致远程代码执行
5. **缺失安全头**(`server.js`), 点击劫持、MIME 嗅探和 XSS 风险
**业务影响:** 数据泄露、账户接管、监管罚款、品牌声誉受损以及云账户完全泄露。
---
## 2. 项目概述(基于代码分析)
- **技术栈:** 前端:React.js;后端:Node.js/Express;数据库:MySQL;其他库:`jsonwebtoken`、`multer`、`cors`
- **架构:** 单体 Node.js/Express 应用,使用 React 前端单页应用
- **认证方式:** 基于 JWT(`jsonwebtoken` 库),令牌存储在 `localStorage`
- **主要功能:** 用户注册/登录、带多文件上传的文件上传、管理员审批工作流、支付记录系统
---
## 3. 配置与部署安全性
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| 硬编码 AWS 凭证 | 严重 | `config/aws-config.js` | 在源代码中暴露 AWS `accessKeyId` 和 `secretAccessKey` | 使用环境变量或 AWS IAM 角色;将其从代码库中移除 |
| 调试模式未启用 | 低 | `.env` | 未设置 `NODE_ENV=production` | 在生产环境中设置 `NODE_ENV=production` |
| 缺失安全头 | 高 | `server.js` | 未使用 `helmet` 或其他中间件来设置安全头 | 使用 `helmet` 设置 `X-Frame-Options`、`X-Content-Type-Options` 等 |
| 配置不严的 CORS | 高 | `server.js` | 使用 `app.use(cors())` 允许所有来源 | 对 CORS 配置白名单来源 |
| Dockerfile 未指定用户 | 中 | `Dockerfile` | 容器以 `root` 用户运行 | 创建并使用非 root 用户 |
| 暴露的调试端口 | 低 | `docker-compose.yml` | 将端口 9229 (inspector) 暴露给外部 | 从 docker-compose 中移除或限制 |
---
## 4. 认证与会话管理
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| JWT 密钥硬编码 | 严重 | `middleware/auth.js` | JWT 签名密钥硬编码为 `"your-secret-key"` | 使用环境变量或密钥管理服务;避免硬编码密钥 |
| JWT 过期缺失 | 高 | `middleware/auth.js` | 令牌没有设置过期时间(`expiresIn`) | 为 JWT 添加短期过期时间 |
| Cookie 标志缺失 | 高 | `server.js` | 认证使用 `localStorage` 而非 HttpOnly cookie | 使用具有 `Secure`、`HttpOnly`、`SameSite` 属性的 HttpOnly cookie |
| 无速率限制 | 高 | `server.js` | 无速率限制中间件 | 实现速率限制(例如,`express-rate-limit`) |
---
## 5. 授权与访问控制
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| 基于角色的访问控制(RBAC)缺失 | 严重 | `routes/admin.js` | 管理员路由仅检查 JWT 存在,不检查角色 | 实现角色或权限检查(`admin`、`user`) |
| IDOR 漏洞 | 高 | `routes/payments.js` | URL 中的用户 ID,当获取发票时未授权检查 | 验证请求用户是否拥有该 ID;使用所有权检查 |
| 垂直权限提升 | 高 | `routes/admin.js` | 攻击者可以使用其用户 JWT 伪造管理员 JWT | 应用与上述 RBAC 修复相同 |
---
## 6. 输入验证与注入漏洞
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| SQL 注入 | 严重 | `routes/login.js` | SQL 查询直接拼接用户输入 | 使用参数化查询或 ORM |
| 存储型 XSS | 高 | `routes/upload.js` | 用户提交的表单数据未净化直接存储 | 对用户输入进行净化;对输出进行编码 |
| 文件上传漏洞 | 严重 | `routes/upload.js` | 允许上传任意文件类型,未验证内容 | 验证文件类型、MIME 类型和文件大小;使用安全的存储位置 |
| 路径遍历 | 高 | `routes/upload.js` | 文件名未净化,可导致路径遍历 | 对文件名进行消毒或使用随机生成的文件名 |
---
## 7. API 安全性
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| API 速率限制缺失 | 高 | `server.js` | 所有端点均接受无限速率请求 | 在 API 路由上添加速率限制 |
| 过度数据暴露 | 中 | `routes/payments.js` | API 返回不必要的用户 PII | 仅返回所需字段 |
---
## 8. 业务逻辑与客户端问题
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| 支付验证仅客户端 | 高 | `routes/payments.js` | 没有服务器端价格验证 | 在服务器端添加价格验证 |
| 不安全的 localStorage 使用 | 中 | `public/js/main.js` | 将 JWT 存储在 localStorage | 使用 HttpOnly cookie |
| 纯客户端身份验证授权 | 高 | `server.js` | 对秘管理员的检查完全在客户端完成 | 移动检查到服务端 |
---
## 9. 加密与敏感数据
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| 弱密码哈希 | 高 | `routes/auth.js` | 密码使用明文存储(如 `bcrypt` 缺失) | 使用 `bcrypt` 或 `argon2` |
| 敏感数据记录 | 中 | `routes/login.js` | 登录错误记录用户的个人身份信息 | 移除日志,在日志中清理凭据 |
---
## 10. 依赖与供应链安全
| 问题 | 严重程度 | 文件/位置 | 描述 | 建议 |
|------|----------|-----------|-------------|--------------|
| 过时依赖 | 高 | `package.json` | 旧版本的库,已知 CVE(例如,Express 4.x,`multer` 1.x) | 升级到最新稳定版本 |
---
## 11. 发现摘要表
| 漏洞 | 严重程度 | 文件/位置 | 描述 | 建议 |
|--------|----------|-----------|-------------|--------------|
| 硬编码凭证 | 严重 | `.env` | AWS 凭证泄露 | 移除,使用密钥管理服务 |
| SQL 注入 | 严重 | `routes/login.js` | 用户输入未净化即查询 | 使用参数化查询 |
| 不安全的 JWT | 严重 | `middleware/auth.js` | 硬编码密钥,无过期 | 使用环境变量,设置过期 |
| 不安全文件上传 | 严重 | `routes/upload.js` | 允许任意文件类型 | 验证 MIME 类型,限制文件大小 |
| 缺失安全头 | 高 | `server.js` | 无 CSP、frame 防护 | 添加 `helmet` |
| 弱密码哈希 | 高 | `routes/auth.js` | 密码明文存储 | 使用 bcrypt |
---
## 12. 优先修复路线图
**严重(立即修复):**
- 轮换硬编码的 AWS 凭证
- 修复 SQL 注入(参数化查询)
- 修复 JWT 密钥管理(使用环境变量)
- 修复文件上传(验证,限制)
- 在服务端添加 RBAC
**高(下一个迭代):**
- 添加安全头
- 添加速率限制
- 使用 HttpOnly cookie
- 实现服务器端支付验证
**中(正在进行):**
- 升级依赖
- 避免日志记录个人身份信息
- 加固 CORS 配置
**低(持续改进):**
- 安全代码审查
- 自动化 SAST 扫描
- 网络分段
---
## 13. 结论与安全建议
该应用在架构和功能方面具有良好基础,但其当前形式下的多个安全问题使其不适合部署。建议执行以下步骤:
- 由安全专家进行全面的安全评估
- 使用安全的开发实践重写关键模块(认证、支付、上传)
- 采用安全开发生命周期(SDLC)最佳实践
- 对开发团队进行安全编码标准培训(OWASP)
此分析仅供教育和安全改进目的使用。
用法
此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。
为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。
讨论
0 条评论