1. 渗透测试快速入门
1.1 基本概念
- 黑客(黑帽子):以非法获取利益、破坏系统为目的,未经授权入侵他人设备的人
- 白客(白帽子):受企业或个人合法授权,专门寻找系统安全漏洞并帮助修复,保护网络安全的人
- 红客:攻击国外的黑客
1.2 为什么需要渗透测试?
渗透测试时白帽子的核心工作之一,是经合法授权后,模拟黑客的攻击手段,全面找出系统、网络或应用中的安全隐患(漏洞),并给出修复建议的过程
- 对个人:保护⼿机、电脑中的隐私数据(比如照片、银行卡信息、聊天记录)不被窃取
- 对企业:避免因系统漏洞导致⽤户数据泄露(比如之前某平台⽤户信息被盗事件)、业务中断(⽐如服务器被攻击瘫痪)、商业机密外泄,减少经济损失和声誉损害
- 对国家:保障关键基础设施(如电⼒、交通、⾦融系统)的⽹络安全,维护国家安全
1.3 渗透测试核心原则
合法是前提:任何渗透测试必须获得甲⽅(需求⽅)的书⾯授权,明确测试范围、时间、权限,否则就是⾮法⼊侵,触犯《⽹络安全法》《刑法》,会被追究法律责任(重点提醒!)
最小影响原则:测试时间要避开业务⾼峰期(⽐如电商平台不选双⼗⼀),测试过程中不能破坏系统、篡改数据,尽量不影响系统正常运⾏
保密原则:测试过程中收集到的所有信息(如企业数据、漏洞详情),必须严格保密,不能泄露给第三⽅
2. 渗透测试流程
明确目标-->信息收集-->漏洞探测-->漏洞验证-->提取所需–>信息分析-->信心整理-->形成报告
2.1 明确目标
确认内容(核心)
- 确定范围:明确测试的对象是什么?比如是百度的主⽹站(www.baidu.com),还是某企业的内部系统?
- 确定规则:
- 时间:什么时候测试?必须避开业务⾼峰期(⽐如电商平台选凌晨 2-5点,企业官⽹选周末),避免影响正常业务
- 权限:能做什么?不能做什么?⽐如能否尝试上传⽂件?能否获取系统最⾼权限(提权)?能否修改数据?(⼀般不允许修改、删除甲⽅数据)
- 确定需求:甲方想测什么类型的漏洞? Web 应⽤漏洞 业务逻辑漏洞 ⼈员权限漏洞
2.2 信息收集(摸清目标底细)
(1) 收集的核心信息
| 信息类型 | 具体内容 | 作用 |
|---|---|---|
| 基础信息 | IP 地址、网段(比如企业有可能有 123.45.67.0/24这样的网段,包含 256个IP)、域名、开放端口 | 找到测试的入口,比如通过端口 知道目标提供了哪些服务 |
| 系统信息 | 服务器操作系统(Windows、 CentOS、Ubuntu 等) | 不同系统的漏洞不同,比如 Windows 的某些漏洞 CentOS 没有 |
| 应用信息 | 端口对应的应用(比如 80 端口)是 Nginx 服务器,3306 端口是 MySQL 数据库 | 针对具体应用找漏洞,比如 Nginx 的配置漏洞、MySQL 的弱密码漏洞 |
| 版本信息 | 操作系统版本、应用版本(比如 Nginx 1.18.0、MySQL 5.7) | 版本越旧,漏洞可能越多,比如某版本的 Nginx 存在已知的文件读取漏洞 |
(2) 收集方式(先了解)
- 主动扫描:用工具(比如 Nmap)扫描⽬标 IP 的开放端⼝、操作系统版本;用漏洞扫描器(比如 AWVS)扫描⽹站的基础漏洞
- 开放搜索:用搜索引擎(百度、Google)找敏感信息,从漏洞库(exploit-db)搜索目标应用版本对应的已知漏洞 https://www.exploit-df.com/
2.3 漏洞探测(寻找安全缺口)
(1) 漏洞常见的类型
- 系统漏洞:操作系统没及时打补丁(比如 Windows XP 的⽼漏洞,⾄今还有⼈没修复)。
- Web 服务器漏洞:比如 Nginx、Apache 的配置错误(比如权限设置过宽,允许访问敏感⽂件)
- Web 应用漏洞:开发⼈员写代码时的错误(比如 SQL 注⼊、XSS 跨站脚本、
⽂件上传漏洞) - 端口服务漏洞:比如 21 端口(FTP 服务)的弱密码、3389 端口(远程桌⾯)
的账号容易被猜解 - 通信安全漏洞:比如数据传输⽤明⽂(比如登录密码没加密,被⿊客拦截后能
直接看到)
(2) 探测方法
- 工具探测:用专业漏洞扫描器(AWVS、IBM AppScan)自动扫描,效率⾼,
适合初步探测 - 手工探测:针对重点功能(比如登录、支付、文件上传),手工抓取网络数据
包,分析是否有漏洞(精准度⾼,适合⼯具扫不到的漏洞) - 参考漏洞库:在 exploit-db、乌云漏洞库(已关闭,可看存档)中,搜索目标
应⽤版本对应的已知漏洞,比如 Nginx 1.18.0 漏洞
2.4 漏洞验证(确认缺口真的能进)
- 自动化验证:用漏洞扫描器自带的验证功能,比如 AWVS 扫描到 SQL 注入漏
洞后,会⾃动尝试执行简单的 SQL 语句,确认漏洞是否有效 - 手工验证:根据公开的漏洞利用方法(POC),手工测试漏洞,比如找到⽂件
上传漏洞后,尝试上传⼀个测试文件,看是否能成功上传并访问 - POC:能证明漏洞真实存在的最小化验证工具 / 代码 / 步骤
- 模拟环境测试:如果漏洞⽐较复杂,先在自己搭建的模拟环境(和目标系统⼀样的操作系统、应⽤版本)中测试,成功后再在目标系统中验证,避免影响目标系统
2.5 提取信息并进一步渗透(模拟入侵过程)
(1) 提取的关键信息
- 系统信息:服务器的用户名、密码、系统权限
- 数据信息:数据库中的⽤户数据、业务数据(比如电商的订单信息)
- 内部信息:企业的网络拓扑(比如内网有多少台服务器、如何连接)、VPN 账号、路由配置
(2) 进一步渗透
- 内网渗透:如果获取了外网服务器的权限,且这台服务器能访问内网,就可以
尝试入侵内网的其他服务器(比如企业的财务系统、办公系统) - 持续性存在:一般渗透测试不需要这一步,但黑客会通过植入后门、添加管理
员账号等方式,长期控制目标系统
2.6 信息分析(规划攻击路径)
(1) 分析核心内容
- 漏洞危害:这个漏洞能让黑客做什么?比如 SQL 注入漏洞能让何可读取数据
库的用户密码,文件上传漏洞能让黑客上传恶意程序控制服务器 - 攻击路径:如何利用这个漏洞达到测试目标?比如:
通过 SQL 注入获取管理员账号密码 → 登录后台 → 尝试上传恶意⽂件 →
获取服务器权限→ 渗透内网 - 绕过防御:如果目标有防火墙、WAF,如何绕过?比如修改攻击代码的格式,
让 WAF 识别不出来 - 准备工具:比如针对 SQL 注入漏洞,准备 SQLmap ⼯具;针对⽂件上传漏
洞,准备恶意⽂件
(2) 注意事项
- 只获取测试所需的信息,不窃取甲方的敏感数据(比如用户手机号、银行卡信息),更不能复制、传播这些数据
- 不破环目标系统,比如不能删除数据库、不能修改网站内容
2.7 信息整理(为报告做准备)
(1) 整理内容
- 测试过程记录:什么时候开始、做了什么操作、用了哪些工具(比如 Nmap、SQLmap)、获取了什么结果
- 工具整理:整理测试中用到的 POC、EXP(漏洞利用代码)、脚本文件
- 信息整理:收集到的 IP、域名、端⼝、人员信息、漏洞详情(类型、位置、危害)
(2) 清理痕迹
- 删除测试中上传的文件(比如 webshell、测试文件)
- 清理服务器的访问日志、操作日志(避免甲方后续排查时困惑,也符合测试规范)
- 恢复测试中修改的配置
2.8 形成报告(测试的最终结果)
(1) 报告的核心结构
- 测试概述:测试的范围、时间、目标、需求(回顾第⼀步的内容)
- 信息收集总结:收集到的核心信息(IP、域名、系统版本等)
- 漏洞详情:每个漏洞的名称、位置(比如 “xxx.com/upload.php 存在文件上传
漏洞”)、危害等级(高危 / 中危 / 低危)、验证过程(附截图或步骤)、漏
洞成因(比如 “开发⼈员未对上传⽂件的类型进行严格校验”) - 修复建议:针对每个漏洞,给出具体、可操作的修复方法(比如 “限制文件上
传的类型,只允许 jpg、png 格式;对上传文件进行病毒扫描;修改文件存储
路径,避免直接访问”) - 风险总结:整体评估目标系统的安全状况,比如 “存在 3 个高危漏洞,可能导
致用户数据泄露,建议优先修复”
(2) 报告要求
- 语⾔通俗:甲方可能不是技术⼈员,要避免过多专业术语,或者用通俗的语⾔
解释(比如 “SQL 注⼊漏洞” 可以解释为 “黑客能通过输入特殊字符,读取数
据库中的用户密码”) - 逻辑清晰:按漏洞危害等级排序(高危在前,低危在后),每个漏洞的信息完
整,让甲方能直接照着修复
简化流程
如果觉得 8 步太复杂,先记住核心 4 步,满足基础测试需求: