Web安全
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入【1】
07SQL 注入【2】
08SQL注入 Labs
08SQL注入速查表
09XSS
09跨站脚本攻击【XSS】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
API 安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL【1】
11GraphQL【2】
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
小程序
小程序抓包
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
-
+
首页
18JWT Labs
靶场地址:https://portswigger.net/web-security/all-labs#jwt ## 通过未验证的签名绕过 JWT 身份验证 任务:修改会话令牌访问管理面板`/admin`,然后删除用户`carlos`。 登录帐户:`wiener:peter` 1、在burp的应用市场中下载【JWT Editor】  2、登录系统后,在【http history】中发现有高亮部分,点击后发现高亮部分都是使用了JWT认证。  3、点击【/my-account?id=wiener】路径的请求包,发送到repeater模块中,在【JSON Web Token】模块中自动解码了JWT的头部和Payload部分。  4、将Payload部分的wiener换为administrator,路径修改为/admin  请求成功  5、在响应包的模块【render】中发现delete功能。  6、找到删除用户的链接,`/admin/delete?username=carlos`  7、删除成功   ## 通过有缺陷的签名验证绕过 JWT 身份验证 任务:修改会话令牌以访问管理面板`/admin`,然后删除用户`carlos`。 登录帐户:`wiener:peter` 1、使用账户登陆后,同样有高亮部分为JWT认证模式。  2、修改原有名称,改为administrator,再访问/admin路径。    报了401,缺乏目标资源要求的身份验证凭证。 3、原有的签名算法为RS256,现在修改`none`会怎么样呢? 如果服务端支持 `"alg": "none"` 且不做验证,攻击者就可以删除签名绕过验证。  然后在JWT字符中删除掉签名部分,保留点`.`。  4、找到删除用户链接。   5、删除成功。   ## 通过弱签名密钥绕过 JWT 身份验证 任务:暴力破解网站的密钥,获取密钥后,用它对修改后的会话令牌进行签名,访问管理面板的权限`/admin`,然后删除该用户`carlos`。 登录帐户:`wiener:peter` 1、修改Payload中的sub为administrator,然后访问`/admin`路径   2、复制JWT的值,通过kali中的hashcat破解密钥。 ```txt eyJraWQiOiIwZmRmYjNiYy1mMDE2LTQ5NDItYTEyNy05YWFmOWFhZjYxNTMiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc1NTA3NDAwOCwic3ViIjoiYWRtaW5pc3RyYXRvciJ9.X-jEPb4bwH7ybTwSCRWL4MoVm_6P1Eww2cOORLkZIvA ``` 字典:https://github.com/wallarm/jwt-secrets/blob/master/jwt.secrets.list 密钥为:`secret1` 3、伪造签名密钥,在【JWT Editor】插件中,选择新创建一对密钥。  4、点击生成。  5、将密钥`secret1`进行Base64编码后,替换掉生成的K值。  点击ok 6、返回响应包中的【JSON Web Token】选项卡,点击sign,选择生成的密钥。   7、再次选择发包,响应码为200,成功。  8、成功删除。     ## 通过 jwk 标头注入绕过 JWT 身份验证 任务:修改并签署一个 JWT,该 JWT 允许您访问 的管理面板`/admin`,然后删除用户`carlos`。 登录帐户:`wiener:peter` 1、登录账户后,观察请求包,发现当前的JWT签名算法为【RS256】。  2、同样在【JWT Editor】插件中新创建一个RSA的key。  点击生成后,再点击完成   3、返回请求包中,将payload中的sub修改为administrator  4、点击底部的【Attack】,选择**Embedded JWK**,出现提示时,选择新生成的 RSA 密钥,然后单击**OK**。  5、将路径修改为`/admin`,之后成功访问管理面板。  6、删除成功。   
毛林
2025年9月7日 11:24
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码