Java教程

渗透测试19 Java安全 JWT安全及与变异CASE注入等

本文主要是介绍渗透测试19 Java安全 JWT安全及与变异CASE注入等,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

由于各语言之间存在差异,导致会出现各种安全问题。

SQL注入

靶场及工具

  • web goat

防御SQL注入,其实就是session,参数绑定、存储过程这样的注入。

利用Session防御,session内容正常情况下是用户无法修改的

select * from users where user = "'" + session.getAttrbute("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语句。

JDBC编程之预编译SQL与防注入

JWT

JWT认证流程

一文讲解JWT用户认证全流程

image

加密算法(alg)

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

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

https://jwt.io

通过编码与解码修改JWT原来的值并重新添加之后,因为内容被修改,需要重新生成签名,这时候,可以尝试将加密算法改为None,经过编码之后与修改后的数据进行拼接,然后使用篡改后的JWT进行请求。

在HTTP传输过程中,Base64编码中的"=",", "+", "/"等特殊符号通过URL解码通常容易产生歧义,因此产生了与URL兼容的Base64 URL编码。

将编码后的==删除掉。

注意在修改后Token后,在请求数据包中,将Token信息填入到Authorization中。

JWT爆破攻击

需要有足够强大的爆破字典,可以进行尝试。

JWT结合SQL注入

这篇关于渗透测试19 Java安全 JWT安全及与变异CASE注入等的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!