公开文集
0x01 信安之路安全产品
0x01 SRC 资产管理系统
001 企业资产有那些?
002 订阅最新 POC
003 IP 域名关联查询
004 公益权重数据
0x02 安全学习成长平台
001 成长平台视频参考
100 百分成就-学习心得-TOP 21 小伙伴
101 百分成就-学习心得-不想起床
102 百分成就-学习心得-不驚
103 百分成就-学习心得-aiDa0
104 百分成就-学习心得-起十二
105 百分成就-学习心得-Eyes
201 你为什么选择信安之路!
0x03 安全知识库
001 蜜罐运营专辑
0x04 自研蜜罐系统
0x02 Web 漏洞案例库
0x01 配置安全
001 header 安全配置
002 首页信息泄露
003 HTTP 访问控制 (CORS)
0x02 安全控制缺失
001 速率限制绕过
0x03 应用逻辑
0x03 小程序漏洞案例库
第一章:小程序渗透基础
1.1 微信小程序反编译与动态调试
1.2 微信小程序强制开启开发者模式
0x04 星球讨论知识问答
信息安全入门
学习方向选择
学习经验分享
安全产品研发
代码审计
物联网安全
APT
安全防御建设
安全建设经验
数据泄露监控
网络安全
终端安全
主机安全
产品安全
安全意识
数据安全
内部资产管理
安全管理
应急响应
网络安全架构
安全运营
业务安全
运维安全
渗透测试技术
信息收集
EXP/POC
web 测试
APP测试
内网渗透
0x05 代码审计小挑战
01 前端安全问题
101 script 标签下的 XSS
102 消息事件引发的 DOM XSS
104 常规评论 xss 漏洞
105 页面开放重定向漏洞
106 部分过滤的 xss 漏洞绕过
107 基于 DOM 的 XSS
108 CORS 配置错误
109 退出登录出 XSS
110 URL 重定向漏洞
111 CSRF 漏洞利用
112 JavaScript 代码注入
113 xss 绕过括号和反引号检测
02 文件操作类问题
201 Django 任意文件读取漏洞
202 php 后缀黑名单验证绕过上传
203 jsp 任意文件上传
204 jsp 代码中的 SSRF 漏洞
205 jsp 目录穿越漏洞
206 PHP文件包含漏洞
207 Django 本地文件包含
208 文件包含功能绕过
209 SSRF 跨服务端请求伪造
210 本地文件包含漏洞 windows
211 目录穿越漏洞
212 文件上传绕过
213 php 文件包含漏洞
03 注入类问题
301 由 SQL 注入引发的命令执行
302 php8 XML 实体注入
303 正则问题导致验证绕过
304 XPath 注入
305 典型认证 SQL 注入
306 数字型 SQL 注入
307 主机头(host header)注入
308 LDAP 注入
309 典型的万能密码漏洞
310 Ldap 注入漏洞代码
04 命令执行类问题
401 调用第三方工具时被劫持
402 原型污染导致命令执行
403 php array_map 代码执行
404 命令执行绕过检测
405 SSTI 模板注入
406 文件名注入 RCE
407 无防护命令执行
408 python eval 注入
409 绕过多个黑名单命令
05 业务逻辑类问题
501 django 认证 jwt 未验证 token
502 绕过权限检测执行命令
503 密码找回邮箱地址大小写绕过
504 DNS 重绑定问题
505 权限比对逻辑问题
506 越权访问其他用户的记录
507 用户注册问题
508 用户权限验证逻辑问题
509 PHP 判断两个变量相等逻辑问题
06 反序列化类问题
601 php 反序列化漏洞
602 python 反序列化漏洞
09 C语言问题
901 c 条件竞争
902 缓冲区溢出
903 通配符注入提权
0x99 AI 教你学安全
01-网络安全基础
Day-001-TCP-IP协议栈安全分析
Day-002-DNS协议安全与DNS劫持攻防
Day-003-IPv6 安全基础与过渡
Day-004-HTTP-HTTPS协议深度解析
Day-005-网络嗅探与流量分析技术
Day-006-防火墙原理与配置实践
Day-007-网络地址转换 NAT 安全分析
Day-008-路由协议安全 RIP-OSPF-BGP
Day-009-VLAN 安全与 VLAN-Hopping
Day-010-无线网络基础与安全 802.11
Day-011-网络访问控制 802.1X-NAC
Day-012-网络分段与微隔离设计
Day-013-负载均衡器安全配置
Day-014-CDN安全与防护
Day-015-NTP安全
Day-016-DHCP安全与攻击防护
Day-017-ICMP协议安全分析
Day-018-网络协议模糊测试基础
Day-019-网络流量基线建立
Day-020-网络取证基础
Day-021-网络入侵检测系统 NIDS
Day-022-网络入侵防御系统 NIPS
Day-023-网络流量加密与解密
Day-024-网络协议逆向工程基础
Day-025-网络性能与安全权衡
Day-026-SDN 安全
Day-027-网络虚拟化安全
Day-028-网络欺骗技术
Day-029-网络威胁情报应用
Day-030-网络容量规划与安全
Day-031-网络安全架构设计实战
02-Web 安全
Day-032-OWASP-Top-10-2021详解
Day-033-SQL 注入原理与手工检测
Day-034-SQL注入进阶报错注入与盲注
Day-035-XSS跨站脚本攻击基础
Day-036-XSS 进阶绕过与利用
Day-038-CSRF 跨站请求伪造
Day-039-文件上传漏洞
Day-040-反序列化漏洞基础
Day-041-PHP反序列化深入
Day-042-Java反序列化深入
Day-043-SSTI 服务端模板注入
Day-044-文件包含漏洞 LFI-RFI
Day-045-命令注入漏洞
Day-046-XXE-XML 外部实体注入
Day-047-反序列化漏洞进阶
Day-048-API 安全基础
Day-049-API认证与授权安全
Day-050-API漏洞挖掘实战
Day-051-文件上传漏洞进阶
Day-052-反序列化漏洞实战
Day-053-Web 安全综合实战
Day-054-移动安全基础
Day-055-Android 应用安全测试
Day-056-iOS 应用安全测试
Day-057-移动应用综合实战
Day-058-云安全基础
Day-059-AWS 安全实战
Day-060-Azure 安全实战
Day-061-GCP 安全实战
Day-062-云安全综合实战
Day-063-容器安全基础
Day-064-Docker 安全实战
Day-065-Kubernetes 安全实战
Day-066-容器安全综合实战
Day-067-API 安全进阶
Day-068-服务端请求伪造 SSRF 深入
Day-069-文件上传漏洞进阶
Day-070-反序列化漏洞实战进阶
Day-071-业务逻辑漏洞深入
Day-072-前端安全深入
Day-073-Web 安全综合实战
Day-074-云安全进阶
Day-075-移动安全进阶
Day-076-API 安全进阶
Day-077-前端安全进阶
Day-078-业务逻辑漏洞进阶
Day-079-反序列化漏洞实战进阶
Day-080-文件上传漏洞实战进阶
Day-081-SSTI 服务端模板注入进阶
Day-082-XXE-XML 外部实体注入进阶
Day-083-SSRF 服务端请求伪造进阶
Day-084-命令注入漏洞进阶
Day-085-文件包含漏洞进阶
Day-086-反序列化漏洞实战进阶
Day-087-文件上传漏洞实战进阶
Day-088-SSTI 服务端模板注入实战进阶
Day-089-XXE-XML 外部实体注入实战进阶
Day-090-SSRF 服务端请求伪造实战进阶
Day-091-命令注入漏洞实战进阶
Day-092-Web 安全综合实战
Day-093-GraphQL 安全
Day-094-JWT 与 OAuth2 安全
03-系统安全
Day-095-系统监控与检测
Day-096-主机防火墙配置
Day-097-系统审计与合规
Day-098-Linux 系统安全进阶
Day-099-Windows 系统安全进阶
Day-100-容器安全进阶
Day-101-容器编排安全进阶
Day-102-Linux 内核安全
Day-103-Windows 内核安全
Day-104-系统安全总结与实战
Day-105-Linux 系统安全基础
Day-106-Windows 系统安全基础
Day-107-容器安全基础
Day-108-系统加固技术
Day-109-日志分析技术
Day-110-威胁狩猎技术
04-应用安全
Day-111-安全编码规范
Day-112-输入验证技术
Day-113-输出编码技术
Day-114-错误处理安全
Day-115-会话管理安全
Day-116-认证安全
Day-117-授权安全
Day-118-数据保护安全
Day-119-日志安全
Day-120-API 安全
Day-121-微服务安全
Day-122-新兴技术安全概论
Day-123-DevSecOps 流水线安全
Day-124-云原生安全架构
Day-125-API 安全最佳实践
Day-126-安全编码规范
Day-127-SDL 安全开发生命周期
Day-128-威胁建模实战
Day-129-安全需求分析
Day-130-安全架构设计
Day-131-安全编码实践Java
Day-132-安全编码实践Python
Day-133-代码审计方法论
Day-134-静态代码分析SAST
Day-135-动态应用测试DAST
Day-136-交互式测试IAST
Day-137-软件成分分析SCA
Day-138-依赖漏洞管理
Day-139-安全测试自动化
Day-140-漏洞管理与响应
Day-142-OWASP-Top10-2024 详解
Day-143-CWE-Top25 分析
Day-144-漏洞挖掘方法论
Day-145-模糊测试技术
Day-146-逆向工程基础
Day-147-漏洞利用开发基础
Day-148-漏洞复现与验证
Day-149-漏洞披露流程
Day-150-CVE 申请与管理
Day-151-漏洞赏金计划
Day-152-等保2.0详解
Day-153-GDPR 合规实践
Day-154-数据安全法解读
Day-155-个人信息保护法与合规指南
Day-156-个人信息保护法解读
Day-157-ISO-27001 信息安全管理体系
Day-158-SOC-2 合规与审计
Day-159-PCI-DSS 支付卡行业数据安全标准
Day-160-网络安全审查办法解读
Day-161-数据出境安全评估办法
Day-162-应用安全评估实战
Day-163-红蓝对抗演练
Day-164-安全应急响应
Day-165-安全运营中心建设
Day-166-应用安全总结与展望
05-密码学
Day-167-密码学基础
Day-168-对称加密算法详解
Day-169-非对称加密算法详解
Day-170-哈希函数与数字签名
Day-171-密钥管理与PKI
Day-172-TLS-SSL 协议详解
Day-173-国密算法详解
Day-174-认证与密钥协议
Day-175-随机数生成与熵源
Day-176-椭圆曲线密码学详解
Day-177-后量子密码学详解
Day-178-高级密码学主题
Day-179-密码学行业应用精选
Day-180-常用加密算法原理与实现
Day-181-密码学总结与展望
06-渗透测试
Day-183-渗透测试方法论
Day-184-信息收集技术详解
Day-185-漏洞扫描技术详解
Day-186-漏洞利用技术详解
Day-187-渗透测试中的漏洞利用框架
Day-188-漏洞利用框架与 Metasploit 深入
Day-189-渗透测试中的 WAF 绕过技术
Day-190-渗透测试中的模糊测试技术
Day-191-渗透测试中的代码审计与静态分析
Day-192-渗透测试中的密码哈希破解技术
Day-193-渗透测试报告编写指南
Day-194-Web 应用渗透测试
Day-195-渗透测试中的 API 安全测试
Day-196-渗透测试中的 GraphQL 安全测试
Day-197-渗透测试中的前后端分离应用测试
Day-198-渗透测试中的小程序安全测试
Day-199-渗透测试中的浏览器安全测试
Day-200-OAuth-SSO安全测试
Day-201-渗透测试中的业务逻辑漏洞测试
Day-202-渗透测试中的厚客户端安全测试
Day-203-渗透测试综合实战演练
Day-204-内网渗透技术详解
Day-205-渗透测试中的内网信息收集进阶
Day-206-渗透测试中的域森林渗透技术
Day-207-渗透测试中的权限维持技术
Day-208-渗透测试中的横向移动技术
Day-209-渗透测试中的痕迹清理与反取证技术
Day-210-渗透测试中的数据窃取与 Exfiltration 技术
Day-211-渗透测试中的内部威胁与数据泄露测试
Day-212-渗透测试中的物理安全渗透
Day-213-社会工程学攻击技术
Day-214-移动应用渗透测试
Day-215-云安全渗透测试
Day-216-渗透测试中的容器与 Kubernetes 安全渗透
Day-217-渗透测试中的 Serverless 安全测试
Day-218-渗透测试中的微服务安全测试
Day-219-物联网安全渗透测试
Day-220-工业控制系统安全渗透测试
Day-221-无线网络安全渗透测试
Day-222-数据库安全渗透测试
Day-223-渗透测试中的供应链安全测试
Day-224-红队演练技术详解
Day-225-渗透测试中的红队基础设施搭建
Day-226-渗透测试中的威胁情报与狩猎
Day-227-渗透测试中的综合指纹识别技术
Day-228-自动化渗透测试技术
Day-229-渗透测试中的运维安全测试
Day-230-渗透测试中的区块链与智能合约安全测试
Day-231-渗透测试中的漏洞管理与修复验证
Day-232-渗透测试法律与合规
Day-233-后渗透攻击技术详解
Day-234-渗透测试中的人工智能应用
Day-235-漏洞利用开发深入
Day-236-云原生渗透测试深入
07-应急响应
Day-237-应急响应概述与核心概念
Day-238-应急响应流程框架
Day-239-CSIRT 团队组建与职责分工
Day-240-应急响应工具包准备
Day-241-应急响应法律与合规要求
Day-242-安全事件检测方法与指标
Day-243-云原生应急响应
Day-244-日志收集与分析技术
Day-245-网络流量分析与异常识别
Day-246-自动化响应与 SOAR
Day-247-端点监控与 EDR 技术
Day-248-威胁狩猎方法论
Day-249-威胁情报在检测中的应用
Day-250-数字取证基础与证据链管理
Day-251-内存取证技术
Day-252-磁盘取证与文件恢复
Day-253-网络取证与数据包分析
Day-254-云环境与容器取证
Day-255-恶意代码静态分析技术
Day-256-恶意代码动态分析技术
Day-257-恶意代码行为分析方法
Day-258-逆向工程基础与工具
Day-259-沙箱技术与自动化分析
Day-260-事件隔离与遏制策略
Day-261-威胁根除与系统修复
Day-262-系统恢复与数据重建
Day-263-业务连续性计划
Day-264-事件复盘与经验总结
Day-265-APT 攻击事件复盘分析
Day-266-勒索软件事件响应实战
Day-267-数据泄露事件处置流程
Day-268-内部威胁调查与取证
Day-269-综合应急响应演练
08-安全运维
Day-270-安全运营中心 SOC 概述
Day-271-安全监控指标体系
Day-272-安全告警管理
Day-273-安全可视化与仪表盘
Day-274-监控工具选型
Day-275-日志采集技术
Day-276-日志标准化与解析
Day-277-日志存储与归档
Day-278-日志分析技术
Day-279-日志合规要求
Day-280-SIEM 架构与设计
Day-281-关联规则引擎
Day-282-高级关联分析
Day-283-UEBA 用户实体行为分析
Day-284-威胁狩猎
Day-285-SOAR 基础概念
Day-286-剧本设计
Day-287-自动化响应技术
Day-288-安全工具集成
Day-289-SOAR 度量与优化
Day-290-安全基线管理
Day-291-漏洞管理流程
Day-292-补丁管理策略
Day-293-变更安全管理
Day-294-合规审计技术
Day-295-7x24 安全运营
Day-296-安全事件管理流程
Day-297-安全运营度量体系
Day-298-持续改进机制
Day-299-安全运维综合演练
Day-300-云原生安全运营
Day-301-AI 与机器学习安全运营
Day-302-安全自动化脚本实战
09-移动安全
Day-303-移动安全威胁概述
Day-304-移动设备安全架构
Day-305-移动操作系统安全模型
Day-306-移动应用权限管理
Day-307-移动端数据加密
Day-308-330-Android 安全合集
Day-309-Android 安全架构
Day-310-Android 组件安全
Day-311-Android 权限与隐私
Day-312-Android 逆向工程
Day-313-Android 应用加固
Day-314-iOS 安全架构
Day-315-iOS 应用沙盒机制
Day-316-越狱与反越狱
Day-317-iOS 逆向工程
Day-318-iOS 企业分发安全
Day-319-移动安全开发生命周期
Day-320-移动应用安全测试
Day-321-移动应用加固技术
Day-322-移动威胁防护
Day-323-移动安全合规
10-云安全
Day-324-云计算安全模型
Day-325-责任共担模型
Day-326-云安全威胁模型
Day-327-云安全合规框架
Day-328-云安全架构设计
Day-329-AWS IAM 安全
Day-330-AWS 网络安全
Day-331-AWS 存储安全
Day-332-AWS 安全监控
Day-333-AWS 安全最佳实践
Day-334-Azure AD 安全
Day-335-Azure 网络安全
Day-336-Azure 存储安全
Day-337-Azure 安全中心
Day-338-Azure 安全最佳实践
Day-339-容器安全基础
Day-340-Kubernetes 安全
Day-341-Serverless 安全
Day-342-云原生 DevSecOps
Day-343-云安全态势管理 CSPM
11-物联网工控
Day-344-物联网安全概述
Day-345-IoT 通信协议安全
Day-346-IoT 设备安全
Day-347-IoT 平台安全
Day-348-IoT 应用安全
Day-349-工业控制系统概述
Day-350-工控协议安全
Day-351-PLC 安全
Day-352-SCADA 系统安全
Day-353-工控安全防护
12-综合与总结
Day-354-安全职业发展路径
Day-355-安全技术趋势展望
Day-356-安全建设方法论
Day-357-经典攻防案例复盘
Day-358-安全学习资源指南
Day-359-信息安全行业求职指南
-
+
首页
Day-162-应用安全评估实战
# Day 176: 应用安全评估实战 > 综合实战系列第 1 天 | 预计阅读时间:50 分钟 | 难度:★★★★★ --- ## 清单 目录 1. [应用安全评估概述](#应用安全评估概述) 2. [评估框架与方法论](#评估框架与方法论) 3. [信息收集与资产发现](#信息收集与资产发现) 4. [威胁建模](#威胁建模) 5. [漏洞扫描与检测](#漏洞扫描与检测) 6. [手动渗透测试](#手动渗透测试) 7. [代码安全审计](#代码安全审计) 8. [配置安全审查](#配置安全审查) 9. [风险评估与定级](#风险评估与定级) 10. [报告编写与交付](#报告编写与交付) 11. [修复验证与复测](#修复验证与复测) 12. [实战案例分析](#实战案例分析) 13. [总结与思考](#总结与思考) 14. [参考资料](#参考资料) --- ## 应用安全评估概述 ### 定义与目标 应用安全评估(Application Security Assessment)是对应用程序进行全面的安全检查,识别潜在的安全漏洞和风险,并提供修复建议的系统性过程。 **核心目标**: ``` 1. 识别安全风险 ✓ 发现已知漏洞 ✓ 识别配置缺陷 ✓ 发现逻辑漏洞 ✓ 评估安全控制有效性 2. 评估风险等级 ✓ 量化风险影响 ✓ 确定修复优先级 ✓ 支持资源分配决策 3. 提供修复指导 ✓ 给出具体修复方案 ✓ 提供最佳实践建议 ✓ 支持安全能力建设 4. 满足合规要求 ✓ 等保 2.0 要求 ✓ 行业监管要求 ✓ 客户安全要求 ``` ### 评估类型 **按评估深度分类**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 应用安全评估类型 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 1. 快速评估 (Quick Assessment) │ │ - 时间:1-3 天 │ │ - 范围:核心功能、高危漏洞 │ │ - 方法:自动化扫描 + 关键手动测试 │ │ - 适用:迭代快速检查、上线前验证 │ │ │ │ 2. 标准评估 (Standard Assessment) │ │ - 时间:1-2 周 │ │ - 范围:全部功能、OWASP Top 10 │ │ - 方法:自动化 + 手动测试结合 │ │ - 适用:常规安全评估、版本发布 │ │ │ │ 3. 深度评估 (Deep Assessment) │ │ - 时间:2-4 周 │ │ - 范围:全功能 + 代码审计 + 架构审查 │ │ - 方法:全方位测试 + 代码分析 + 配置审查 │ │ - 适用:核心系统、金融系统、首次评估 │ │ │ │ 4. 红队评估 (Red Team Assessment) │ │ - 时间:4-8 周 │ │ - 范围:全系统 + 社工 + 物理安全 │ │ - 方法:模拟真实攻击、无通知测试 │ │ - 适用:高级威胁模拟、安全能力验证 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` **按测试方式分类**: | 类型 | 说明 | 优点 | 缺点 | |------|------|------|------| | 黑盒测试 | 无内部信息,模拟外部攻击者 | 贴近真实攻击场景 | 效率较低,可能遗漏 | | 灰盒测试 | 有部分内部信息(如账号) | 平衡效率与真实性 | 需要协调资源 | | 白盒测试 | 有完整内部信息(代码、架构) | 覆盖全面,效率高 | 与真实攻击场景有差距 | ### 评估生命周期 ``` 应用安全评估生命周期: ┌──────────────────────────────────────────────────────────────────┐ │ │ │ 准备阶段 → 执行阶段 → 报告阶段 → 修复阶段 → 验证阶段 │ │ ↓ ↓ ↓ ↓ ↓ │ │ • 范围定义 • 信息收集 • 报告编写 • 修复指导 • 复测验证 │ │ • 授权获取 • 威胁建模 • 风险定级 • 方案评审 • 回归测试 │ │ • 环境准备 • 漏洞检测 • 交付汇报 • 修复实施 • 关闭确认 │ │ • 工具准备 • 手动测试 • 建议提供 • 进度跟踪 • 经验总结 │ │ │ └──────────────────────────────────────────────────────────────────┘ ``` --- ## 评估框架与方法论 ### 主流评估框架 **1. OWASP 测试指南 (OTG)** OWASP Testing Guide 是最广泛应用的安全测试框架,提供全面的测试项。 ``` OWASP OTG 核心模块: ┌─────────────────────────────────────────────────────────┐ │ 模块 1: 信息收集 (OTG-INFO) │ │ ├── OTG-INFO-001: 搜索引擎侦察 │ │ ├── OTG-INFO-002: 指纹识别 │ │ ├── OTG-INFO-003: 应用指纹识别 │ │ └── ... (共 11 项) │ │ │ │ 模块 2: 配置管理 (OTG-CONFIG) │ │ ├── OTG-CONFIG-001: 基础设施配置 │ │ ├── OTG-CONFIG-002: 应用配置 │ │ └── ... (共 6 项) │ │ │ │ 模块 3: 身份管理 (OTG-IDENT) │ │ ├── OTG-IDENT-001: 用户枚举 │ │ ├── OTG-IDENT-002: 默认凭证 │ │ └── ... (共 10 项) │ │ │ │ 模块 4: 认证测试 (OTG-AUTHN) │ │ ├── OTG-AUTHN-001: 弱密码策略 │ │ ├── OTG-AUTHN-002: 暴力破解 │ │ └── ... (共 11 项) │ │ │ │ 模块 5: 授权测试 (OTG-AUTHZ) │ │ ├── OTG-AUTHZ-001: 垂直权限提升 │ │ ├── OTG-AUTHZ-002: 水平权限提升 │ │ └── ... (共 9 项) │ │ │ │ 模块 6: 会话管理 (OTG-SESS) │ │ 模块 7: 输入验证 (OTG-INPUT) │ │ 模块 8: 错误处理 (OTG-ERROR) │ │ 模块 9: 加密 (OTG-CRYPTO) │ │ 模块 10: 业务逻辑 (OTG-BUSINESS) │ │ 模块 11: 客户端 (OTG-CLIENT) │ │ │ │ 总计:83 项测试 │ └─────────────────────────────────────────────────────────┘ ``` **2. PTES 渗透测试执行标准** Penetration Testing Execution Standard 提供标准化的渗透测试流程。 ``` PTES 七个阶段: 1. 前期交互 (Pre-engagement Interactions) - 范围定义 - 规则制定 - 授权获取 2. 情报收集 (Intelligence Gathering) - 被动信息收集 - 主动信息收集 - 资产发现 3. 威胁建模 (Threat Modeling) - 资产识别 - 威胁识别 - 攻击路径分析 4. 漏洞分析 (Vulnerability Analysis) - 自动化扫描 - 手动验证 - 漏洞确认 5. 漏洞利用 (Exploitation) - 利用开发 - 权限获取 - 横向移动 6. 后渗透 (Post Exploitation) - 权限维持 - 数据收集 - 影响评估 7. 报告 (Reporting) - 技术报告 - 管理报告 - 修复建议 ``` **3. NIST SP 800-115** NIST 提供的技术安全测试和评估指南。 ``` NIST SP 800-115 测试类型: ┌────────────────────────────────────────────────────┐ │ 测试类型 │ 适用场景 │ ├────────────────────────────────────────────────────┤ │ 网络扫描 │ 发现主机、端口、服务 │ │ 漏洞扫描 │ 识别已知漏洞 │ │ 渗透测试 │ 验证漏洞可利用性 │ │ 无线测试 │ 评估无线网络安全 │ │ 物理安全测试 │ 评估物理控制措施 │ │ 社会工程学测试 │ 评估人员安全意识 │ │ 应用程序测试 │ 评估应用层安全 │ └────────────────────────────────────────────────────┘ ``` ### 评估方法论选择 **基于场景的选择**: ``` 决策矩阵: │ 时间紧 │ 要求高 │ 预算足 │ 合规需求 │ ────────────────────┼────────┼────────┼────────┼──────────┤ 快速评估 │ ✓ │ ✗ │ ✗ │ ✗ │ 标准评估 │ ✗ │ ✓ │ ✓ │ ✓ │ 深度评估 │ ✗ │ ✓✓ │ ✓✓ │ ✓✓ │ 红队评估 │ ✗ │ ✓✓✓ │ ✓✓✓ │ ✗ │ ``` **我的建议**: 对于大多数企业应用,我推荐采用**标准评估 + 关键模块深度测试**的混合方法: 1. 使用 OWASP OTG 作为基础框架 2. 对核心业务模块进行深度测试 3. 对高风险功能(支付、认证、数据导出)进行重点测试 4. 结合自动化和手动测试,平衡效率与质量 --- ## 信息收集与资产发现 ### 信息收集范围 **1. 域名与子域名** ```bash # 使用 Subfinder 进行子域名枚举 subfinder -d target.com -o subdomains.txt # 使用 Amass 进行深度枚举 amass enum -d target.com -o amass_results.txt # 使用 OneForAll 进行综合收集 python oneforall.py --target target.com run ``` **2. IP 地址与网段** ```bash # 查询域名对应的 IP dig target.com +short nslookup target.com # 查询 IP 归属信息 whois 1.2.3.4 # 查询 IP 段 whois -h whois.apnic.net 1.2.3.4 ``` **3. 端口与服务** ```bash # 快速端口扫描 nmap -sS -T4 --top-ports 1000 target.com # 全面端口扫描 nmap -sS -p- -T4 target.com # 服务版本检测 nmap -sV -sC -O target.com # 漏洞扫描脚本 nmap --script vuln target.com ``` **4. Web 应用信息** ```bash # 目录扫描 gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt # 子域名扫描 gobuster dns -d target.com -w /usr/share/wordlists/subdomains.txt # 技术栈识别 whatweb target.com # WAF 检测 wafw00f https://target.com ``` ### 资产发现工具链 **推荐工具组合**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 资产发现工具链 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 阶段 1: 域名发现 │ │ ├── Subfinder (快速) │ │ ├── Amass (全面) │ │ └── OneForAll (综合) │ │ │ │ 阶段 2: 存活检测 │ │ ├── httpx (Web 资产) │ │ ├── masscan (端口扫描) │ │ └── naabu (快速扫描) │ │ │ │ 阶段 3: 服务识别 │ │ ├── Nmap (详细) │ │ ├── WhatWeb (技术栈) │ │ └── Wappalyzer (浏览器插件) │ │ │ │ 阶段 4: 漏洞初筛 │ │ ├── nuclei (模板扫描) │ │ ├── Xray (被动扫描) │ │ └── AWVS/Burp (主动扫描) │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 自动化信息收集脚本 我编写了一个自动化信息收集脚本: ```bash #!/bin/bash # recon.sh - 自动化信息收集脚本 TARGET=$1 OUTPUT_DIR="./recon_${TARGET}_$(date +%Y%m%d)" mkdir -p $OUTPUT_DIR echo "[*] 开始对 $TARGET 进行信息收集" # 1. 子域名枚举 echo "[*] 子域名枚举..." subfinder -d $TARGET -o $OUTPUT_DIR/subdomains.txt 2>/dev/null # 2. 存活检测 echo "[*] 检测存活主机..." cat $OUTPUT_DIR/subdomains.txt | httpx -silent -o $OUTPUT_DIR/live_hosts.txt # 3. 技术栈识别 echo "[*] 识别技术栈..." cat $OUTPUT_DIR/live_hosts.txt | whatweb -a 0 -o $OUTPUT_DIR/tech_stack.txt # 4. 端口扫描 echo "[*] 端口扫描..." nmap -sS -T4 --top-ports 1000 -oN $OUTPUT_DIR/port_scan.txt $TARGET # 5. 目录扫描 echo "[*] 目录扫描..." while read host; do gobuster dir -u $host -w /usr/share/wordlists/dirb/common.txt \ -o $OUTPUT_DIR/gobuster_$(echo $host | sed 's/\//_/g').txt 2>/dev/null done < $OUTPUT_DIR/live_hosts.txt # 6. 漏洞初筛 echo "[*] 漏洞初筛..." nuclei -l $OUTPUT_DIR/live_hosts.txt -o $OUTPUT_DIR/nuclei_results.txt echo "[*] 信息收集完成,结果保存在 $OUTPUT_DIR" ``` --- ## 威胁建模 ### STRIDE 威胁建模 **STRIDE 分类**: ``` ┌─────────────────────────────────────────────────────────────┐ │ STRIDE 威胁分类 │ ├──────────┬──────────────────────────────────────────────────┤ │ 威胁类型 │ 说明与示例 │ ├──────────┼──────────────────────────────────────────────────┤ │ S │ 欺骗 (Spoofing) │ │ │ - 伪造用户身份 │ │ │ - 伪造系统组件 │ │ │ - 示例:密码爆破、会话劫持 │ ├──────────┼──────────────────────────────────────────────────┤ │ T │ 篡改 (Tampering) │ │ │ - 恶意修改数据 │ │ │ - 恶意修改代码 │ │ │ - 示例:SQL 注入、参数篡改 │ ├──────────┼──────────────────────────────────────────────────┤ │ R │ 抵赖 (Repudiation) │ │ │ - 否认已执行的操作 │ │ │ - 缺乏审计日志 │ │ │ - 示例:无日志的敏感操作 │ ├──────────┼──────────────────────────────────────────────────┤ │ I │ 信息泄露 (Information Disclosure) │ │ │ - 未授权访问敏感信息 │ │ │ - 数据泄露 │ │ │ - 示例:越权访问、敏感信息明文传输 │ ├──────────┼──────────────────────────────────────────────────┤ │ D │ 拒绝服务 (Denial of Service) │ │ │ - 使服务不可用 │ │ │ - 消耗系统资源 │ │ │ - 示例:DDoS 攻击、资源耗尽 │ ├──────────┼──────────────────────────────────────────────────┤ │ E │ 权限提升 (Elevation of Privilege) │ │ │ - 获取更高权限 │ │ │ - 绕过访问控制 │ │ │ - 示例:垂直/水平越权、本地提权 │ └──────────┴──────────────────────────────────────────────────┘ ``` ### 数据流图 (DFD) 分析 **绘制数据流图步骤**: ``` 1. 识别外部实体 - 用户 - 第三方系统 - 外部 API 2. 识别处理过程 - 认证服务 - 业务逻辑处理 - 数据存储 3. 识别数据存储 - 数据库 - 文件系统 - 缓存 4. 识别数据流 - 用户输入 - 系统输出 - 内部数据传输 5. 标注信任边界 - 网络边界 - 应用边界 - 权限边界 ``` **示例:电商系统 DFD**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 电商系统数据流图 │ │ │ │ ┌─────────┐ │ │ │ 用户 │ │ │ └────┬────┘ │ │ │ 信任边界 │ │ ─────┼────────────────────────────────────────────── │ │ │ │ │ ┌────▼────┐ ┌───────────┐ ┌───────────┐ │ │ │ Web 前端 │────▶│ API 网关 │────▶│ 业务服务 │ │ │ └─────────┘ └───────────┘ └─────┬─────┘ │ │ │ │ │ ┌────▼────┐ │ │ │ 数据库 │ │ │ └─────────┘ │ │ │ │ 威胁分析: │ │ • 用户→Web 前端:XSS、CSRF、钓鱼 │ │ • Web 前端→API 网关:中间人攻击、重放攻击 │ │ • API 网关→业务服务:认证绕过、权限提升 │ │ • 业务服务→数据库:SQL 注入、数据泄露 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 攻击树分析 **攻击树示例:获取管理员权限**: ``` 获取管理员权限 ├── 暴力破解管理员密码 │ ├── 在线爆破 │ └── 离线破解(获取哈希后) ├── 利用漏洞提权 │ ├── SQL 注入获取管理员会话 │ ├── XSS 窃取管理员 Cookie │ └── 文件上传获取 WebShell ├── 社会工程学 │ ├── 钓鱼邮件 │ └── 电话诈骗 └── 内部人员 ├── 恶意员工 └── 被收买员工 ``` --- ## 漏洞扫描与检测 ### 自动化扫描工具 **1. Web 漏洞扫描器** ```bash # AWVS (Acunetix) # 创建扫描任务 curl -X POST "https://scanner:3443/api/v1/scans" \ -H "X-Auth: api_key" \ -H "Content-Type: application/json" \ -d '{ "address": "https://target.com", "profile_id": "11111111-1111-1111-1111-111111111111", "schedule": {"disable": false, "start_date": null, "time_sensitive": false} }' # Burp Suite Professional # 使用 REST API 启动扫描 curl -X POST "http://127.0.0.1:1337/v0.1/scan" \ -H "Content-Type: application/json" \ -d '{ "urls": ["https://target.com"], "scan_configurations": [{"name": "Legacy Scan Configuration"}] }' ``` **2. 漏洞扫描器 Nuclei** ```bash # 基础扫描 nuclei -u https://target.com -o results.txt # 使用特定模板 nuclei -u https://target.com -t vulnerabilities/ -o vulns.txt # 按严重程度过滤 nuclei -u https://target.com -s critical,high -o critical_vulns.txt # 批量扫描 nuclei -l targets.txt -t exposures/ -o exposures.txt # 自定义速率 nuclei -u https://target.com -rate-limit 10 -concurrency 5 ``` **3. Xray 被动扫描** ```bash # 作为反向代理 ./xray_linux_amd64 --http-reverse-proxy 127.0.0.1:7777 --output output.txt # 配合 Burp # Burp 代理设置为 xray 的监听端口 # xray 接收流量进行被动扫描 ``` ### 手动漏洞检测 **1. SQL 注入检测** ``` 测试 payload: # 基础检测 ' OR '1'='1 " OR "1"="1 ' OR 1=1-- " OR 1=1-- # 盲注检测 ' AND 1=1-- ' AND 1=2-- ' AND SLEEP(5)-- # 时间盲注 '; WAITFOR DELAY '0:0:5'-- ' AND BENCHMARK(10000000,SHA1('test'))-- # 报错注入 ' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT version())))-- ``` **2. XSS 检测** ``` 测试 payload: # 基础检测 <script>alert(1)</script> "><script>alert(1)</script> '><script>alert(1)</script> # 绕过检测 <svg/onload=alert(1)> <img src=x onerror=alert(1)> <body onload=alert(1)> javascript:alert(1) # DOM XSS #console.log('XSS') #alert(1) ``` **3. 文件上传漏洞检测** ``` 测试方法: 1. 扩展名绕过 - 上传 .php、.jsp、.aspx - 尝试 .php5、.phtml、.phar - 尝试 .jpg.php、.png.php 2. MIME 类型绕过 - 修改 Content-Type 为 image/jpeg - 上传真实图片内容 + 恶意代码 3. 魔术字节绕过 - GIF89a; <?php system($_GET['cmd']); ?> 4. 截断绕过 - filename.php%00.jpg - filename.php\x00.jpg ``` **4. 命令注入检测** ``` 测试 payload: # Linux ; id | id $(id) `id` ; cat /etc/passwd | whoami # Windows & whoami | whoami %whoami% && whoami ``` ### 漏洞验证流程 ``` 漏洞验证流程: 1. 初步发现 └── 自动化工具报告潜在漏洞 2. 手工验证 ├── 确认漏洞存在 ├── 排除误报 └── 记录复现步骤 3. 影响评估 ├── 确定影响范围 ├── 评估可利用性 └── 判断危害程度 4. 证据收集 ├── 截图 ├── 请求/响应包 └── 复现视频(必要时) 5. 风险定级 └── 使用 CVSS 或自定义标准 ``` --- ## 手动渗透测试 ### 认证测试 **1. 密码策略测试** ``` 测试项: □ 最小长度要求(应≥8 位) □ 复杂度要求(大小写 + 数字 + 特殊字符) □ 密码历史(防止重复使用) □ 密码有效期(定期更换) □ 常见密码黑名单 □ 用户名相关密码检测 ``` **2. 暴力破解防护** ```bash # 使用 Hydra 测试 hydra -l admin -P /usr/share/wordlists/rockyou.txt target.com http-post-form "/login:username=^USER^&password=^PASS^:Invalid" # 使用 Burp Intruder # 配置 payload 位置 # 选择攻击模式(Sniper/Battering Ram/Pitchfork/Cluster Bomb) # 设置 payload 列表 # 分析响应差异 ``` **3. 会话管理测试** ``` 测试项: □ Session ID 熵值(应足够随机) □ Session 超时设置 □ 登出后 Session 失效 □ 多设备 Session 管理 □ Session 固定攻击防护 □ Cookie 安全标志(HttpOnly、Secure、SameSite) ``` ### 授权测试 **1. 垂直越权测试** ``` 测试方法: 1. 低权限用户访问高权限功能 - 普通用户访问 /admin - 普通用户调用管理员 API 2. 修改请求参数 - 修改 user_id 为管理员 ID - 修改 role 参数 3. 直接访问受限 URL - 枚举管理功能 URL - 尝试直接访问 ``` **2. 水平越权测试** ``` 测试方法: 1. 访问其他用户数据 - 修改订单 ID 查看他人订单 - 修改用户 ID 查看他人信息 2. 批量枚举 - 遍历 ID 范围 - 检测是否存在批量泄露 3. 业务逻辑绕过 - 跳过流程步骤 - 重复提交表单 ``` ### 业务逻辑漏洞测试 **常见业务逻辑漏洞**: ``` 1. 价格篡改 - 修改商品价格为负数或 0 - 修改支付金额 - 修改折扣比例 2. 数量篡改 - 购买负数数量 - 购买超大数量 - 修改库存数量 3. 流程绕过 - 跳过支付步骤 - 跳过验证步骤 - 重放已完成的请求 4. 竞争条件 - 并发提交订单 - 并发修改余额 - 重复领取优惠券 5. 状态依赖 - 未支付状态下发货 - 已退款状态下再次退款 - 已注销账号继续使用 ``` **竞争条件测试示例**: ```python #!/usr/bin/env python3 # race_condition_test.py import requests import threading import time TARGET_URL = "https://target.com/api/transfer" AUTH_TOKEN = "your_auth_token" AMOUNT = 100 THREADS = 20 def transfer(): headers = {"Authorization": f"Bearer {AUTH_TOKEN}"} data = {"to_account": "attacker", "amount": AMOUNT} response = requests.post(TARGET_URL, headers=headers, json=data) print(f"Response: {response.status_code} - {response.text}") # 并发发送请求 threads = [] for i in range(THREADS): t = threading.Thread(target=transfer) threads.append(t) # 同时启动所有线程 for t in threads: t.start() # 等待所有线程完成 for t in threads: t.join() print(f"完成!共发送 {THREADS} 个请求,每个请求转账 {AMOUNT}") ``` --- ## 代码安全审计 ### 审计方法 **1. 静态分析 (SAST)** ``` 工具选择: ┌─────────────────────────────────────────────────────┐ │ 语言 │ 推荐工具 │ ├─────────────────────────────────────────────────────┤ │ Java │ SonarQube, FindSecBugs, SpotBugs │ │ Python │ Bandit, Semgrep, SonarQube │ │ JavaScript│ ESLint (security), SonarQube, Semgrep│ │ Go │ Gosec, SonarQube │ │ PHP │ RIPS, SonarQube, PHPStan │ │ C/C++ │ Coverity, Fortify, Clang Static │ │ .NET │ SecurityCodeScan, SonarQube │ └─────────────────────────────────────────────────────┘ ``` **2. 动态分析 (DAST)** ``` 工具选择: - Burp Suite Professional - OWASP ZAP - AWVS (Acunetix) - AppScan ``` **3. 交互式分析 (IAST)** ``` 工具选择: - Contrast Security - Seeker (HCL) - CodeDx ``` ### 常见代码漏洞模式 **1. SQL 注入** ```java // - 不安全 - 字符串拼接 String query = "SELECT * FROM users WHERE username = '" + username + "'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); // + 安全 - 使用预编译语句 String query = "SELECT * FROM users WHERE username = ?"; PreparedStatement pstmt = connection.prepareStatement(query); pstmt.setString(1, username); ResultSet rs = pstmt.executeQuery(); ``` **2. XSS** ```java // - 不安全 - 直接输出用户输入 out.println("<div>" + userInput + "</div>"); // + 安全 - 进行 HTML 编码 out.println("<div>" + StringEscapeUtils.escapeHtml4(userInput) + "</div>"); ``` **3. 命令注入** ```java // - 不安全 - 直接拼接命令 String cmd = "ping " + userInput; Runtime.getRuntime().exec(cmd); // + 安全 - 使用参数化执行 ProcessBuilder pb = new ProcessBuilder("ping", userInput); pb.start(); ``` **4. 路径遍历** ```java // - 不安全 - 直接使用用户输入 File file = new File("/uploads/" + filename); // + 安全 - 验证并规范化路径 String canonicalPath = new File("/uploads/" + filename).getCanonicalPath(); if (!canonicalPath.startsWith("/uploads/")) { throw new SecurityException("Invalid path"); } ``` ### 代码审计检查清单 ``` □ 输入验证 □ 所有外部输入是否验证 □ 是否使用白名单验证 □ 长度限制是否合理 □ 输出编码 □ HTML 输出是否编码 □ JavaScript 输出是否编码 □ URL 参数是否编码 □ 认证与会话 □ 密码是否加密存储 □ 会话 ID 是否安全生成 □ 会话超时是否合理 □ 访问控制 □ 是否每个接口都验证权限 □ 是否存在硬编码凭证 □ 是否遵循最小权限原则 □ 数据保护 □ 敏感数据是否加密存储 □ 传输是否使用 HTTPS □ 日志是否脱敏 □ 错误处理 □ 是否捕获异常 □ 错误信息是否泄露敏感信息 □ 是否有统一的错误处理 □ 依赖安全 □ 依赖是否为最新版本 □ 是否存在已知漏洞 □ 是否从可信源获取 ``` --- ## 配置安全审查 ### 服务器配置 **1. Web 服务器配置** ```nginx # Nginx 安全配置示例 # 隐藏版本信息 server_tokens off; # 安全响应头 add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header Content-Security-Policy "default-src 'self'" always; # 禁用不安全方法 if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS)$) { return 405; } # 限制请求大小 client_max_body_size 10M; # SSL 配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ``` **2. 数据库配置** ```mysql # MySQL 安全配置 # 禁用远程 root 登录 # 在 my.cnf 中: [mysqld] bind-address = 127.0.0.1 skip-symbolic-links local-infile = 0 # 安全建议: # ✓ 修改默认端口 # ✓ 删除测试数据库 # ✓ 删除匿名用户 # ✓ 使用强密码 # ✓ 限制用户权限 # ✓ 启用审计日志 ``` ### 应用配置 **1. 敏感信息保护** ``` - 不安全做法: - 代码中硬编码密码 - 配置文件明文存储密钥 - 将密钥提交到版本控制 - 日志中打印敏感信息 + 安全做法: - 使用环境变量 - 使用密钥管理服务(KMS) - 使用配置中心 - 日志脱敏 - .gitignore 排除敏感文件 ``` **2. 安全配置检查清单** ``` □ 调试模式已关闭 □ 错误页面不显示详细信息 □ 目录列表已禁用 □ 默认账户已删除或修改密码 □ 不必要的服务已禁用 □ 防火墙规则已配置 □ 日志记录已启用 □ 备份策略已制定 □ 监控告警已配置 ``` --- ## 风险评估与定级 ### CVSS 评分系统 **CVSS v3.1 指标**: ``` ┌─────────────────────────────────────────────────────────────┐ │ CVSS v3.1 指标 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 基础指标 (Base Metrics) │ │ ├── 攻击向量 (AV): Network/Adjacent/Local/Physical │ │ ├── 攻击复杂度 (AC): Low/High │ │ ├── 所需权限 (PR): None/Low/High │ │ ├── 用户交互 (UI): None/Required │ │ ├── 影响范围 (S): Unchanged/Changed │ │ ├── 机密性影响 (C): None/Low/High │ │ ├── 完整性影响 (I): None/Low/High │ │ └── 可用性影响 (A): None/Low/High │ │ │ │ 时间指标 (Temporal Metrics) │ │ ├── 利用代码成熟度 (E): Unproven/POC/Functional/High │ │ ├── 修复级别 (RL): Official/Temporary/Unavailable │ │ └── 报告置信度 (RC): Unknown/Reasonable/Confirmed │ │ │ │ 环境指标 (Environmental Metrics) │ │ ├── 修正基础指标 │ │ └── 考虑特定环境因素 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` **风险等级划分**: | CVSS 分数 | 等级 | 颜色 | 响应要求 | |-----------|------|------|----------| | 9.0-10.0 | 严重 | 红色 | 立即修复 | | 7.0-8.9 | 高危 | 橙色 | 7 天内修复 | | 4.0-6.9 | 中危 | 黄色 | 30 天内修复 | | 0.1-3.9 | 低危 | 蓝色 | 酌情修复 | | 0.0 | 信息 | 绿色 | 无需修复 | ### 业务风险调整 **考虑因素**: ``` 1. 资产价值 - 系统重要性 - 数据敏感性 - 业务影响 2. 威胁环境 - 已知利用代码 - 活跃攻击活动 - 行业威胁情报 3. 暴露程度 - 是否对外暴露 - 访问控制强度 - 网络隔离情况 4. 合规要求 - 法规强制要求 - 行业标准 - 客户合同要求 ``` **风险调整公式**: ``` 最终风险 = CVSS 基础分 × 业务调整系数 业务调整系数: - 核心系统:1.5 - 重要系统:1.2 - 一般系统:1.0 - 测试系统:0.8 对外暴露调整: - 公网暴露:+2.0 - 内网暴露:+1.0 - 隔离环境:+0.5 ``` --- ## 报告编写与交付 ### 报告结构 **1. 管理摘要** ``` 执行摘要模板: ┌─────────────────────────────────────────────────────────────┐ │ 项目概述 │ │ ├── 评估目标 │ │ ├── 评估范围 │ │ └── 评估时间 │ │ │ │ 整体风险态势 │ │ ├── 发现漏洞总数 │ │ ├── 各等级漏洞分布 │ │ └── 整体安全评分 │ │ │ │ 关键发现 │ │ ├── 最严重的 3-5 个漏洞 │ │ ├── 业务影响说明 │ │ └── 紧急修复建议 │ │ │ │ 总体建议 │ │ ├── 短期措施(1 周内) │ │ ├── 中期措施(1 月内) │ │ └── 长期措施(持续改进) │ │ │ └─────────────────────────────────────────────────────────────┘ ``` **2. 技术报告** ``` 单个漏洞报告模板: ┌─────────────────────────────────────────────────────────────┐ │ 漏洞名称:SQL 注入漏洞 │ │ 漏洞等级:高危 │ │ CVSS 评分:8.5 │ │ 漏洞位置:/api/user/profile │ │ │ │ 漏洞描述 │ │ [详细描述漏洞原理、位置、影响] │ │ │ │ 复现步骤 │ │ 1. 访问 URL: https://target.com/api/user/profile?id=1 │ │ 2. 修改参数:id=1' OR '1'='1 │ │ 3. 观察响应:返回所有用户数据 │ │ │ │ 证明截图 │ │ [插入截图] │ │ │ │ 修复建议 │ │ 1. 使用预编译语句替代字符串拼接 │ │ 2. 对输入参数进行类型验证 │ │ 3. 实施最小权限原则 │ │ │ │ 修复代码示例 │ │ [提供具体代码示例] │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 报告交付 **交付物清单**: ``` □ 管理摘要报告(PPT/PDF) □ 技术详细报告(PDF) □ 漏洞清单(Excel/CSV) □ 复现视频(必要时) □ 修复建议文档 □ 原始扫描结果 □ 测试工具配置(可选) ``` **汇报流程**: ``` 1. 首次汇报(发现阶段) - 汇报严重漏洞 - 提供紧急修复建议 - 时间:评估开始后 2-3 天 2. 中期汇报(可选) - 汇报整体进度 - 更新风险态势 - 时间:评估中期 3. 最终汇报 - 完整报告交付 - 漏洞演示(必要时) - 修复计划讨论 - 时间:评估结束后 1 周内 ``` --- ## 修复验证与复测 ### 验证流程 ``` 修复验证流程: 1. 接收修复通知 └── 开发团队通知漏洞已修复 2. 审查修复方案 ├── 审查代码变更 ├── 评估修复完整性 └── 识别潜在副作用 3. 执行复测 ├── 使用相同方法复测 ├── 使用不同方法验证 └── 测试相关功能 4. 确认结果 ├── 漏洞已修复 → 关闭 ├── 部分修复 → 重新打开 └── 修复失败 → 重新评估 ``` ### 复测检查清单 ``` □ 原漏洞是否已修复 □ 是否存在绕过方法 □ 修复是否引入新问题 □ 相关功能是否正常 □ 是否有回归测试 □ 文档是否已更新 ``` ### 常见修复问题 ``` 1. 修复不完整 - 只修复了一个入口点 - 只修复了表面问题 - 没有修复根本原因 2. 修复不当 - 使用不安全的修复方法 - 引入新的安全问题 - 影响业务功能 3. 修复遗漏 - 类似位置未修复 - 同类问题未排查 - 历史问题未清理 ``` --- ## 实战案例分析 ### 案例一:电商平台安全评估 **项目背景**: ``` - 系统类型:B2C 电商平台 - 技术栈:Java Spring Boot + Vue.js + MySQL - 评估类型:标准评估(黑盒 + 灰盒) - 评估时间:2 周 - 团队规模:3 人 ``` **发现的主要漏洞**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 序号 │ 漏洞名称 │ 等级 │ 状态 │ 修复时间 │ ├─────────────────────────────────────────────────────────────┤ │ 1 │ SQL 注入 │ 高危 │ 已修复 │ 3 天 │ │ 2 │ 水平越权 │ 高危 │ 已修复 │ 2 天 │ │ 3 │ 支付金额篡改 │ 严重 │ 已修复 │ 1 天 │ │ 4 │ XSS 存储型 │ 中危 │ 已修复 │ 5 天 │ │ 5 │ 敏感信息泄露 │ 中危 │ 已修复 │ 4 天 │ │ 6 │ 文件上传漏洞 │ 高危 │ 已修复 │ 2 天 │ │ 7 │ 弱密码策略 │ 低危 │ 已修复 │ 7 天 │ │ ... │ ... │ ... │ ... │ ... │ │ │ │ 总计:23 个漏洞(严重 2、高危 8、中危 10、低危 3) │ └─────────────────────────────────────────────────────────────┘ ``` **关键发现**: ``` 1. 支付金额篡改(严重) - 位置:支付回调接口 - 原因:未校验支付金额 - 影响:可 0 元购买商品 - 修复:增加服务端金额校验 2. 水平越权(高危) - 位置:订单查询接口 - 原因:仅校验登录,未校验归属 - 影响:可查看任意用户订单 - 修复:增加用户归属校验 ``` **经验总结**: ``` ✓ 业务逻辑漏洞需要重点关注 ✓ 支付相关功能必须多重校验 ✓ 权限校验要贯穿整个业务流程 ✓ 自动化扫描 + 手动测试结合效果好 ``` ### 案例二:金融系统安全评估 **项目背景**: ``` - 系统类型:在线银行系统 - 技术栈:.NET Core + Angular + SQL Server - 评估类型:深度评估(白盒) - 评估时间:4 周 - 团队规模:5 人 - 合规要求:等保 2.0 三级 ``` **特殊考虑**: ``` 1. 合规要求 - 满足等保 2.0 三级要求 - 符合金融行业规范 - 满足内部审计要求 2. 测试限制 - 生产环境只读测试 - 测试环境完整测试 - 禁止进行破坏性测试 3. 保密要求 - 签署保密协议 - 数据脱敏处理 - 报告加密传输 ``` **发现的主要问题**: ``` 1. 架构层面 - 缺少 WAF 防护 - 数据库未加密 - 日志审计不完整 2. 应用层面 - 部分接口缺少认证 - 会话管理不完善 - 错误信息泄露 3. 运维层面 - 补丁更新不及时 - 备份策略不完善 - 监控告警不足 ``` **整改建议**: ``` 短期(1 月内): - 修复所有高危漏洞 - 部署 WAF - 完善日志审计 中期(3 月内): - 实施数据库加密 - 完善监控体系 - 建立安全开发流程 长期(6 月内): - 通过等保测评 - 建立安全运营中心 - 持续安全改进 ``` --- ## 总结与思考 ### 核心要点回顾 ``` 1. 评估框架选择 ✓ OWASP OTG 作为基础框架 ✓ 根据场景选择评估深度 ✓ 结合自动化和手动测试 2. 信息收集 ✓ 全面的资产发现 ✓ 准确的技术栈识别 ✓ 持续的威胁情报 3. 漏洞检测 ✓ 自动化工具初筛 ✓ 手动测试深入验证 ✓ 业务逻辑重点测试 4. 风险评估 ✓ 使用 CVSS 客观评分 ✓ 结合业务调整等级 ✓ 优先修复高风险漏洞 5. 报告交付 ✓ 管理摘要 + 技术报告 ✓ 清晰的修复建议 ✓ 有效的沟通汇报 ``` ### 深入思考 **1. 自动化 vs 手动测试** 我认为,自动化和手动测试不是替代关系,而是互补关系: - 自动化:快速发现已知漏洞、覆盖广度 - 手动测试:发现逻辑漏洞、深度分析 最佳实践是:自动化扫描覆盖 80% 的常见问题,手动测试聚焦 20% 的关键问题。 **2. 安全评估的价值** 安全评估的价值不仅在于发现漏洞,更在于: - 提升团队安全意识 - 完善安全开发流程 - 建立持续改进机制 - 满足合规要求 **3. 持续改进** 一次评估只是开始,真正的安全需要: - 定期评估(至少每年一次) - 变更时评估(重大更新前) - 持续监控(实时威胁检测) - 持续改进(PDCA 循环) ### 实战建议 ``` 给安全评估人员的建议: 1. 保持学习 - 关注最新漏洞 - 学习新技术 - 分享经验 2. 保持道德 - 遵守授权范围 - 保护客户数据 - 负责任披露 3. 保持沟通 - 及时汇报进展 - 清晰描述问题 - 提供可行建议 4. 保持记录 - 详细记录测试过程 - 保存证据 - 总结经验教训 ``` --- ## 参考资料 ### 学习资源 ``` 1. OWASP 官方 - OWASP Testing Guide: https://owasp.org/www-project-web-security-testing-guide/ - OWASP Top 10: https://owasp.org/www-project-top-ten/ - OWASP Cheat Sheet: https://cheatsheetseries.owasp.org/ 2. 渗透测试框架 - PTES: http://www.pentest-standard.org/ - NIST SP 800-115: https://csrc.nist.gov/publications/detail/sp/800-115/final 3. 漏洞数据库 - CVE: https://cve.mitre.org/ - NVD: https://nvd.nist.gov/ - CNVD: https://www.cnvd.org.cn/ ``` ### 工具资源 ``` 1. 信息收集 - Subfinder: https://github.com/projectdiscovery/subfinder - Amass: https://github.com/owasp-amass/amass - httpx: https://github.com/projectdiscovery/httpx 2. 漏洞扫描 - Nuclei: https://github.com/projectdiscovery/nuclei - Xray: https://github.com/chaitin/xray - Burp Suite: https://portswigger.net/burp 3. 渗透测试 - Metasploit: https://www.metasploit.com/ - SQLMap: https://sqlmap.org/ - Burp Suite: https://portswigger.net/burp 4. 代码审计 - SonarQube: https://www.sonarqube.org/ - Semgrep: https://semgrep.dev/ - Bandit: https://github.com/PyCQA/bandit ``` ### 书籍推荐 ``` 1. 《Web 安全深度剖析》- 国内 Web 安全经典 2. 《白帽子讲 Web 安全》- 吴翰清著 3. 《The Web Application Hacker's Handbook》- 经典教材 4. 《Real-World Bug Bounty Hunting》- 实战指南 5. 《渗透测试实践指南》- 系统学习 ``` --- *365 天信息安全技术系列 | Day 176 | 创建时间:2026-04-11*
myh0st
2026年4月13日 23:19
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码