渗透测试介绍
渗透测试(Penetration Testing)是指模拟攻击者入侵系统,对系统进行一步步地渗透,发现系统的脆弱环节和隐藏风险。最后形成测试报告提供给系统所有者。系统所有者可根据该测试报告对系统进行加固,提升系统的安全性,防止真正的攻击者入侵。
重要前提:渗透测试的前提一定是得经过系统所有者的授权!未经过授权的渗透测试属于违法行为。
渗透测试意义
- 信息安全评估的重要方法:有利于掌握系统整体安全强度。
- 模拟黑客攻击思维:评估计算机潜在风险,从攻击者视角审视防御体系。
- 提前防范:发现系统薄弱环节和可能利用的路径,在真实攻击发生前进行修复。
- 合规性要求:满足等保测评及行业安全规范的要求。
渗透测试方法
根据信息掌握程度,渗透测试主要分为以下三类:
- 白盒测试:在知道目标整体信息和源码的情况下进行渗透,类似于代码审计。能深入逻辑层,覆盖率高。
- 黑盒测试:仅知道目标(如域名或 IP),其余信息均不知道,完全模拟黑客入侵。最接近真实攻击场景。
- 灰盒测试:知道目标部分信息,例如架构和网络拓扑,进行渗透的方式。平衡了效率与真实性。
此外,按执行方式还可分为人工测试和自动化测试,通常建议两者结合使用。
渗透测试一般流程
标准渗透测试流程包括:准备阶段 → 信息收集 → 漏洞检测 → 漏洞利用 → 内网转发 → 内网渗透 → 痕迹清除 → 撰写报告。
1. 准备阶段
- 获得授权:签署正式的授权书,明确测试范围、时间和法律责任。
- 制定方案:确定测试目标、深度、工具选择及应急预案。
- 环境确认:搭建测试环境,确保不影响生产业务。
- 风险管理:识别测试过程中可能导致服务中断的风险并制定回滚计划。
2. 信息收集
信息收集是渗透测试中最耗时但最关键的一步,分为主动和被动两种方法。
主动信息收集
对目标进行直接访问或扫描,风险较高但数据准确。
- 域名与 DNS:收集域名、IP、子域名、DNS 记录,检查是否存在 CDN。常用工具:Layer 子域名挖掘机、findomain 等。
- 端口扫描:使用 Nmap 等工具探测服务器端口开放情况。重点关注 SSH(22)、MySQL(3306)、Redis(6379)、Weblogic(7001) 等。
- 指纹识别:识别服务器类型 (Windows/Linux)、Web 容器 (Apache/Nginx/Tomcat/IIS)、脚本语言 (PHP/JSP/ASP)、数据库类型 (MySQL/Oracle/SQLServer)。
- 敏感目录扫描:使用 Dirmap、Wwwscan 等工具扫描后台目录、默认路径、备份文件等。
被动信息收集
通过第三方渠道收集目标信息,不直接接触目标系统。
- 公开信息:员工邮箱、注册人信息、社交媒体账号等。
- 代码托管平台:在 GitHub、Gitee 等平台查找泄露的敏感配置、密钥或源代码。
- 旁站与 C 段:旁站指同一服务器上的其他网站;C 段指同一网段内的其他服务器。可通过旁站或 C 段渗透提权后作为跳板攻击目标。
3. 漏洞检测
主要依据 OWASP Top 10 进行系统性检测。
- 注入类漏洞:SQL 注入、XXE 注入、LDAP 注入、系统命令注入、远程代码执行。
- 失效的身份认证和会话管理:弱口令暴力破解、Cookie 伪造、逻辑绕过登录、会话劫持。


