AVA安全-JWT安全&预编译CASE注入

简介: AVA安全-JWT安全&预编译CASE注入

通过前期的 WEB 漏洞的学习,掌握了大部分的安全漏洞的原理及利用,但在各种脚本语言开发环境的差异下,会存在新的安全问题,其中脚本语言类型 PHP,Java,Python 等主流开发框架会有所差异。

Javaweb-SQL 注入攻击-预编译机制绕过

  1. SQL注入的防御

---防御 sql 注入:1.session2.参数绑定存储过程

利用 session 防御

---session 内容正常情况下是用户无法修改的

---select * from users where user = "'" +session.getAttribute("UserID") + "'";(session在服务器内)

参数绑定方式,利用了 sql 的预编译技术

---常用Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。

---Statement 该对象用于执行静态的 SQL 语句,并且返回执行结果。 此处的SQL语句必须是完整的,有明确的数据指示。查的是哪条记录?改的是哪条记录?都要指示清楚。

---PreparedStatement ,SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。(这里是PreparedStatement不允许一个占位符(?)有多个值,注入的语句也就不会被执行)

---在使用参数化查询的情况下,数据库系统不会将参数的内容视为SQL指令的一部分来处理

---而是在数据库完成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 语句。(原理类似堆叠注入,一条语句出现多条命令)

---构造语句(说实话我看不懂这个语句,应该是):

select id, hostname, ip, mac, status, description from servers where status <> 'out of order' order by " + case when(select substr(ip,{0},1)='{1}' from servers where hostname='webgoat-prd')

---根据报错构造Python脚本(webgoat在虚拟机里,不能用Python脚本跑)

---设置请求数据的数据头,和cookie

---设置请求的代理,也就是先发送给抓包工具

---resp为request请求(目标URL,请求头(XML格式),cookie,代理)

---如果webgoat-acc字符串在返回的json数据的第一个元素的主机名,就认为是对的,就输出结果(emmmm感觉不太懂,只理解了如果是Java语句的SQL如果是预编译的的话,基本不能注入。除非存在order by,可以用order by case when 来构造查询语句(具体构造也不太会,突然感觉408和数据库的重要性),来进行数据库的查询。其实这个Python代码感觉挺有用的,但是代码看的似懂非懂)

相关文章
|
7月前
|
存储 JSON 安全
解锁互联网安全的新钥匙:JWT(JSON Web Token)
解锁互联网安全的新钥匙:JWT(JSON Web Token)
101 0
|
4月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
370 0
|
6月前
|
存储 安全 前端开发
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
这篇文章讨论了认证和授权的概念,并探讨了设计权限认证框架的原则。它还比较了Cookie和Session的区别,并探讨了处理分布式部署时的Session保存问题。此外,文章还介绍了CSRF攻击及其防范方法,以及OAuth2.0、JWT令牌和SSO的概念。最后,文章提出了设计开放授权平台时需要考虑的因素。
101 0
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
|
7月前
|
安全 Java 数据库
Spring Boot 3 + JWT + Security 联手打造安全帝国:一篇文章让你掌握未来!
`Spring Security`已经成为`java`后台权限校验的第一选择.今天就通过读代码的方式带大家深入了解一下Security,本文主要是基于开源项目[spring-boot-3-jwt-security](https://github.com/ali-bouali/spring-boot-3-jwt-security)来讲解Spring Security + JWT(Json Web Token).实现用户鉴权,以及权限校验. 所有代码基于`jdk17+`构建.现在让我们开始吧!
675 1
 Spring Boot 3 + JWT + Security 联手打造安全帝国:一篇文章让你掌握未来!
|
12月前
|
安全 Java 数据安全/隐私保护
|
12月前
|
存储 机器学习/深度学习 JSON
【安全】如果您的JWT被盗,会发生什么?
【安全】如果您的JWT被盗,会发生什么?
|
12月前
|
存储 Web App开发 JSON
[安全 】JWT初学者入门指南
[安全 】JWT初学者入门指南
|
JSON 数据可视化 安全
JWT 鉴权插件上线!让你的 API 更安全!
API鉴权是保证API安全性和可用性的一项重要措施。通过API鉴权,系统可以对用户或者应用进行有效的身份认证和权限管理。 除了我们之前更新的 Basic Auth 鉴权插件,这次给大家带来 JWT 鉴权插件。
JWT 鉴权插件上线!让你的 API 更安全!
|
JSON 安全 算法
OAuth2 和 JWT - 如何设计安全的 API?
要比较JWT和OAuth2?首先要明白一点就是,这两个根本没有可比性,是两个完全不同的东西。
|
1月前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权