Administrator
发布于 2025-09-21 / 7 阅读
0
0

流量分析实战

1节:网络取证基础与案例引入

一、案件场景引入

1.1 案件背景

本课程的实操内容与网络安全岗位的真实工作流程完全一致。

设定如下场景:某公安局网安大队接到辖区重点企业的报案,称其服务器于前夜出现异常卡顿,疑似遭到黑客入侵。运维人员排查时发现,服务器上的所有系统日志均已被清空。

攻击者在完成入侵操作后,通常会第一时间清除日志以消除痕迹。

然而,该企业的边界网关上部署了流量采集系统,事发时段所有进出服务器的网络数据包均被完整记录。最终保留下来的取证材料,是一份大小为 3.7 MB 的网络流量包文件 traffic.pcapng

本课程的核心任务,是从这份流量数据中逐步还原攻击者的完整操作过程,最终定位其远程控制端(C2)的 IP 地址。

1.2 攻击链全景预览

在正式分析之前,先建立全局视角。任何一次完整的网络攻击,通常都遵循一套固定的阶段模型,安全行业将其称为"网络杀伤链"(Cyber Kill Chain)。其核心阶段可归纳为五步:

步骤

动作

通俗理解

第一步

侦查

黑客先探路,看目标有什么弱点

第二步

武器化

找到弱点后,准备对应的攻击工具

第三步

投递

把恶意代码送进去

第四步

安装

在目标机器上种下后门

第五步

控制

远程操控被入侵的机器

本课程的分析工作将严格按照这五个阶段推进:前三节课聚焦侦查与武器化阶段,后三节课聚焦投递、安装和控制阶段。全部课程结束时,完整的攻击链将被逐环还原。


二、工具入门:Wireshark

2.1 Wireshark 是什么

在开始案件分析之前,首先介绍本课程最核心的分析工具——Wireshark。

类比来说,医生需要显微镜来观察细胞,网络取证人员则需要 Wireshark 来观察网络数据包。Wireshark 是网络世界的"显微镜",能够将网络中传输的每一个数据包捕获并展示其完整内容。

再做一个类比帮助理解:网络通信的过程,类似于两个人写信。每封信都有一个信封和信的内容。信封上写着发件人地址、收件人地址(对应 IP 地址和端口号);信的内容就是真正传输的数据(比如一个网页请求、一张图片、一段代码)。Wireshark 能同时让你看到"信封"和"信的内容"。

2.2 分析三板斧

无论流量包多复杂,分析的基本方法论可归纳为三步:

第一步:看宏观

首先通过统计功能从宏观角度了解整个流量包的通信概况。

操作路径:菜单栏 统计(Statistics)会话(Conversations)

这个界面会告诉你:一共有多少个 IP 地址在通信?哪两个 IP 之间的数据量最大?通信用的什么协议?

另一个有用的统计:菜单栏 统计(Statistics)HTTP(HTTP)请求(Requests)

这个界面会告诉你:所有的 HTTP 请求都访问了哪些路径。

第二步:学过滤

一个流量包里可能有几千甚至几万个数据包。不可能一个一个看。Wireshark 提供了过滤器,让你从海量数据中精准定位你关心的内容。

过滤器在 Wireshark 主界面的顶部,有一个输入框,背景色为绿色(语法正确时)或红色(语法错误时)。

常用过滤语法:

过滤表达式

含义

http

只显示 HTTP 协议的数据包

tcp.port==80

只显示 80 端口的 TCP 流量

ip.addr==192.168.38.133

只显示跟这个 IP 地址相关的流量

http.response.code==404

只显示返回 404 状态码的 HTTP 响应

还有一种不是过滤器,但同样重要的搜索方式:字符串搜索。快捷键 Ctrl+F,可以在数据包内容中搜索任意关键字,比如搜索 passwordkey 这类敏感词。

第三步:追底层

当你锁定了一个可疑的数据包后,想看这个数据包所在的"完整对话"(一来一回的请求和响应),就用追踪流功能。

操作路径:右键点击目标数据包 → 跟踪流(Follow)TCP流(TCP Stream)(或 HTTP流(HTTP Stream)

这个功能会把这一次完整的"对话"按顺序展示出来。红色文字是客户端发出的数据,蓝色文字是服务器返回的数据。


三、实操:初步探索流量包

3.1 打开流量包

在实验机上启动 Wireshark,加载 traffic.pcapng 文件。

操作路径:文件(File)打开(Open) → 选择 traffic.pcapng → 点击 打开(Open)

打开之后,你会看到主界面上密密麻麻地罗列了大量的数据包。每一行就是一个数据包,从上到下按时间顺序排列。

3.2 练习一:看报文总数

观察 Wireshark 界面右下角的状态栏,上面会显示 分组(Displayed): 10423,这就是当前数据包的总数。

先记下这个数字,有个整体的量级感知。

3.3 练习二:判断黑客 IP

在过滤器输入框中输入 http,然后按回车。

现在界面上只剩下 HTTP 协议的数据包了。观察 Source(源地址)这一列。你会发现有大量的请求都是从同一个 IP 地址发出的。

分析方法:菜单栏 统计(Statistics)会话(Conversations) → 切换到 IPv4 标签页 → 按 Packets 列降序排列。

排在最前面、数据包数量最多的那个 IP,大概率就是黑客的 IP。因为黑客在进行扫描的过程中,会在短时间内发出大量请求。

结论:发起请求的源 IP 为 192.168.38.137,这就是黑客的 IP 地址。被访问的目标 IP 为 192.168.38.133,这是受害服务器。

3.4 练习三:判断目标服务类型

继续在 HTTP 过滤视图下,点开一个服务器返回数据的响应包(比如状态码为 200 OK 的数据包),展开 Hypertext Transfer Protocol 部分。

重点观察 HTTP 响应头中的 Set-Cookie 字段。你会发现服务器给浏览器下发的 Cookie 名称叫 laravel_session。这是 PHP Laravel 框架默认的会话 Cookie 名称。同时,在 X-Powered-By 字段中通常能看到 PHP 的标识。这两个特征结合,足以证明目标服务器上运行的是一个基于 PHP Laravel 框架开发的 Web 应用。

这个信息后面会用到。先记住:目标是一个 Laravel 应用。


2节:识别扫描工具与提取线索

一、红队渗透思想入门

1.1 什么是红队

在正式分析之前,需要先补充一个重要的背景知识:红队渗透。

红队是网络安全行业的一个专业术语。简单来说,红队就是"扮演黑客的人"。企业为了测试自己的防御体系是否可靠,会专门雇一批安全工程师来模拟真实黑客的攻击行为。这批人就叫红队。与之对应的,负责防守的团队叫蓝队。

类比来说,消防部门的消防演习中会安排人员模拟纵火场景,其他人员负责灭火和疏散。红蓝对抗的原理相同——通过模拟攻击来发现真实的安全漏洞。

理解这一概念对取证工作至关重要:流量取证的本质就是逆向还原攻击者的操作过程。只有理解攻击者的思路,才能准确解读流量中的行为痕迹。

1.2 攻击的第一步:信息收集

任何有经验的攻击者都不会直接发起攻击,第一步始终是信息收集。

信息收集的概念可类比为:在实施入侵前,攻击者会先对目标进行全面的侦察,了解目标的网络架构、开放服务和潜在弱点。

网络攻击中的信息收集也是一样。黑客要先搞清楚目标服务器上有什么东西:

  • 服务器开了哪些端口?

  • 上面运行的是什么 Web 应用?

  • 有没有忘记删除的敏感文件(比如备份文件、配置文件、测试页面)?

其中,最常见的信息收集手段之一就是"目录爆破"——黑客使用自动化工具,对目标网站发起大量的 HTTP 请求,挨个尝试常见的目录名和文件名(比如 /admin/backup.zip/.env/.git),看哪些路径能访问到。

1.3 目录爆破的流量特征

这种暴力扫描在流量包里会留下非常明显的痕迹,有三个典型特征:

特征

表现

高频请求

短时间内出现成百上千个 HTTP 请求,间隔极短

大量 404

绝大多数请求的响应状态码都是 404 Not Found,因为尝试的路径大多数不存在

敏感路径

请求的 URL 中包含大量常见的敏感词:.git.env/admin.bak.sql

如果你在流量包中看到这三个特征同时出现,基本可以断定:这是一次目录爆破扫描。


二、实操:定位攻击工具

2.1 过滤 HTTP 流量

在 Wireshark 过滤器中输入:

http

按回车后,界面上只保留 HTTP 协议的数据包。

2.2 观察异常现象

现在看 Info 列。你会发现大面积的红色或绿色条目中,出现了大量的 404 Not Found 响应。往下翻几页,几乎全是 404。这就是刚才讲的目录爆破的典型痕迹。

2.3 查看请求详情

随便选中一个返回了 404 的请求包(注意选的是请求包,不是响应包——看 Info 列以 GET 开头的那些行)。

选中之后,在下方的"数据包详情"面板中,点击 Hypertext Transfer Protocol 前面的三角箭头,展开 HTTP 头部信息。

找到 User-Agent 字段。

2.4 关键发现

User-Agent 字段的内容为:

User-Agent: Wfuzz/3.1.0

这个字段暴露了黑客使用的扫描工具——Wfuzz,版本号 3.1.0。

User-Agent 是什么? 简单来说,任何客户端(浏览器、脚本、工具)在发送 HTTP 请求的时候,都会在请求头里带一个 User-Agent 字段,用来告诉服务器"我是谁"。比如 Chrome 浏览器的 User-Agent 会包含 Chrome/xxx 字样,Firefox 会包含 Firefox/xxx。扫描工具如果没有专门伪装,也会暴露自己的名字。

2.5 问题 1 答案

黑客扫描使用的工具名称为:wfuzz


三、工具特征知识延展

3.1 常见扫描工具的 User-Agent 特征与实战解析

网络安全实战中,不同的扫描工具有不同的 User-Agent(用户代理)指纹。作为取证人员,熟悉这些指纹就像警察熟悉惯犯的作案手法一样重要:

工具名称

User-Agent 特征

主要用途

实战深度解析

Wfuzz

Wfuzz/x.x.x

Web 目录爆破、模糊测试

常用于寻找隐藏后台或备份文件(如本案 .git)。伴随大量 404 响应,是典型的"暴力猜解"。

SQLMap

sqlmap/x.x.x#dev

SQL 注入检测与利用

流量中常含 'OR 1=1sleep()。出现该特征即代表黑客正试图攻破并直接控制数据库。

Nikto

Mozilla/5.00 (Nikto/x.x.x)...

Web 服务器漏洞扫描

极短时间内发送成千上万请求,动作幅度巨大特征明显,极易被防御设备(WAF)第一时间拦截。

Gobuster

gobuster/x.x.x

目录、文件与 DNS 枚举

Go 语言编写,并发效率极高。出现该指纹且并发请求激增,说明黑客正进行高强度的资产收集。

Dirsearch

python-requests/x.x.x

高级目录与文件扫描

默认常暴露出 Python 底层库 UA,隐蔽性高,易被误认为普通爬虫。需结合突发高并发频率分辨。

3.2 防御视角:WAF 如何拦截扫描

在企业实际部署中,Web 应用防火墙(WAF)会维护一份 User-Agent 黑名单。一旦检测到请求的 User-Agent 包含 WfuzzsqlmapNikto 等关键字,直接拒绝访问。

3.3 对这个黑客的侧写

回到本案件。该攻击者使用了 Wfuzz 工具进行目录爆破,但未修改默认的 User-Agent。这说明什么?

这表明该攻击者具备一定的自动化工具使用能力,但在反检测与反取证方面欠缺经验。经验丰富的攻击者通常会将 User-Agent 伪装为正常浏览器标识以规避检测。

这对取证工作而言是有利条件——攻击者留下的痕迹较为明显,后续分析将相对顺利。

3.4 扫描结果中的关键发现

除了 404 之外,黑客的扫描结果中有没有成功命中的目标?我们继续观察流量。

在刚才的 HTTP 过滤视图中,注意观察状态码不是 404 的请求。你会发现有少量请求返回了 200 OK,其中有一些请求访问的路径以 .git 开头。

这意味着:黑客通过目录爆破,发现了目标服务器上存在 .git 目录泄露。

这个发现是整个攻击链的转折点。下一节课,我们就来分析黑客是怎么利用这个 .git 泄露来获取关键密钥的。

3节:Git 源码泄露与密钥提取

一、Git 从零讲解

1.1 版本控制的概念

在讲 Git 之前,先说一个大家都经历过的痛点。

你写过课程论文或者毕业设计吗?写到一半怕丢了,另存为一个副本。改了几版之后,桌面上可能就出现了这些文件:

毕业论文_v1.docx
毕业论文_v2.docx
毕业论文_v2_修改版.docx
毕业论文_最终版.docx
毕业论文_最终版_真的最终.docx
毕业论文_打死不改了.docx

这种方式的问题很明显:文件越来越多,根本记不清每一版改了什么,想回退到某个版本也很难找。

Git 就是为了解决这个问题而设计的工具。它是一个"版本控制系统",可以理解成一台"代码时光机"。每次你修改了代码并提交(commit),Git 就会自动给当前状态拍一张"快照"保存下来。你可以随时回退到任意一个历史版本,也可以查看每一次改了什么。

在软件开发行业,Git 是最主流的版控工具。几乎所有的开发团队都在用它。

1.2 .git 文件夹的作用

当你在一个项目中使用 Git 后,项目根目录下会生成一个名为 .git 的隐藏文件夹。这个文件夹是 Git 的核心,里面存放着所有的版本历史、配置信息和文件快照。

它的基本结构如下:

.git/
├── config          # 仓库配置(远程地址、分支信息等)
├── HEAD            # 当前所在分支的指针
├── objects/        # 所有版本的文件内容(核心数据)
│   ├── ab/         # SHA1 哈希值前两位作为目录名
│   │   └── cdef...  # SHA1 哈希值剩余 38 位作为文件名
├── refs/           # 分支和标签的引用
└── logs/           # 操作日志

我们重点关注 objects 目录。Git 会把每一个文件的内容计算出一个唯一的哈希值(40位十六进制字符串),然后用 zlib 压缩算法把文件内容压缩后,存放在 objects 目录下。哈希值的前两位作为子目录名,后 38 位作为文件名。

什么是哈希值?可以理解为文件的"身份证号"。每个文件的内容不同,计算出来的哈希值就不同。它是唯一的。

什么是 zlib 压缩?类比生活中的真空压缩袋。你把一件大衣放进真空袋里抽气压缩,体积变小了便于存放。但你想穿的时候,要打开袋子把大衣取出来才能看到原貌。Git 对文件做的事情也一样:压缩存储,读取时再解压。

1.3 动手实验:亲手创建一个 Git 仓库并理解泄露原理

光听理论很容易忘记。现在我们在 Kali 的终端里亲手操作一遍,让你真正看懂 .git 里面存着什么、为什么它会成为安全隐患。

第一步:初始化一个项目

打开终端,执行以下命令,创建一个模拟项目目录并初始化 Git:

┌──(kali㉿kali)-[~]
└─$ mkdir demo && cd demo

┌──(kali㉿kali)-[~/demo]
└─$ git init

结果图:

解析git init 命令做了一件事:在当前目录下生成了一个 .git 隐藏文件夹。这个文件夹就是整个 Git 仓库的大脑,里面目前还什么都没有。

第二步:创建一个包含敏感信息的配置文件

模拟开发人员创建一个包含数据库密码和加密密钥的 .env 配置文件:

┌──(kali㉿kali)-[~/demo]
└─$ cat > .env << 'EOF'
APP_KEY=base64:MySecretKey123456789==
DB_PASSWORD=super_secret_password
EOF

这模拟了一个真实的 Laravel 项目中会存在的情景。

第三步:把文件提交到 Git

┌──(kali㉿kali)-[~/demo]
└─$ git add .env

┌──(kali㉿kali)-[~/demo]
└─$ git config --global user.name "你的名字"

┌──(kali㉿kali)-[~/demo]
└─$ git config --global user.email "你的邮箱地址"

┌──(kali㉿kali)-[~/demo]
└─$ git commit -m "初始化项目配置"

输出结果

解析git add 告诉 Git「跟踪这个文件」,git commit 则是拍下当前状态的快照并附上说明。此时 Git 把 .env 的内容压缩后存进了 objects 目录。

第四步:看看 Git 内部存了什么

现在我们来揭秘 .git/objects 里面到底是什么:

┌──(kali㉿kali)-[~/demo-project]
└─$ find .git/objects -type f

输出结果(每次运行哈希值不同,但结构一致):

解析:每一个文件对应一个 Git 对象。Git 把 .env 文件的内容、提交记录(commit)以及目录结构(tree)分别存为三个独立的对象,并用哈希值命名。目录名是哈希值的前 2 位,文件名是后 38 位。

第五步:验证文件是 zlib 压缩的,并还原内容

先直接看文件内容——你会发现是乱码:

┌──(kali㉿kali)-[~/demo]
└─$ cat .git/objects/5e/2142e8b95d4914e820a1b9a9e6200efc4150a0

输出结果

现在用 Python 解压它,看看里面是什么:

┌──(kali㉿kali)-[~/demo-project]
└─$ python3 -c "
import zlib
data = open('.git/objects/5e/2142e8b95d4914e820a1b9a9e6200efc4150a0','rb').read()
print(zlib.decompress(data).decode())
"

输出结果

这就是敏感信息泄露的根源所在.env 里写了什么,Git 就原封不动地压缩存进了 objects。哪怕开发人员后来把 .env 从项目中删掉了,只要这次提交记录还在,这个 objects 文件就永远还在。黑客只需要遍历 objects 目录,逐个下载并解压,就能把所有历史版本的内容全部恢复出来。

小结:泄露完整路径

开发人员的操作

黑客的对应行动

执行 git commit,将 .env 提交进去

遍历 .git/objects/ 目录,找到所有文件的哈希 ID

部署时将整个项目(含 .git)上传到服务器

通过 HTTP 逐个访问 .git/objects/xx/xxxxx... 并下载

意识到风险,删除了 .env 文件

对下载的文件进行 zlib 解压,成功还原出历史版本中的 .env

但忘了从 Git 历史中彻底清除它

在还原内容中提取 APP_KEY,进入攻击的下一阶段

1.4 .git 泄露是怎么发生的

正常情况下,.git 文件夹只应该存在于开发人员的本地电脑上,或者存在于公司内部的代码仓库服务器上。它绝对不应该出现在对外提供服务的 Web 服务器的网站根目录里。

但在实际工作中,有些开发人员犯了一个致命的错误:他们在部署代码的时候,直接把包含 .git 文件夹的整个项目目录拷贝到了 Web 服务器上。

后果是什么?任何人只要在浏览器里访问 http://目标网站/.git/config,就能看到 Git 的配置文件。更严重的是,通过依次访问 objects 目录下的文件,可以把整个项目的源代码和配置文件全部还原出来——正如我们刚才在本地实验中看到的那样。

类比到现实世界:这相当于一家银行把保险柜的钥匙放在了大门口的地垫下面,而且任何路人都能直接伸手拿走。


二、Laravel 框架与 APP_KEY

2.1 Laravel 简介

回到我们的案件。在第一节课中,我们已经确认目标服务器上运行的是 Laravel 框架。

Laravel 是什么?它是 PHP 语言中最流行的 Web 开发框架之一。所谓框架,就是把开发一个网站所需要的常用功能(用户登录、数据库操作、安全加密、权限管理等)打包在一起,开发人员拿来直接用,不需要从头写。

2.2 .env 文件与 APP_KEY

Laravel 项目的根目录下有一个名为 .env 的配置文件。这个文件里存放着应用运行所需要的各种敏感参数:数据库的连接地址、用户名和密码、第三方 API 的密钥等等。

其中最关键的一个参数是 APP_KEY。它是一串 32 字节的随机密钥,Laravel 用它来加密所有的用户会话(Session)和 Cookie。

APP_KEY 一旦泄露,意味着什么?意味着黑客可以用这把钥匙去解密(或者伪造)任何用户的会话数据。更危险的是,在某些 Laravel 版本中,黑客可以利用泄露的 APP_KEY 构造一段恶意的加密数据发送给服务器,服务器用 APP_KEY 解密后会自动执行里面的恶意代码——这就是所谓的"反序列化远程代码执行漏洞"。

所以黑客的目标非常明确:从泄露的 .git 中找到 .env 文件,拿到 APP_KEY


三、实操:从流量中提取 APP_KEY

3.1 过滤 .git 相关请求

在 Wireshark 过滤器中输入:

http.request.uri contains ".git"

按回车。现在界面上只显示 URL 中包含 .git 的 HTTP 请求。

你会看到黑客发送了大量请求,访问了 /.git/config/.git/HEAD/.git/refs/ 等路径。这是典型的 Git 泄露利用行为——黑客在逐个探测 .git 目录的结构。

3.2 定位 objects 下载请求

在过滤结果中,重点关注访问 /.git/objects/ 路径的请求。这些请求的 URL 格式类似:

GET /.git/objects/ab/cdef1234567890... HTTP/1.1

这说明黑客正在下载 .git/objects 中存储的文件内容。下载下来的数据是 zlib 压缩的,需要解压才能看到原始内容。

3.3 导出 Git 对象数据

我们需要把黑客下载的 Git 对象导出来进行分析。有两种方法:

方法 A:Export Objects

操作路径:菜单栏 FileExport ObjectsHTTP

在弹出的窗口中,会列出所有通过 HTTP 传输的文件。找到路径中包含 objects 的条目,选中后点击 Save 保存到本地。

使用 zlib-flate 解压文件,如果还没有安装zlib-flate,需要先安装 qpdf:

# 安装 qpdf
sudo apt install qpdf -y

# 解压文件内容
zlib-flate -uncompress < c396a5ac5abcc71dd7145a5fd9b3b846434f86

方法 B:Show Packet Bytes(推荐)

这是最直观的方法,可以在 Wireshark 内部直接完成 zlib 解压并读取明文内容,无需将文件保存到本地再另行处理。

操作步骤如下:

第一步:定位目标响应包

在已过滤的 .git 请求列表中,找到一条访问 /.git/objects/ 路径的请求,点击选中。在数据包列表中,仔细确认你选中的是响应包而不是请求包。

判断方法:查看「Info」列,响应包的内容以 HTTP/1.1 200 OK 开头;请求包以 GET 开头。必须选响应包,因为我们要看的是服务器返回的文件内容,而不是客户端发出的请求。

第二步:在协议详情面板中定位 HTTP 数据体

选中正确的响应包后,查看 Wireshark 界面中间区域(数据包详情面板)。按照以下层级展开:

Data
  └── Data [...]
        └── [这里就是服务器返回的 zlib 压缩文件内容]

用鼠标单击 File Data 这一行,让它高亮选中(该行在下方的十六进制视图中也会同步高亮)。

第三步:打开 Show Packet Bytes 窗口

右键单击选中的 File Data 行 → 在弹出菜单中选择 Show Packet Bytes(显示分组字节)。

此时会弹出一个独立的「Packet Bytes」窗口,里面默认显示的是密密麻麻的十六进制字节,看起来像乱码——这是正常的,因为文件内容还是压缩状态。

第四步:配置解压参数(关键操作)

在弹出窗口的底部工具栏中,找到 Show as 下拉框:

  1. Show as 从默认的 ASCII / Hex 切换为 Compressed(压缩数据)

  2. 在旁边出现的第二个下拉框中,选择压缩格式 zlib

  3. 窗口内容会立刻自动刷新,从乱码变为可读的文本

第五步:读取解压后的明文内容

完成设置后,窗口显示区域会显示解压后的 Git 对象内容。Git 对象解压后的格式固定为:

t

例如,如果这个对象对应的是 .env 文件,你看到的内容会类似:

blob 1148 APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:cOu534xl/Yg6ckXz/12AaWgrlDQFoDNBzDDvQBgRsKM=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
...

blob 是 Git 的对象类型(表示普通文件内容),1148 是文件字节数,后面就是文件的完整内容。

注意事项

  • 如果解压后看到的是 committree 开头的内容,说明这个对象是 Git 的提交记录或目录结构索引,不是文件内容本身,换下一个 objects 请求继续查看。

  • 流量包中可能存在多个 objects 下载请求,需要逐个尝试,直到找到包含 .env 内容的那个对象。

3.4 在解压数据中查找 APP_KEY

通过上述方法,逐个查看导出或解压的 Git 对象内容。其中有一个对象的内容就是 .env 文件的全文。

在解压后的文本中,你会看到类似以下的内容:

APP_ENV=local
APP_KEY=base64:cOu534xl/Yg6ckXz/12AaWgrlDQFoDNBzDDvQBgRsKM=
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
...

这就是我们要找的核心证据。

如果对象较多,不确定哪个是 .env,也可以使用命令行批量解压后用 grep 搜索关键字 APP_KEY

b

3.5 问题 2 答案

黑客获取到的 APP_KEY 为:cOu534xl/Yg6ckXz/12AaWgrlDQFoDNBzDDvQBgRsKM=

注意:答案不包含前缀 base64:base64: 只是 Laravel 配置文件中的格式标记,表示后面的字符串是 Base64 编码的。真正的密钥值是冒号后面那一串。


评论