0


2024第二届龙信杯WP思路——服务器取证

欢迎来看我的个人博客SkyAsh的小窝

这次的服务器整了一个很恶心的东西就是开机密码校验

是在登录执行文件夹中放了一个脚本

当然有一个简单方法

直接Ctrl+C​结束脚本就可以了,没那么麻烦

当然做题要讲究方法,指不定下次就不让Ctrl+C​了呢

1、分析服务器检材,服务器会做登录密码验证,该登录验证文件位置在?[/etc/profile.d/]

如果正常使用仿真软件仿真的话,会直接删除docker,到时候什么都不剩了

image

所以这个时候会知道,是只要一登录就会执行脚本,这种脚本通常存在于以下登录执行目录

/etc/profile

/etc/profile.d/

~/.bashrc

~/.profile

image

然后我们利用linux进入救援模式并使用单用户模式进行登录前文件修改

rescue是进入救援模式

选中之后按e

image

按住上下键,查找以“linux”开头的启动指令

如图所示,在这一段命令最后加上一句rw single init=/bin/bash​,然后按ctrl+x​

image

在上述存在登录执行脚本的目录里查找,可以定位到脚本/etc/profile.d/check-system.sh​

image

然后删除这个脚本之后重启虚拟机

image

image

成功

2、分析服务器检材,服务器ssh端口是多少?[12320]

这个简单

使用命令

 netstat -anpt | grep ssh

出来了三个结果,ssh端口一般是可以从任何IP进行访问的,所以选择第一个0.0.0.0:12320​

image

3、分析服务器检材,服务器docker内有多少个镜像。[7]
docker images

image

4、分析服务器检材,服务器内sq1server默认账号的密码是?[<i7uFtnkTv8>]

这个地方是我的知识储备不够,不知道mssql就是sqlserver的数据库服务器​

image

输入命令

docker ps -a

可以看到mssql曾经启动过

然后按照下面的指示操作

首先启动容器

docker start 392

然后进入shell

docker exec -it 392 /bin/bash 
  • ​docker exec​:执行 Docker 的命令,用于在运行中的容器内执行命令。
  • ​-it​:这两个参数组合在一起的作用是使终端为交互模式(-i​ 表示开启交互模式,-t​ 分配一个伪终端),让你可以在容器内进行操作。
  • ​392​:这是目标容器的容器ID或名字,可以是容器ID的前几位,也可以是容器的完整名称。这个值用于指定你要进入的容器。
  • ​/bin/bash​:表示在容器内启动一个 bash shell,用于进入该容器的命令行环境。

然后在环境里找

mssql@sqlserver2019:/$ env

就出现密码了

env里通常会列出以下内容

1. 与 SQL Server 相关的环境变量

  • ACCEPT_EULA: 表示是否接受了微软的最终用户许可协议 (EULA),通常是 Y​。ACCEPT_EULA=Y
  • SA_PASSWORD: 这通常不会直接显示密码的值,因为它属于敏感信息,但环境变量的名称可能会出现在列表中,具体的密码值不会明文显示。SA_PASSWORD=YourPasswordHere
  • MSSQL_PID: SQL Server 产品 ID,指定使用的 SQL Server 版本(如 Express​、Developer​、Standard​)。MSSQL_PID=Express

2. Docker 容器相关的环境变量

  • PATH: 指示可执行文件的搜索路径。它通常包含一些默认的 Unix 路径以及 MSSQL 运行时的路径。PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • HOSTNAME: 容器的主机名,通常是容器的短 ID。HOSTNAME=392
  • HOME: 当前用户的主目录。HOME=/root

3. 系统和本地化相关变量

  • LANG: 系统的语言和字符编码设置。LANG=en_US.UTF-8
  • TZ: 时区设置,如果在运行容器时指定了时区(如 Asia/Shanghai​),它也会显示在这里。TZ=Asia/Shanghai

4. 其他自定义的环境变量

  • 如果在启动容器时通过 -e​ 传递了其他自定义的环境变量,它们也会出现在 env​ 的输出中。例如,AWS 相关的环境变量、API 密钥等。CUSTOM_VAR=custom_value

image

5、分析服务器检材,服务器内sq1server存放了阿里云存储下载地址,该下载地址是?[https://xinfenfa.oss-accelerate.aliyuncs.com]

这个就是纯手搓数据库了

image

6、分析服务器检材,服务器内sqlserver内“cmf_user_action_1og”表,表内存在的用户操作日志,一共操作次数是多少?[99207]

这个题有个坑就是得user_id​得在cmf_user​这个表里才算

SELECT sum(cmf_user_action_log.[counts]) FROM cmf_user_action_log WHERE user_id INSELECT id FROM cmf_user)

image

7、分析服务器检材,分析服务器检材,该服务器正在使用的数据库的持久化目录是什么?[/data/mongo]

首先先确定这个服务器上的网站使用的什么框架

在网站配置文件里的域名后面加一个虚拟机IP

先找文件位置,一般网站配置文件的命名是域名.conf​

如下图

image

按照下图修改,域名后面空格然后输入虚拟机IP

image

然后重启nginx服务,在访问虚拟机IP,当然肯定是访问不了的,但是我们可以根据报错页面得知网站使用的ThinkPHP V5.0.24​框架

nginx -s  reload

image

而ThinkPHP的数据库配置文件也是默认是database.php​,并且是存放在网站目录下的

如图所示,确定是mongo​数据库

image

这里也是涉及到知识盲区了

是关于docker​的inspect​命令

如何查看持久化目录

当你运行 docker inspect <container_id_or_name>​ 时,JSON 数据中会包含 Mounts​ 和 HostConfig.Binds​ 部分,它们记录了卷的挂载信息。

示例输出

假设你运行以下命令来创建一个容器,并将数据持久化到宿主机的 /data​ 目录中:

docker run -d -v /data:/var/lib/mysql --name my-mysql mysql:latest

然后使用 docker inspect​ 来查看容器的详细信息:

docker inspect my-mysql

你可能会在输出的 Mounts​ 部分看到类似的信息:

"Mounts": [
    {
        "Type": "bind",
        "Source": "/data",
        "Destination": "/var/lib/mysql",
        "Mode": "rw",
        "RW": true,
        "Propagation": "rprivate"
    }
]

解释

  • Type: 挂载的类型。可以是 bind​(绑定挂载)或 volume​(Docker 管理的卷)。
  • Source: 宿主机上的路径,即持久化数据存放在宿主机的哪里(这里是 /data​)。
  • Destination: 容器内的路径,即这个持久化数据在容器内部的挂载位置(这里是 /var/lib/mysql​)。
  • Mode: 挂载的模式(如只读 ro​ 或读写 rw​)。
  • RW: 表示这个挂载点是否可读写(true​ 表示可读写)。

如果你使用了 Docker 管理的卷,而不是绑定挂载,输出会类似这样:

"Mounts": [
    {
        "Type": "volume",
        "Name": "my-volume",
        "Source": "/var/lib/docker/volumes/my-volume/_data",
        "Destination": "/var/lib/mysql",
        "Driver": "local",
        "Mode": "rw",
        "RW": true
    }
]
  • Name: 卷的名称(这里是 my-volume​)。
  • Source: 实际卷数据在宿主机上的存储路径(这里是 /var/lib/docker/volumes/my-volume/_data​)。

依次输入以下命令

docker ps -a
docker start d49
docker inspect d49

image

定位到这里

image

8、分析服务器检材,该网站后台正在使用的数据库有多少个集合?[13]

这个也简单,用上面找到的数据库配置文件里的用户名和密码登录数据库

(就是这里面把数据表叫成集合让我有点懵,也是知识盲区了)

image

9、分析服务器检材,该网站的后台登录地址是?[/appmanager/common/login.shtml]

这个手搓也能搓出来,主要是我实在是没注意到这里有个提示

image

这里我们把数据库迁移回mysql就行

image

先把docker里的镜像运行起来

image

docker ps -a
docker start 392
docker start mongo
docker start 9fc

迁移数据库具体操作就用Navicat就行,如下

这里需要登录服务器里的mysql,所以需要mysql的用户名和密码,找密码就和前面找sqlserver密码的方法是一样的

image

先把mongodb里的数据导出来,用navicat的导出向导和导入向导就可以了

image

然后修改上面找到的数据库配置文件

image

此时就不会再报错了

image

这里和index平级的目录有一个appmanager,访问一下试试,访问之后就直接跳转后台目录了

image

image

10、分析服务器检材,该网站后台使用的管理员加密算法是?「BCRYPT]

数据库可以看到这里所有的密码密文都是$2a$10$​开头的,百度一下

image

image

11、分析服务器检材,该网站最早使用超级管理员进行删除管理员操作的IP地址是?[117.132.191.203]

改一下网站后台超级管理员的密码

image

或者更改登录逻辑,这个更改登录逻辑的技巧在前文提到过,详情请看前文关于服务器取证的文章,这里只展示结果

image

image

然后就是找后台数据,超级管理员id是1,删除管理员操作id是26(这里不要乱点东西,如果点了通讯录数据会导致你当前使用的浏览器没办法再访问这个网站了,具体原因不详,没有去探究)

image

然后去扒数据库,设置好筛选项

image

12、分析服务器检材,该网站后台上传过sha256值为“b204ad1f475c7716daab9afb5f8d61815c508f2a2b1539bc1f42fe2f212b30d1”的压缩包文件,该文件内的账单交易订单号是多少?[MTj02]

压缩包的话搜索一下zip文件

image

发现了个这个东西

image

这就是典型的爆破操作了,我用的passware kit​

设置好爆破选项

image

成功

image

13、分析服务器检材,该网站存在网站数据库备份功能,该功能的接口地址是?[/appmanager/databackup]

涉及到备份,直接搜backup,由于涉及到数据库备份,所以肯定是在appmanager里面的,看一眼第一个文件再controller​里就大差不差了,接口基本就确定了

image

image

如果无法推断出接口,也可以去日志找一下,因为既然有这个接口,那嫌疑人一定是使用过的,如下图

image

14、分析服务器检材,该网站存放银行卡信息数据表中,其中信息数量前十的公司对应旗下v1sa银行卡一共有多少金额?[标准格式:[21699474.70]

首先筛选信息量前十

image

然后要知道visa银行卡号特征

此时需要熟练掌握AI​哈哈哈哈,所以visa卡号是4开头,那就去扒数据库了

image

image

15、分析服务器检材,该网站在2023年二月一共获取了多少条通信记录?[2879]

先要转换一下时间戳

这样就是1000+1000+879=2879

16、分析服务器检材,该网站的一条管理员信息存在数据篡改,请分析是哪个管理员信息遭到篡改,该管理员用户名是?[xYpMLuROhNl]

这个题就是找数据异常,这个人的账号创建时间在登录时间之后,那就是这个数据异常了

image

标签: 服务器

本文转载自: https://blog.csdn.net/wyp106343873/article/details/143165810
版权归原作者 Q3_SkyAsh 所有, 如有侵权,请联系我们删除。

“2024第二届龙信杯WP思路——服务器取证”的评论:

还没有评论