公开文集
0x01 SRC 资产管理系统
0x02 Web 漏洞案例库
0x03 小程序漏洞案例库
第一章:小程序渗透基础
1.1 微信小程序反编译与动态调试
1.2 微信小程序强制开启开发者模式
0x99 信息安全学习体系
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-037-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-141-应用安全总结与展望
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-密码学总结与展望
Day-182-密码学系列总结与展望
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文件
分享
链接
类型
密码
更新密码