technine.io
深蓝色灯光下,服务器布满圆孔的金属前面板特写,背景为深色,画面无文字或标志。

指南

什么是渗透测试?它和漏洞扫描有什么区别

渗透测试是经授权、由人工执行的安全测试,尝试发现并利用网站、Web 应用或网络中的弱点。了解它与自动化漏洞扫描的区别、常见类型、测试流程,以及一份有用的报告应包含哪些内容。

更新于

渗透测试(penetration test,简称 pentest)是一种经过授权的安全测试:测试人员模拟真实攻击者,尝试发现并利用系统中的弱点,再报告发现的问题和修复方法。对运营网站、网店或 Web 应用的企业来说,它回答的是一个很实际的问题:如果有人试图入侵,对方能走到哪一步?

渗透测试和漏洞扫描的区别

两者常被混为一谈,但作用不同。

  • 漏洞扫描由工具自动完成,对照已知问题清单检查系统,例如过时的软件版本、缺失的安全响应头或对外暴露的服务。扫描速度快,可以频繁执行,但可能产生误报,通常也不理解应用的业务逻辑。
  • 渗透测试以人工为主。测试人员把扫描结果作为参考,逐项人工验证,把几个小弱点串联起来,并测试业务逻辑,比如只改动 URL 里的一个数字,一位客户能否看到另一位客户的订单。

扫描适合做日常检查,渗透测试则是在某个时间点做更深入的评估。多数组织两者都需要。

渗透测试的类型

按测试人员事先掌握的信息,通常分为三类:

  • 黑盒测试:测试人员只有网址等基本信息,接近外部攻击者的视角。
  • 灰盒测试:提供测试账号或部分文档,重点放在已登录用户能访问的范围。
  • 白盒测试:提供架构资料,有时还包括源代码,可以做最全面的检查。

按测试对象划分,则有 Web 应用测试(登录、表单、会话、访问控制)、API 测试(每个接口的身份认证、授权和数据泄露风险)、网络测试(服务器、防火墙和对外服务)以及移动应用测试(App 本身、本地存储的数据和它调用的 API)。

测试范围和书面授权

安全测试必须获得系统所有者的许可,所以正规的渗透测试会先取得有权批准者的书面授权。如果网站部署在托管或云服务商那里,也要查看对方的政策,因为有些服务商对安全测试有专门规定。开始前,双方要约定测试规则:

  • 哪些域名、IP 地址、应用和环境在范围内,哪些不在
  • 测试日期和时段,以及在生产环境还是测试环境进行
  • 禁止使用的手段,例如拒绝服务攻击
  • 紧急联系人,以及测试中发现严重问题时怎么处理

一般测试流程

  • 确定范围:约定目标、测试对象、类型和时间。
  • 信息收集:梳理可被攻击的范围,包括子域名、页面、API 和所用技术。
  • 测试:在约定规则内寻找并尝试利用弱点。
  • 报告:记录每项发现、证据和修复建议。
  • 修复:内部团队或开发商按风险高低依次修复。
  • 复测:确认修复有效,并且没有引入新的漏洞。

一份好的报告应包含什么

报告是测试的主要成果,管理层和开发人员都应该看得懂。可以留意这些内容:

  • 用通俗语言概括整体风险
  • 每项发现的严重程度评级,以及对业务的影响
  • 清晰的复现步骤和证据,方便开发人员确认问题
  • 具体的修复建议,而不是笼统的提醒
  • 测试范围和日期,以及没有测试的部分

以下示例仅用于说明:一项发现可能写成“高风险:已登录用户只要修改 API 请求中的发票编号,就能下载其他用户的发票”,并附上实际使用的请求、受影响的接口,以及在服务器端增加权限校验的建议。

什么时候测试,多久测一次

常见的测试时机包括新网站或应用上线前,新增支付流程、登录系统或更换托管等重大改动之后,以及对处理客户或支付数据的系统定期测试。一些行业、客户或合同可能要求按固定周期测试,具体要求请咨询你的顾问。

和其他安全措施如何配合

渗透测试是一种检查,不能代替日常的良好实践。CI/CD 流水线中的自动安全检查可以在每次发布时发现部分问题;回归测试确保修复过的问题不会再次出现。多重身份验证能降低密码被盗带来的影响,零信任则限制单个账号能访问的范围。渗透测试的结果往往能暴露这些措施的薄弱环节。

如需把安全测试和其他防护措施一起规划,可以查看 technine.io 的网络安全与合规服务。

常见问题

只做漏洞扫描够吗?

用于日常检查很有用,但业务逻辑和访问控制方面的问题,往往需要人工才能发现。渗透测试正好弥补这一点。

渗透测试会让网站宕机吗?

如果测试规则已排除破坏性手段,并约定好时间,一般不会。有些团队会先在测试环境进行,以降低风险。

通过渗透测试是否说明网站已经安全?

不是。结果只反映测试人员在约定范围和时间内的发现。新代码、新功能和新公开的漏洞都可能改变情况,所以复测和持续检查同样重要。

咨询WhatsApp