侧边栏壁纸
博主头像
未完待续

记录电影、影像、生活,以及偶尔的折腾。

  • 累计撰写 4 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

kali实战:从第一个靶场开始

有心人无名氏
2026-08-25 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

此内容并非教学,而是一个实战笔记,所有操作均在虚拟机上进行

1:安装常用基础工具

打开终端:

执行:

sudo apt install -y vim curl wget git tree htop net-tools tmux unzip p7zip-full

这些是 Linux 和安全学习最常用的基础工具:

工具

用途

vim

编辑配置文件

curl

HTTP请求测试

wget

下载文件

git

代码管理

tree

查看目录结构

htop

查看CPU/内存

net-tools

ifconfig等网络命令

tmux

多窗口终端

7zip

压缩解压

2:安装 Kali Top10 工具包

Kali 有一个官方精选工具集合:

执行:

sudo apt install kali-tools-top10 -y

会安装:

  • Nmap(端口扫描)

  • Metasploit Framework(漏洞利用框架)

  • Wireshark(抓包分析)

  • Burp Suite(Web安全)

  • SQLmap(SQL注入测试)

  • Hydra(密码审计)

  • John(密码破解)

这是最适合入门的一套

3:安装中文 man 手册(可选)

如果希望查看命令帮助时有中文:

sudo apt install manpages-zh -y

不过安全工具文档大部分还是英文,所以不是必须。

4:创建 Kali 快照(现在非常适合)

现在是一个干净状态。

关闭 Kali:

sudo poweroff

VirtualBox:

Kali

快照

拍摄

名称:

Kali-2026.3-base

以后:

  • 安装工具失败

  • 配置搞乱

  • 实验破坏系统

直接恢复。

5.初始化 Metasploit

Metasploit 是 Kali 最核心的渗透测试框架之一。

先检查:

msfconsole

第一次启动可能需要几十秒。

如果看到:

msf6 >

说明成功。

然后退出:

exit

6.配置数据库(推荐)

打开另一个终端执行:

sudo systemctl enable postgresql

启动:

sudo systemctl start postgresql

初始化:

msfdb init

检查:

msfconsole

进入后:

db_statusdb_status

正常显示:

[*] Connected to msf. Connection type: postgresql

7.安装练习靶场

因为学习 Kali 最重要的是合法练习环境

1. OWASP Juice Shop

练 Web:

  • SQL 注入

  • XSS

  • 身份认证

  • 文件上传

2. DVWA

经典 PHP 漏洞环境。

8.安装 OWASP Juice Shop

这是目前非常适合学习 Web 安全的靶场。

包含:

  • SQL注入

  • XSS

  • 登录绕过

  • 文件上传

  • JWT漏洞

安装 Docker:

sudo apt install docker.io docker-compose -y

启动:

sudo systemctl enable docker --now

运行:

sudo docker run -d \

--name juice-shop \

-p 3000:3000 \

bkimminich/juice-shop

说明:

  • -d:后台运行

  • --name juice-shop:容器名称

  • -p 3000:3000:把网站映射到 Kali 本机 3000 端口

第一次运行会下载镜像,可能需要几分钟。

完成后检查:

docker ps

正常应该看到类似:

CONTAINER ID IMAGE PORTS

xxxx bkimminich/juice-shop 0.0.0.0:3000->3000/tcp

然后打开 Kali 浏览器:

输入:http://127.0.0.1:3000

如果看到 Juice Shop 首页:

🎯 第一个 Web 安全靶场搭建完成。

9.安装代理脚本

虚拟机的内的网络如果没有走代理,将无法访问国外网站

因此需要虚拟机使用本机的代理

1.编辑 zsh 配置

执行:

nano ~/.zshrc

拉到最下面。

proxy-on() {

export http_proxy="http://10.0.2.2:7897"

export https_proxy="http://10.0.2.2:7897"

export HTTP_PROXY="http://10.0.2.2:7897"

export HTTPS_PROXY="http://10.0.2.2:7897"

echo "代理已开启"

}

proxy-off() {

unset http_proxy

unset https_proxy

unset HTTP_PROXY

unset HTTPS_PROXY

echo "代理已关闭"

}

保存:

Ctrl + O

Enter

Ctrl + X

2.重新加载 zsh 配置

执行:

source ~/.zshrc

开启:

proxy-on

应该显示:

代理已开启

查看:

env | grep -i proxy

应该看到:

http_proxy=http://10.0.2.2:7897

https_proxy=http://10.0.2.2:7897

测试:

proxy-on

curl https://www.google.com -I

关闭:

proxy-off

3.把 kali 用户加入 docker 组

执行:

sudo usermod -aG docker $USER

然后查看:

groups

应该会看到:

kali docker

10.Burp Suite + Firefox 浏览器代理 + Juice Shop 抓包

目标:

打开 Juice Shop → 浏览器访问 → Burp 截获 HTTP 请求 → 修改请求 → 理解 Web 渗透基础流程

这是安全学习中最重要的一步。


第1步:启动 Burp Suite

在 Kali 终端执行:

burpsuite

第一次启动可能会出现:

Burp 启动选项

选择:

Temporary project

然后:

Use Burp defaults

进入主界面。


第2步:确认 Burp 代理监听

进入:

Proxy

Proxy settings

应该看到:

127.0.0.1:8080

状态:

Running

默认就是这个。


第3步:配置 Firefox 代理

Kali 自带 Firefox。

打开:

右上角菜单:☰

进入:设置

搜索:代理

找到:网络设置

点击:设置

选择:手动代理配置

填写:

HTTP代理:127.0.0.1

端口:8080

勾选:也将此代理用于 HTTPS

确定。


第4步:关闭 Burp 拦截(先)

Burp:

进入:Proxy

看到:Intercept is on

点击:Intercept is off

否则浏览网页会卡住。


第5步:测试代理

Firefox 输入:http://127.0.0.1:3000

打开 Juice Shop。

然后回 Burp:

进入:

Proxy

HTTP history

你应该看到大量请求:

例如:

GET /

GET /main.js

GET /api/Products

如果看到:

🎉 成功!

说明:

Firefox

Burp

Juice Shop

链路建立。


第6步:开启第一个拦截实验

Burp:

打开:Proxy

点击:Intercept is on

Firefox 刷新:127.0.0.1:3000

这时候页面会卡住。

因为请求被 Burp 拦截。

你会看到:

例如:

GET / HTTP/1.1

Host: 127.0.0.1:3000

User-Agent: Firefox

点击:

Forward

请求继续。


第7步:认识 Burp 三个核心功能

以后主要用:

1. Proxy

抓包:浏览器 ↔ 网站


2. Repeater

修改请求:

例如:

原请求:id=1

改:id=2

重新发送。


3. Intruder

自动测试:

例如:

密码爆破

参数枚举

11.Burp CA 证书安装

Firefox 通过 Burp 访问 HTTPS 网站时,需要安装 Burp CA 证书。

第一步:关闭拦截(方便操作)

在 Burp:

Proxy → Intercept

点击:Intercept on

让它变成:Intercept off


第二步:访问 Burp 证书页面

Firefox 地址栏输入:http://burp

注意:

不是:https://burp

就是:http://burp


应该会出现:Welcome to Burp Suite

页面。

点击:CA Certificate

下载:cacert.der


第三步:导入 Firefox

Firefox:

右上角菜单 ☰

进入:设置

搜索:证书

进入:查看证书


选择:证书颁发机构

点击:导入

选择:cacert.der


弹窗:

勾选:信任此 CA 来识别网站

然后确定。


第四步:测试

重新打开:https://www.google.com

如果没有证书错误,说明成功。

然后回到 Juice Shop:http://127.0.0.1:3000

Burp 已经拦截到了:GET http://10.0.2.15:3000/

请求内容:

GET / HTTP/1.1 Host: 10.0.2.15:3000 User-Agent: Firefox

说明整个链路已经打通:

Firefox ↓ Burp Proxy 127.0.0.1:8080 ↓ Juice Shop 10.0.2.15:3000

现在渗透测试环境已经搭建完成。


下一步:先关闭欢迎弹窗

点击 Firefox 里的:Dismiss

然后回到 Juice Shop 首页。


12.设置 Burp Target Scope(养成好习惯)

现在 Burp 会抓所有流量,包括:

  • Google

  • Firefox 更新

  • Kali 服务

我们只关注 Juice Shop。

操作:

Target ↓ Scope ↓ Add

Burp:

输入:http://10.0.2.15:3000

保存。


让 Burp 只显示目标流量

进入:

Proxy ↓ HTTP history

然后找到:

Filter

开启:Show only in-scope items

这样以后只看 Juice Shop。


熟悉第一个抓包

现在保持:

Proxy ↓ Intercept ↓ Intercept is ON

浏览器点击:Account

或者:登录

Burp 会停住请求。

会看到类似:POST /rest/user/login

里面有:{
"email":"xxx",
"password":"xxx"
}

这就是实际网站登录请求。


学习 Repeater(最重要)

抓到请求后:

右键:

Send to Repeater

然后:

Repeater

可以:

  • 修改参数

  • 重放请求

  • 看服务器返回

这是以后分析漏洞最常用功能。

Juice Shop 登录抓包

步骤:

  1. 浏览器点击右上角头像

  2. 点击登录

  3. 随便输入:

邮箱:

test@test.com

密码:

123456

  1. Burp 拦截

开始分析第一个 HTTP 登录请求。

请求:

POST http://10.0.2.15:3000/rest/user/login

这是 Juice Shop 的登录接口。

{
"email": "123",
"password": "231"
}

这说明:

✅ Firefox 代理成功
✅ Burp 拦截成功
✅ Juice Shop 登录接口被捕获
✅ 可以进入下一阶段学习


现在先做第一个操作:发送到 Repeater

这个是 Burp 最核心的功能。

在当前请求列表上:

鼠标右键:

Send to Repeater

或者快捷键:

Ctrl + R

然后点击顶部:

Repeater

会看到这个请求。


Repeater 是干什么的?

简单理解:

现在:

浏览器 → 网站

以后:

你 → Burp → 网站

你可以修改:

原来的:

{
"email":"123",
"password":"231"
}

改成:

{
"email":"test@test.com",
"password":"123456"
}

然后点击:

Send

观察服务器返回。


现在先不要研究漏洞

先熟悉三个地方:

1. Headers(请求头)

例如:

Host: 10.0.2.15:3000

告诉服务器访问哪个网站。

2. Body(请求数据)

这里:

{
"email":"123",
"password":"231"
}

这是登录提交的数据。

3. Response(响应)

服务器返回:

例如:

成功:

{
"authentication": "xxxxx"
}

失败:

{
"error": "Invalid email or password"
}

观察 Response

重点看三个东西:

1. HTTP 状态码

例如:

成功:

200 OK

失败:

401 Unauthorized


2. 返回数据

Juice Shop 登录成功会返回:

{
"authentication": {
"token": "xxxxx"
}
}

这个 token 很重要。

它相当于:

网站给你的身份证

以后访问用户功能都会带它。


3. 修改参数测试

发送一次以后。

回到左侧,把:

{
"email":"123",
"password":"231"
}

改成:

{
"email":"admin@juice-sh.op",
"password":"admin"
}

再点:

Send

观察区别。


顺便解释一下刚才的流程

刚才做的是:

浏览器:

输入账号密码
|

生成 HTTP 请求
|

Burp 拦截
|

发送 Repeater
|

人工修改
|

发送服务器

这就是安全测试人员每天大量使用的流程。

现在分析第一个登录接口。之后会接触到:

  • HTTP 状态码

  • JWT Token

  • Cookie

  • API 测试

  • 第一个 Juice Shop 漏洞思路

目前环境已经全部就绪。

13.观察正常登录请求

现在不要猜账号密码。

自己注册一个账号。

回浏览器 Juice Shop:

打开:

http://10.0.2.15:3000

点击:

Account

Login

Not yet a customer?

注册:

例如:

邮箱:

test123@test.com

密码:

Password123!

注册完成。


然后登录。

Burp 会再次拦截:

POST /rest/user/login

这一次应该返回:

200 OK

并且 Response 里面会有:

类似:

{
"authentication": {
"token": "eyJ..."
}
}

这个就是:

JWT Token

后面学习:

  • Cookie

  • JWT

  • 权限控制

  • 越权漏洞

  • Juice Shop 第一个漏洞

都会用到它。

拆解 Response。


1. 请求部分

发送:

POST /rest/user/login HTTP/1.1
Host: 10.0.2.15:3000

Body:

{
"email": "test123@test.com",
"password": "Password123"
}

这是你刚注册的测试账号。


2. 返回状态码

右侧第一行:

HTTP/1.1 200 OK

这表示:

✅ 登录成功

对比刚才:

失败:

401 Unauthorized

成功:

200 OK


3. 重点:JWT Token

Response 里面:

{
"authentication":{
"token":"eyJ0eXAiOiJKV1QiLCJhbGci..."
}
}

这个长字符串就是:

JWT Token

全称:

JSON Web Token

它相当于网站给你的“登录凭证”。


JWT 结构

你看到:

eyJ0eXAiOiJKV1QiLCJhbGci...

实际上由三部分组成:

Header.Payload.Signature

例如:

xxxxx.yyyyy.zzzzz

三个部分:


① Header

告诉服务器:

使用什么算法。

例如:

{
"alg":"HS256",
"typ":"JWT"
}


② Payload

保存用户信息。

例如:

{
"email":"test123@test.com",
"bid":6
}

你的截图下面已经看到:

"bid":6,
"email":"test123@test.com"


③ Signature

签名。

作用:

防止别人修改 Payload。


14.下一步实验:查看 JWT

复制 token。

打开:

https://jwt.io

(这是学习 JWT 常用工具)

把 token 粘贴进去。

会看到:

Header:

{
"alg":"HS256"
}

Payload:

类似:

{
"id":6,
"email":"test123@test.com"
}


15.学习 Burp 的另一个核心:Authorization

登录以后。

浏览器访问:

比如:

Basket

或者:

Your Profile

然后 Burp 抓一个请求。

你会发现请求里面多了一行:

类似:

Authorization: Bearer eyJ...

这个就是:

后续请求携带登录身份

流程:

登录
|

服务器返回 JWT
|

浏览器保存 Token
|

以后每次请求带 Token
|

服务器识别你是谁


下一步操作

现在回浏览器:

  1. 关闭 Burp Repeater 标签不用动

  2. 回 Juice Shop

  3. 点击右上角:

Account

或者:

Basket

  1. Burp 拦截新的请求

找到:

Authorization: Bearer xxxx

下一阶段开始学习:

  • JWT 在 Web 安全中的作用

  • 为什么 Token 泄露危险

  • Juice Shop 第一个真实漏洞练习

现在已经完成了 Web 安全学习里非常重要的一环。

搭的环境和流程已经和真实渗透测试环境很接近了。

登录后的认证请求,这一步比刚才更关键。

从抓包可以看到:

请求:

GET /rest/user/whoami?fields=email HTTP/1.1
Host: 10.0.2.15:3000

重点在这里:

Authorization: Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOi...

这就是刚才说的 JWT Token 身份认证


现在把整个流程串起来

刚才完成的是:

① 输入账号密码

POST /rest/user/login



② 服务器验证



③ 返回 JWT



④ 浏览器保存 JWT



⑤ 请求用户信息

GET /rest/user/whoami

携带:

Authorization: Bearer JWT

服务器看到:

Authorization: Bearer xxxx

就知道:

这是已经登录的用户


下一步:认识 JWT 内容

先不要攻击,先学分析。

复制这一段:

eyJ0eXAiOiJKV1QiLCJhbGciOi...

注意:

只复制:

Authorization: Bearer 后面的内容

不要复制:

Bearer

然后打开:

https://jwt.io

把 Token 粘进去。

会看到:

类似:

{
"typ":"JWT",
"alg":"RS256"
}

或者:

{
"alg":"HS256"
}


Payload

你应该能看到类似:

{
"data":{
"id":6,
"email":"test123@test.com"
}
}

或者:

{
"id":6,
"email":"test123@test.com"
}


这里有一个非常重要的安全知识:

JWT 默认只是:

编码,不是加密

也就是说:

任何拿到 Token 的人,都可以看到 Payload。

但是不能随便修改,因为有:

Signature

签名校验。


16.下一步实验(Juice Shop 第一个漏洞)

开始做第一个真实漏洞:

Broken Authentication(认证绕过)

目标:

看看 JWT 是否保护正确。

现在在 Burp:

切回:

Proxy
→ HTTP history

找到:

GET /rest/user/whoami?fields=email

右键:

Send to Repeater

然后:

在 Repeater 里:

把这一行:

Authorization: Bearer eyJ...

改成:

Authorization: Bearer aaa

点击:

Send

观察返回。

正常应该:

401 Unauthorized

说明:

JWT 校验正常。


然后继续学习:

  1. JWT 篡改原理

  2. Burp Decoder 解码 JWT

  3. Juice Shop 的第一个官方挑战

  4. 如何使用 Intruder 自动测试

刚才做的测试:

把:

Authorization: Bearer eyJ0eXAiOiJKV1Qi...

改成:

Authorization: Bearer aaa

然后 Send。

返回:

HTTP/1.1 304 Not Modified

这里有一点需要注意:

304 并不是 JWT 校验结果。

它是 HTTP 缓存状态,说明这个请求没有返回新的内容。

原因是:虽然改了 Authorization,但是请求里面还保留了:

Cookie: language=en; welcomeBanner_status=dismiss; token=xxxxx

注意这里:

Cookie:
token=xxxxx

Juice Shop 同时支持:

  1. Header 认证:

Authorization: Bearer JWT

  1. Cookie 认证:

token=JWT

所以你改掉 Authorization 后,服务器可能仍然从 Cookie 里面读取 token。


下一步:真正测试 JWT

在 Repeater 里:

找到这一行:

Cookie: language=en;welcomeBanner_status=dismiss;token=xxxxx

删除:

;token=xxxxx

变成:

Cookie: language=en;welcomeBanner_status=dismiss

然后保持:

Authorization: Bearer aaa

再次点击:

Send


正常结果应该变成:

HTTP/1.1 401 Unauthorized

类似:

Invalid token


然后做第二个测试

恢复:

Authorization: Bearer 原来的JWT

但是删除:

Cookie里的token

Send。

如果返回:

200 OK

说明:

Authorization Bearer 是主要认证方式。


现在已经掌握 Burp 一个核心技能:

修改请求 → 重放 → 对比响应

这就是以后:

  • SQL注入

  • XSS

  • 越权

  • JWT攻击

  • 参数篡改

全部都会用到的流程。


解释一下你刚刚学到的东西

现在这个请求实际上有三个身份来源:

1. Authorization Header

Authorization: Bearer JWT

标准 API 登录方式。

token=JWT

浏览器保存方式。

3. 缓存控制

If-None-Match

HTTP 缓存机制。


在真实渗透测试中,经常会遇到:

  • 改了参数但是响应没变化

  • 改了 Token 但是结果一样

  • Burp 显示 304

很多新人会误以为漏洞不存在。

实际上只是被缓存干扰。

只要删掉 If-None-Match 再 Send,基本就能正常

0
博主关闭了所有页面的评论