前言:可以下载一个灵境靶场,不需要复杂的安装环境,进入靶场看,
网址:https://github.com/414aaj/LingJing/releases/tag/0.4.7

- JWT 签名核心机制
JWT(JSON Web Token)由 Header.Payload.Signature 三部分组成,签名是保障令牌完整性与真实性的核心:
- 作用:防止客户端篡改令牌内容,确保令牌在传输与存储过程中未被恶意修改
- 常用算法
- 对称加密:
HMAC-SHA256(HS256) - 非对称加密:
RSASSA-PKCS1-v1_5、ECDSA、RSASSA-PSS
- 对称加密:
- 关键原则:令牌在交付客户端前必须签名,服务端接收后必须先验证签名再执行其他操作在完成搜索jwt密钥爆破脚本,尝试通关webgoat密钥伪造关卡,我们可以先试着了解一下,cookie,token,session通俗的说session,就是用户输入的账号号密码,在服务器,防止不明身份的用户执行违法的操作,但是用户的每一次操作不可能输入一次账号和密码于是有了token验证生成签名和时间戳等,确保身份的合法性Session:服务器存信息,给用户一个 '编号'(依赖服务器存储)Token:用户带信息,服务器只验真伪(不依赖服务器存储,更适合多服务器 / APP 场景)
- 比如:1.攻击者拿到自己的 JWT:
header.payload.signature- 解码 payload 看到:
{"user_id":123, "role":"user"}(普通用户) - 把
role改成"admin",重新编码 payload - 构造新 Token:
原header.篡改后的payload.随便填(甚至把 signature 删掉) - 服务器收到后,直接解析 payload 就用,没验证签名 → 攻击者变成管理员。
- 认证方式:
Authorization头携带 JWT 令牌,且令牌采用了alg: none无签名模式(从响应反馈可佐证)
- 解码 payload 看到:
靶场第六关:服务器没验证签名
'未签名 Token 提权',

靶场第六关:翻译过后我们可以看出,这是一个可以投票重置的关卡,我们需要以一个普通用户的身份,行使管理员权限,造成水平越权


















