Skip to main content

JWT渗透相关

·125 words·1 min
IIIIIIIIIIII
Author
IIIIIIIIIIII
A little bit about you

JWT渗透相关
#

介绍
#

JSON Web Token(JWT)。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。这使得JWT成为高度分布式网站的热门选择,在这些网站中,用户需要与多个后端服务器无缝交互。

分为三个部分组成

Header-payload-Signature(签名)

工作流程:post提交表单后,后端验证完成生成一个jwt,接下来返回该jwt至客户端,随后请求中带上该jwt,即可工作。

5、作为请求头可以跨域工作

对比cookie-session

1、JWT数据量小,传输速度快
2、由于是json,JWT是跨语言的,应用广
3、更适用于移动端,因为它们不支持cookie
4、避免csrf,因为不依赖cookie

头:

{
  "alg": "HS256",	#签名算法 HMAC SHA256
  "typ": "JWT"		#统一为JWT
}

payload

{
  "sub": "1234567890",
  "name": "Helen",
  "admin": true
}

Signature(验证)

实验1-不验证签名
#

Lab: JWT authentication bypass via unverified signature 不会验证签名
#

https://portswigger.net/web-security/jwt/lab-jwt-authentication-bypass-via-unverified-signature

实现修改用户为admin

nmap
NMAP扫描

在你登录上去后产生JWT里面对应了你的用户名信息

放入到工具扫描可以得到

nmap
NMAP扫描

为了我们修改可以使用JWTTOOL -T 修改 或者使用BP插件修改

nmap
NMAP扫描

nmap
NMAP扫描

看看生成的用户修改没

nmap
NMAP扫描

我们访问/admin重新发包

eyJraWQiOiJkOTE3NDA3My1lMTcwLTQ4NDctOTAwMC04ZTcxMzY1Yjg1YmUiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc1NTA1NjQzMSwic3ViIjoiYWRtaW5pc3RyYXRvciJ9.pQxVLaYatgGTpT24U6fh5Le3WacEkOP5_x2KW-Rg6_sVClGmUfgq1CXxHfUjQyjSGnJBIuiSoAdBS7u0m9MMdgcEz-NNPtc6CPUOcDZ2_coG9IlMFRd1sC6QOvgBTglRC4vzVMySrixSEWGDyr9cXGFGR3WhFb38dtCRHKxSTPDTC33QeqvfCtYWDqkPoYzEJ4766II_3tEYB3sMHWlveWKPuiBq7P9jg-N2y3aaToNsM_rSg8733ev8BJtkoJzoPmXlE6dhoNvdwKALYZ0Gpa1r-TbjAY0cdREhjoSuhZWjp_RXok9ddex4DDZDZwjRoh-JebOvzIng_tIgIAbDbA

nmap
NMAP扫描

成功进入管理员界面删除用户即可通过 删除也要覆盖JWT进行绕过因为他并没有验证签名

nmap
NMAP扫描

实验2 对方验证不要签名的JWT
#

JWT authentication bypass via flawed signature verification
#

https://portswigger.net/web-security/jwt/lab-jwt-authentication-bypass-via-flawed-signature-verification

目的也是删除用户登录admin网页

这个设置缺陷是对方接收未签名的JWT就是alg为none

这里-H 可以看到可以输入 -X a 直接让JWT签名为空不用手动输入了

nmap
NMAP扫描

nmap
NMAP扫描

我们来发包验证

nmap
NMAP扫描

可以看到成功进入

eyJraWQiOiJmZWIyMjFkOS00MWI0LTQwNGEtOGUyZi1lNjU4Mzk5YjM0MDAiLCJhbGciOiJub25lIn0.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc1NTA1NzgxNCwic3ViIjoiYWRtaW5pc3RyYXRvciJ9.

nmap
NMAP扫描

实验3 签名弱口令
#

JWT authentication bypass via weak signing key
#

https://portswigger.net/web-security/jwt/lab-jwt-authentication-bypass-via-weak-signing-key

签名也是可以爆破的,如果你爆破出签名就可以随意利用前提是他的加密算法符合

使用DudeSuite 工具爆破也可以使用john hashcat

注意爆破要输入完整的JWT

输入整个 JWT 可以确保爆破过程的完整性和准确性。有些情况下,JWT 的负载中可能包含一些与验证逻辑相关的信息(比如过期时间、用户角色等),虽然这些信息不是直接参与签名计算,但在某些场景下,它们会影响到签名验证的最终结果。通过使用完整的 JWT,工具可以模拟整个签名验证的过程,更准确地判断找到的密钥是否是正确的签名密钥 。

nmap
NMAP扫描

拿到密钥是secret1
可以直接到官网输入密钥修改了 但是前面两个实验是不可以直接修改的必须使用工具

https://www.jwt.io/

nmap
NMAP扫描

发包验证成功删除即可通过

nmap
NMAP扫描

Related

Wechat渗透相关抓包反编译
·56 words·1 min
XuanJi靶机---难度low知识点-Git,TOTP
·45 words·1 min
红日靶场4
·242 words·2 mins
nuclei-POC编写
·248 words·2 mins
自动化漏洞扫描工具
·65 words·1 min