小迪渗透&JAVA安全(肆)

本文探讨了JWT(JSON Web Token)的安全性,指出了JWT的潜在风险,如可被修改伪造,并举例说明了JWT的身份验证攻击。同时,文章讨论了SQL注入的防御措施,包括使用session和预编译参数绑定。还提到了Java代码审计的重要性,并分享了相关资源链接以深入学习目录遍历、访问控制和XSS等安全问题。
摘要由CSDN通过智能技术生成


视频资源

40. JWT安全及预编译CASE注入(40-41)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
什么是 JWT?
JSON Web Token(JSON Web 令牌)是一种跨域验证身份的方案。JWT 不加密传输的数据,但能够通
过数字签名来验证数据未被篡改(但是做完下面的 WebGoat 练习后我对这一点表示怀疑)。

JWT 分为三部分,头部(Header),声明(Claims),签名(Signature),三个部分以英文句号.隔开。
JWT 的内容以 Base64URL 进行了编码。

头部(Header)
{
"alg":"HS256",
"typ":"JWT"
}

alg是说明这个 JWT 的签名使用的算法的参数,常见值用 HS256(默认),HS512 等,也可以为 None。HS256表示 HMAC SHA256。
typ说明这个 token 的类型为 JWT

声明(Claims)

{
"exp": 1416471934,
"user_name": "user",
"scope": [
"read",
"write"
],
"authorities": [
"ROLE_ADMIN",
"ROLE_USER"
],
"jti": "9bc92a44-0b1a-4c5e-be70-da52075b9a84",
"client_id": "my-client-with-secret"
}
JWT 固定参数有:
iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID 用于标识该 JWT

签名(Signature)
服务器有一个不会发送给客户端的密码(secret),用头部中指定的算法对头部和声明的内容用此密码进行加密,生成的字符串就是 JWT 的签名。
下面是一个用 HS256 生成 JWT 的代码例子
HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret)

1、用户端登录,用户名和密码在请求中被发往服务器
2、(确认登录信息正确后)服务器生成 JSON 头部和声明,将登录信息写入 JSON 的声明中(通常不应写入密码,因为 JWT 是不加密的),并用 secret 用指定算法进行加密,生成该用户的 JWT。此时,服务器并没有保存登录状态信息。
3、服务器将 JWT(通过响应)返回给客户端
4、用户下次会话时,客户端会自动将 JWT 写在 HTTP 请求头部的 Authorization 字段中
5、服务器对 JWT 进行验证,若验证成功,则确认此用户的登录状态
6、服务器返回响应
在这里插入图片描述

40.1 JWT

在这里插入图片描述

40.2 身份验证攻击-JWT修改伪造

在这里插入图片描述接上部分,产生歧义的”=“,”+“,”/“需要删除;
而第一部分说明的加密方法是none,所以第三部分为空就好。

40.3 SQL Injection(mitigation)

防御 sql 注入,其实就是 session,参数绑定,存储过程这样的注入。
利用 session 防御,session 内容正常情况下是用户无法修改的 select * from users where user = "'" + session.getAttribute("UserID") + "'";
参数绑定方式,利用了 sql 的预编译技术

String query = "SELECT * FROM users WHERE last_name = ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, accountName);
ResultSet results = statement.executeQuery();

上面说的方式也不是能够绝对的进行 sql 注入防御,只是减轻。
参数绑定方式可以使用下面方式绕过。
通过使用 case when语句可以将 order by后的 orderExpression表达式中添加select语句。

40.4 Java代码审计入门:WebGoat8

参考:https://www.freebuf.com/vuls/216457.html

涉及资源

https://jwt.io/#encoded-jwt
https://www.ctfhub.com/#Ichallenge
https:/www.zhihu.com/question/43581628
https://www.freebuf.com/vuls/216457.html
https://www.cnblogs.com/klyjb/p/11473857.html

41. 目录遍历访问控制XSS等安全问题

本次直播注重代码分析,熟悉 javaweb 开发结构,掌握 javaweb 代码审计流程,其次才是相关漏洞解释(因前期漏洞原理已基本讲解完
毕),通过本次直播大家务必学会分析相关代码路径,结构,框架等知识点。
在这里插入图片描述
在这里插入图片描述

涉及资源

https://pan.baidu.com/s/19-w0GeDVYvHH6yRz9cNpGw oms7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值