数证杯电子数据取证分析大赛 服务器部分Writeup

admin 2024年11月20日13:53:07评论43 views字数 11087阅读36分57秒阅读模式

前言

我有五不做
1.会做的我不做,因为学不到新东西
2.不会做的我不做我都不会做我怎么做
3.急的事我不做,急了容易出错
4.不急的事我不做,不急我做什么
5.不想做的我不做,我不想做我怎么做

感谢范老师的祖传txt (文末附)
范老师博客:yagami.vip

数证杯服务器部分

1. [填空题] 对服务器检材进行分析,站点服务器可能是从哪个云服务平台上调证过来的?(填写汉字,答案格式:亿速云) (2分)

阿里云

有阿里云相关进程

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118214543198

2. [填空题] 对服务器检材进行分析,站点服务器中数据库的密码是?(按实际值填写) (2分)

Sxy000**

查看/data/cal-0.0.1-SNAPSHOT.jar配置文件application.yaml

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118214843701

发现激活配置文件是sxj,因此查看application-sxj.yaml得到数据库密码

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118214853474

3. [填空题] 对服务器检材进行分析,站点服务器用于提供服务发现的工具名是?(答案格式:zookeeper) (4分)

consul

主流的服务发现注册工具包括Consul、Zookeeper、Eureka、Etcd等,查看历史命令,在其中找到了Consul

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118215014002

4. [填空题] 对服务器检材进行分析,站点服务器数据库配置文件名是?(答案格式:database.php) (2分)

application-sxj.yaml

同第二题

5. [填空题] 对服务器检材进行分析,该网站涉及的APP名称是?(答案格式:微信) (2分)

顺心借

还是看配置文件

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118215501932

6. [填空题] 对服务器检材进行分析,该网站用于存储大量身份证照的OSS中的AccessKeyID后八位是?(答案格式:按实际值填写) (2分)

EuZJybzD

还是看配置文件

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118215456532

7. [填空题] 对服务器检材进行分析,站点服务器用于消息转发代理工具所使用的端口号是?(填写数字,答案格式:3306) (2分)

5672

RabbitMQ是实现了高级消息队列协议的开源消息代理软件

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241118215449245

8. [填空题] 对服务器检材进行分析,站点服务器用于启动定时任务的代码片段存在于?(答案格式:LoginIndex.class) (4分)

MobileStatusTask.class

cron

9. [填空题] 对服务器检材进行分析,站点服务器用于验证用户输入的验证码是否匹配的代码片段存在于?(答案格式:LoginIndex.class) (4分)

AdminIndexConller.class

使用AssertUtil.isTrue方法判断是否相等

String redisCode = (String)this.stringRedisTemplate.opsForValue().get(RedisConstant.ADMIN_PHONE_CODE + dto.getMobile());
    AssertUtil.isTrue(dto.getCode().equals(redisCode), ");

10. [填空题] 对服务器检材进行分析,数据库服务器中Docker容器镜像中mysql的镜像ID号前6位是?(答案格式:123asd) (2分)

23b013

首先仿真 data.E01,进去后记得修改ens33 ip /etc/sysconfig/network-scripts/ifcfg-ens33

然后启动docker查看就行

 [root@localhost ~]# service docker start
 Redirecting to /bin/systemctl start docker.service
 [root@localhost ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
 mysql        8.0.39    23b013c7c67d   3 months ago   572MB

11. [填空题] 对服务器检材进行分析,数据库服务器中DockerCompose的版本号是?(答案格式:1.1.1) (2分)

2.27.1

 [root@localhost ~]# find / -name 'docker-compose'
 /usr/libexec/docker/cli-plugins/docker-compose
 [root@localhost ~]# cd /usr/libexec/docker/cli-plugins
 [root@localhost cli-plugins]# chmod +x docker-compose
 [root@localhost cli-plugins]# ./docker-compose -v
 Docker Compose version v2.27.1

12. [填空题] 对服务器检材进行分析,数据库服务器中用于存储后台登录账号的数据表名是?(答案格式:login) (2分)

sys_user

将下列内容写进mysql容器的/etc/my.cnf

[mysqld]
skip-grant-tables

然后重启容器

docker restart f29ed5271c46

登录mysql

docker exec -it f29ed5271c46 mysql -uroot

修改localhost所有主机的root用户的密码,并刷新MySQL的权限

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

因为在上面jar包中配置文件的用户是sxy,为了能让网站连接上数据库,所以创建一个sxy用户,并允许所有主机登录,其次授予sxj_prod的权限

CREATE USER 'sxy'@'%' IDENTIFIED BY 'Sxy000**';
GRANT ALL PRIVILEGES ON sxj_prod.* TO 'sxy'@'%';
FLUSH PRIVILEGES;

然后把咱们上面的skip-grant-tables去掉,并重启容器

docker exec -it f29ed5271c46 sed -i "s/skip-grant-tables/ /" /etc/my.cnf
docker restart f29ed5271c46

下一步连接上数据库,就得到了我们的答案

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241119234401119

其次我们发现配置文件中的数据库地址是阿里云的,所以我们可以写一个hosts阿里云的地址指向我们的data.E01机子的ip

data.E01的ip rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com

具体方法是将上面的内容加进system.E01/etc/hosts,加完之后我们可以ping一下看合适没

[root@iZbp1gma2uf9hvsnbu9mdkZ ~]# ping rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com
PING rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150) 56(84) bytes of data.
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=1 ttl=64 time=0.267 ms
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=2 ttl=64 time=0.148 ms
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=3 ttl=64 time=0.219 ms
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=4 ttl=64 time=0.171 ms

查看数据库管理员表,我们可以看到很多state=1说明没有启用,因此我们随机选一个启用

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241119235634315
数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241119235644158

13. [填空题] 对服务器检材进行分析,后台管理员“xpt-0”所绑定的手机号码是?(答案格式:13001880188) (2分)

19521510863

数据库就可以看到

14. [填空题] 对服务器检材进行分析,用户首次借款初始额度是?(填写数字,答案格式:1) (2分)

4000

启动服务器之后,可以扫一下端口,看都有哪些服务

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120000114061

排查到82可以看到我们的目标顺心借

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120000141949

我们在前台发送验证码,发现使用的ip是47.96.140.186,因此需要替换/www/admin中所有的47.96.140.186变成我们system.E01的ip

find /www/admin -type f -name "*.js" -exec sed -i 's/47.96.140.186/system.E01的ip/g' {} +

其次在启动rabbitmq的时候发现启动失败,分析/var/lib/rabbitmq/erl_crash.dump

   崩溃时间:Wed Nov 20 00:13:09 2024
    
   崩溃原因:
    
    Slogan: Kernel pid terminated (application_controller) ({application_start_failure,rabbitmq_prelaunch,{{shutdown,{failed_to_start_child,prelaunch,{epmd_error,"iZbp1gma2uf9hvsnbu9mdkZ",timeout}}},{rabbit_prelaunch_app,start,[normal,[]]}}表明Erlang节点由于rabbitmq_prelaunch应用程序启动失败而终止。具体错误是epmd(Erlang分布式编程的端口映射守护进程)启动超时。
    

可以看到解析iZbp1gma2uf9hvsnbu9mdkZ超时,查看hosts文件,发现没有解析到127.0.0.1 进而修改

 127.0.0.1  iZbp1gma2uf9hvsnbu9mdkZ  iZbp1gma2uf9hvsnbu9mdkZ

修改后直接启动成功然后启动/root/consul.sh/data/jar.sh,进入网页发送验证码给咱们启用的用户13238424249

在redis中写入这个用户的验证码,redis密码在配置文件中看

 redis-cli -a Sxy000**
 SET ADMIN-PHONE13238424249 1234
 EXPIRE ADMIN-PHONE13238424249 600

验证码使用1234,成功登录

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012412962
数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012534576

15. [填空题] 对服务器检材进行分析,受害者在平台中一共结款了几次?(填写数字,答案格式:1) (2分)

1857

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012636445

16. [填空题] 对服务器检材进行分析,该平台中所有下单用户成功完成订单总金额是?(填写数字,答案格式:1) (2分)

11066700

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012730624

17. [填空题] 对服务器检材进行分析,该平台中逾期费率是?(答案格式:1.1) (2分)

0.1

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012800829

18. [填空题] 对服务器检材进行分析,该平台中累计还款总金额是?(填写数字,答案格式:1) (2分)

10194700

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012818143

19. [填空题] 对服务器检材进行分析,该平台总共设置了多少种借款额度?(填写数字,答案格式:1) (2分)

18

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012852829

19种有一个禁用了所以-1

20. [填空题] 对服务器检材进行分析,该平台一共有多少个借款渠道?(填写数字,答案格式:1) (2分)

131

要选择激活的

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120012956865

21. [填空题] 对服务器检材进行分析,该平台对已完成用户收取了总计多少元服务费,结果精确到整数?(填写数字,答案格式:123) (2分)

4051915

数证杯电子数据取证分析大赛 服务器部分Writeup
image-20241120013037040

附:范老师祖传txt

服务器取证 解析 by yagami 
本次阶段共 1 个段落, 21 个小题 , 总共 48 分
请根据服务器检材,回答以下问题: (21个小题, 共48分)

分别仿真system.E01和data.E01 是两台机器  data可以加多一块nat网卡就可以省去修改网卡配置的时间

1. [填空题] 对服务器检材进行分析,站点服务器可能是从哪个云服务平台上调证过来的?(填写汉字,答案格式:亿速云) (2分)
阿里云

system登录可以看到
Welcome to Alibaba Cloud Elastic Compute Service !

ls /etc/yum.repos.d/
可以看到AliYun.repo

里面内容也可以看到地址是mirrors.cloud.aliyuncs.com


2. [填空题] 对服务器检材进行分析,站点服务器中数据库的密码是?(按实际值填写) (2分)
Sxy000**

解压cal-0.0.1-SNAPSHOT.jar 或者使用jd-gui打开后查看
application.yaml中可以看到
  profiles:
 active: 'sxj'
 
查看application-sxj.yaml
 datasource:
 type: com.alibaba.druid.pool.DruidDataSource             # 
 driver-class-name: com.mysql.cj.jdbc.Driver              # mysqlcom.mysql.jdbc.Driver
 url: jdbc:mysql://rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com:3306/sxj_prod?allowMultiQueries=true&useUnicode=true&autoReconnect=true&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai
 username: sxy
 password: Sxy000**
 
3. [填空题] 对服务器检材进行分析,站点服务器用于提供服务发现的工具名是?(答案格式:zookeeper) (4分)
consul

system.E01机器上执行history
可以看到
yum install consul

4. [填空题] 对服务器检材进行分析,站点服务器数据库配置文件名是?(答案格式:database.php) (2分)
application-sxj.yaml

同第二题

5. [填空题] 对服务器检材进行分析,该网站涉及的APP名称是?(答案格式:微信) (2分)
顺心借

同上题
app:
  name: 
  user_name: 47892eff-bf47-430f-af4a-26d5992e2013
  password: 2957aad5-0f29-4575-86c0-6504e5154ef4

6. [填空题] 对服务器检材进行分析,该网站用于存储大量身份证照的OSS中的AccessKeyID后八位是?(答案格式:按实际值填写) (2分)
EuZJybzD

同上题
oss:
  endpoint: oss-cn-hangzhou.aliyuncs.com
  accessKeyId: LTAI5tBt7rHreKjDEuZJybzD
  accessKeySecret: WaNGaqgazB7pkg19lIEaBARODW8cl6
  bucketName: sxj-cal


7. [填空题] 对服务器检材进行分析,站点服务器用于消息转发代理工具所使用的端口号是?(填写数字,答案格式:3306) (2分)
5672

同上题
  rabbitmq:
 host: localhost
 port: 5672
 username: root
 password: 123456


8. [填空题] 对服务器检材进行分析,站点服务器用于启动定时任务的代码片段存在于?(答案格式:LoginIndex.class) (4分)
MobileStatusTask.class

查看com.rh.cal.task.MobileStatusTask
@Scheduled(cron = "0 * * * * ?")
  public void scheduled() {
 log.info("+ DateUtil.formatTime(new Date()));
 try {
   this.userService.uptInMobileStatus();
 } catch (Exception e) {
   log.error("{}", e);
 } 
  }
}

9. [填空题] 对服务器检材进行分析,站点服务器用于验证用户输入的验证码是否匹配的代码片段存在于?(答案格式:LoginIndex.class) (4分)
AdminIndexConller.class

查看com.rh.cal.controller.admin.AdminIndexConller
String redisCode = (String)this.stringRedisTemplate.opsForValue().get(RedisConstant.ADMIN_PHONE_CODE + dto.getMobile());
 AssertUtil.isTrue(dto.getCode().equals(redisCode), ");

10. [填空题] 对服务器检材进行分析,数据库服务器中Docker容器镜像中mysql的镜像ID号前6位是?(答案格式:123asd) (2分)
23b013

data.E01执行
service docker start
docker images --format "{{.ID}}" | cut -c 1-6

11. [填空题] 对服务器检材进行分析,数据库服务器中DockerCompose的版本号是?(答案格式:1.1.1) (2分)
2.27.1

data.E01执行
docker compose version --short

12. [填空题] 对服务器检材进行分析,数据库服务器中用于存储后台登录账号的数据表名是?(答案格式:login) (2分)
sys_user

data.E01执行
改密码
docker exec -it f2 sed -i '/[mysqld]/a skip-grant-tables' /etc/my.cnf
docker restart f2

docker exec -it f2 mysql -uroot

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

CREATE USER 'sxy'@'%' IDENTIFIED BY 'Sxy000**';
GRANT ALL PRIVILEGES ON sxj_prod.* TO 'sxy'@'%';
FLUSH PRIVILEGES;

quit

docker exec -it f2 sed -i "s/skip-grant-tables/ /" /etc/my.cnf
docker restart f2

开启general.log
docker exec -it f2 mysql -uroot -p123456

set global general_log = ON;
set global general_log_file='/tmp/general.log';

启用管理员账号
UPDATE sxj_prod.sys_user SET state = 0 WHERE id = 23;

quit

docker exec -it f2 tail -f /tmp/general.log

连接mysql数据库后结合下题可以得出答案


13. [填空题] 对服务器检材进行分析,后台管理员“xpt-0”所绑定的手机号码是?(答案格式:13001880188) (2分)
19521510863

同上一题

SELECT phone FROM sys_user WHERE name='xpt-0';

14. [填空题] 对服务器检材进行分析,用户首次借款初始额度是?(填写数字,答案格式:1) (2分)
4000

system.E01机器执行

systemctl start rabbitmq-server
启动失败
可以下载 erl_crash.dump 分析服务器启动失败原因 (也可以仍给AI分析)

可以看到Slogan: Kernel pid terminated (application_controller) ({application_start_failure,rabbitmq_prelaunch,{{shutdown,{failed_to_start_child,prelaunch,{epmd_error,"iZbp1gma2uf9hvsnbu9mdkZ",address}}},{rabbit_prelaunch_app,start,[normal,[]]}}})

{epmd_error,"iZbp1gma2uf9hvsnbu9mdkZ",address}}}

主机名 iZbp1gma2uf9hvsnbu9mdkZ 可能没有正确解析,导致连接超时。
检查主机名配置,确保在 /etc/hosts 文件中将主机名映射到正确的本地 IP 地址。

sed -i 's/172.20.148.2/127.0.0.1/g' /etc/hosts

修改hosts文件把rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com 指到data.E01虚拟机的ip

echo 192.168.91.172 rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com >> /etc/hosts

结合nginx配置文件得出后台访问地址 

浏览器访问 http://192.168.91.174:82 system.E01虚拟机的ip

修改后台跳转地址也可以添加一块网卡设置ip为47.96.140.186.我这里修改前台跳转地址192.168.91.174改为你自己system.E01的虚拟机ip地址

cd /www/admin/ && find ./ -type f -name '*.js' -exec sed -i 's/47.96.140.186/192.168.91.174/g' {} +      

开始启动服务

systemctl start rabbitmq-server

cd /root/ && ./consul.sh

cd /data && sh jar.sh

添加验证码

redis-cli -a Sxy000**

SET ADMIN-PHONE18888888888 1234
EXPIRE ADMIN-PHONE18888888888 600

redis这边键值得设定可以查看代码com.rh.cal.constant.RedisConstant

浏览器访问 http://192.168.91.174:82 使用手机号18888888888 验证码1234 登录后台

进入后台--系统管理--系统设置--用户初始额度

SELECT * FROM global_config WHERE config_id=11;


15. [填空题] 对服务器检材进行分析,受害者在平台中一共结款了几次?(填写数字,答案格式:1) (2分)
1857

首页总还款订单量
select count(order_id) num from order_from where status=5;

16. [填空题] 对服务器检材进行分析,该平台中所有下单用户成功完成订单总金额是?(填写数字,答案格式:1) (2分)
11066700

首页通过订单总金额

17. [填空题] 对服务器检材进行分析,该平台中逾期费率是?(答案格式:1.1) (2分)
0.1

进入后台--系统管理--系统设置--逾期费率

SELECT * FROM global_config WHERE config_id=14;
 
18. [填空题] 对服务器检材进行分析,该平台中累计还款总金额是?(填写数字,答案格式:1) (2分)
10194700

首页还款总金额

select FLOOR(sum(quota)) from order_from where status=5;

19. [填空题] 对服务器检材进行分析,该平台总共设置了多少种借款额度?(填写数字,答案格式:1) (2分)
18

费率管理--借款额度 19个。1个禁用

SELECT COUNT(*) FROM quota WHERE is_delete=0;


20. [填空题] 对服务器检材进行分析,该平台一共有多少个借款渠道?(填写数字,答案格式:1) (2分)
131

渠道总共140个 开启状态131个

SELECT COUNT(*) FROM channel_data WHERE status=1;


21. [填空题] 对服务器检材进行分析,该平台对已完成用户收取了总计多少元服务费,结果精确到整数?(填写数字,答案格式:123) (2分)
4051915

交易统计

SELECT FLOOR(SUM(money)) FROM amount_bill WHERE type = 3;

原文始发于微信公众号(电子取证wiki):“数证杯”电子数据取证分析大赛 服务器部分Writeup

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月20日13:53:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   数证杯电子数据取证分析大赛 服务器部分Writeuphttps://cn-sec.com/archives/3413488.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息