2024数证杯预选赛 — server1-server2 服务器取证解题全过程
环境信息
| 服务器 |
角色 |
IP:端口 |
用户/密码 |
| server1 |
站点服务器 |
192.168.100.118:22 |
root/123456 |
| server2 |
数据库服务器 |
192.168.100.119:22 |
root/123456 |
server1 环境概览
- OS: Alibaba Cloud Linux 3 (Soaring Falcon)
- Java Spring Boot 应用: /data/cal-0.0.1-SNAPSHOT.jar
- Active profile: sxj, 配置文件 application-sxj.yaml
- 域名: sxj.elitzoe.cn, sx.tiantianqb.com
- APP名称: 顺心借 (网贷/借款平台)
- 组件: Redis Sentinel + RabbitMQ + Consul 服务发现 + Nginx
- Nginx: 端口82(前端静态), 8082(Java后端), 443(HTTPS→8082)
server2 环境概览
- Docker MySQL 8.0.39, 容器名 mysql8.0.39
- docker compose v2.27.1
- 数据库: sxj_prod, 用户 sxy/Sxy000**
Q1 — 站点服务器从哪个云服务平台上调证过来的?
答案
阿里云
解题思路
通过多个维度确认为阿里云ECS实例:
- 主机名格式:
iZbp1gma2uf9hvsnbu9mdkZ — 这是阿里云ECS实例的标准命名格式(以 iZ 开头)
- 内核版本:
Linux 5.10.134-12.2.al8.x86_64 — al8 表示 Alibaba Linux 8 系列内核
- 阿里云安骑士:
/usr/local/aegis/ 目录存在 (aegis_client, AliSecCheck, globalcfg)
- cloud-init配置:
datasource_list: [ AliYun ], distro: aliyun
- 操作系统: NAME="Alibaba Cloud Linux" VERSION="3 (Soaring Falcon)"
- 阿里云服务:
/usr/sbin/aliyun-service, /usr/sbin/aliyun_installer 存在
重点命令
# server1
hostname && cat /etc/hostname && uname -a
ls -la /usr/local/aegis/
cat /etc/os-release | head -5
cat /etc/cloud/cloud.cfg | grep -i "platform\|vendor\|aliyun"
Q2 — 站点服务器中数据库的密码是?
答案
Sxy000****
解题思路
应用为 Java Spring Boot,数据库配置在 application-sxj.yaml 文件中。通过解压 JAR 包读取配置文件获取数据库连接信息。
重点命令
# server1 - 解压JAR读取配置文件
unzip -p /data/cal-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application-sxj.yaml
配置内容包含:
- url: jdbc:mysql://rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com:***@2024#
- username: sxy
- password: Sxy000**
Q3 — 站点服务器用于提供服务发现的工具名是?
答案
consul
解题思路
在 /data/ 目录下发现 consul 数据目录,包含标准 Consul 组件:
- raft/ — Raft共识算法数据
- serf/ — Serf服务编排
- services/ — 服务注册信息
- node-id — 节点标识
- checkpoint-signature — 检查点签名
重点命令
# server1
ls -la /data/consul/
Q4 — 站点服务器数据库配置文件名是?
答案
application-sxj.yaml
解题思路
Spring Boot 多 profile 架构:
- application.yaml 设置
spring.profiles.active: 'sxj'
- 实际数据库连接配置在 application-sxj.yaml 中
- JAR 内共15个profile配置文件(axj, dev, jdd, liu, mxh, ryj, ssh, sxj, test, xfm, xpt等),实际生效的是 sxj
- jar.sh 启动命令为
java -jar cal-0.0.1-SNAPSHOT.jar,无 -Dspring.profiles.active 覆盖参数
- JAR 内无 database.php 文件(题目格式示例仅为PHP参考)
重点命令
# server1 - 列出所有配置文件
unzip -l /data/cal-0.0.1-SNAPSHOT.jar | grep -E "\.yaml|\.yml|\.properties"
# 确认 active profile
unzip -p /data/cal-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.yaml
# 确认启动参数无覆盖
cat /data/jar.sh
# 验证datasource配置在sxj文件中
unzip -p /data/cal-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application-sxj.yaml | grep -A5 datasource
Q5 — 该网站涉及的APP名称是?
答案
顺心借
解题思路
- 配置文件确认: application-sxj.yaml 中
app.name: 顺心借
- 浏览器验证: 访问 http://192.168.100.118:82/#/login,页面 h1 标题明确显示"顺心借"
- 密码登录验证: qc用户(19883213882/123456) POST /admin/index/loginByPassword → token有效
- 页面导航栏:后台管理 | 财务审核 | 数据报表
重点命令
# 浏览器访问登录页 http://192.168.100.118:82/#/login 验证标题
# API密码登录验证
curl -X POST http://localhost:8082/admin/index/loginByPassword \
-H 'Content-Type: application/json' \
-d '{"mobile":"19883213882","password":"123456"}'
Q6 — 存储大量身份证照的OSS中的AccessKeyID后八位是?
答案
EuZJybzD
解题思路
从 application-sxj.yaml 中获取 OSS 配置:
- accessKeyId: LTAI5tBt7rHreKjDEuZJybzD (共24字符)
- 取后8位: EuZJybzD
重点命令
# 从配置文件提取
unzip -p /data/cal-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application-sxj.yaml | grep -i accesskey
Q7 — 站点服务器用于消息转发代理工具所使用的端口号是?
答案
5672
解题思路
application-sxj.yaml 中配置了 RabbitMQ,端口为 5672。通过 netstat 确认端口正在监听。
重点命令
# server1 - 确认RabbitMQ端口
netstat -tlnp | grep 5672
Q8 — 站点服务器用于启动定时任务的代码片段存在于?
答案
MobileStatusTask.class
解题思路
- JAR包中搜索 Task 相关类,发现
com/rh/cal/task/MobileStatusTask.class
- javap 反编译确认:
- `@Scheduled(cron = "0 * * * *