JAVA反序列漏洞原理及利用工具
Java反序列化漏洞原理
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,类ObjectInputStream类的readObject()方法用于反序列化。
下面是将字符串对象先进行序列化,存储到本地文件,然后再通过反序列化进行恢复的样例代码:
public static void main(String args[]) throws Exception {
String obj = "hello world!";
// 将序列化对象写入
public static void main(String args[]) throws Exception { String obj = "hello world!";// 将序列化对象写入文件object.db中FileOutputStream fos = new FileOutputStream("object.db");ObjectOutputStream os = new ObjectOutputStream(fos);os.writeObject(obj);os.close();// 从文件object.db中读取数据FileInputStream fis = new FileInputStream("object.db");ObjectInputStream ois = new ObjectInputStream(fis);// 通过反序列化恢复对象objString obj2 = (String)ois.readObject();ois.close();}
问题代码分析:
如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。
所以这个问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。
反序列化问题由来已久,且并非Java语言特有,在其他语言例如PHP和Python中也有相似的问题。@gebl和@frohoff的报告中所指出的并不是反序列化这个问题,而是一些公用库,例如Apache Commons Collections中实现的一些类可以被反序列化用来实现任意代码执行。WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些应用的反序列化漏洞能够得以利用,就是依靠了Apache Commons Collections。
测试方法:
1、人工审计源代码。
2、利用大佬共享的测试工具,进行测试。
修复建议
1、将服务器安装的JDK升级到官方最新版本,可以防范目前以往所有公布的Java反序列化漏洞。
2、对于weblogic中间件反序列化漏洞,需要及时打上最新的补丁,或者配置防火墙策略,屏蔽掉T3协议的访问,只开放对HTTP、HTTPS访问。
3、对于Jboss、tomcat等中间件的反序列化漏洞,可以将存在反序列化漏洞的jar包升级到最新版本,但特殊情况下,需要升级的jar包种类比较多,此修复建议很费时。
4、检测防火墙配置,是否开启对Java反序列化漏洞的防范策略。
JAVA反序列漏洞原理及利用工具相关推荐
- XSS漏洞原理和利用
XSS漏洞原理和利用 XSS漏洞的危害 1.窃取用户Cookie,如果用户Cookie被窃取,攻击者可以不通过密码,而直接登录用户账户 2.使用XMLHttpRequest构造模拟用户请求操作 3.X ...
- JAVA反序列化漏洞原理分析
反序列化漏洞原理分析 从序列化和反序列化说起 什么是序列化和反序列化? 简单来讲,序列化就是把对象转换为字节序列(即可以存储或传输的形式)的过程,而反序列化则是他的逆操作,即把一个字节序列还原为对象的 ...
- 00005在java结果输出_浅谈Java反序列化漏洞原理(案例未完善后续补充)
摘要: 0005,这个16进制流基本上也意味者java反序列化的开始:(2)HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果:以上意味着存在Java反序列化,可尝试构造pa ...
- 永恒之蓝漏洞原理及利用
本文转自行云博客https://www.xy586.top/ 文章目录 摘要 前提需要 原理 漏洞利用 摘要 什么是永恒之蓝 永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利 ...
- Java高危漏洞被再度利用 可攻击最新版本服务器
2019独角兽企业重金招聘Python工程师标准>>> 安全研究人员警告称,甲骨文在2013年发布的一个关键 Java 漏洞更新是无效的,黑客可以轻松绕过.这使得此Java高危漏洞可 ...
- 浅谈SQL注入漏洞原理及利用方式
1.SQL注入 原理: 在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行.漏洞产生于脚 ...
- java asm jndi_JNDI-Injection-Exploit JNDI注入利用工具
介绍 JNDI注入利用工具,生成JNDI链接并启动后端相关服务,可用于Fastjson.Jackson等相关 使用 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-I ...
- fastjson反序列化漏洞原理及利用
重要漏洞利用poc及版本 我是从github上的参考中直接copy的exp,这个类就是要注入的类 import java.lang.Runtime; import java.lang.Process; ...
- 文件上传漏洞原理和利用
文件上传 1.前段选择文件,提交文件 2.浏览器形成POST MultiPart报文发送到服务器 3.服务器中间件接收到报文,解析后交给后端代码进行处理 4.后端代码将上传的文件内容写入到临时文件中( ...
最新文章
- 服!AI 让兵马俑“活”起来,颜值惊艳!
- 网页怎么在图片上添加文字_想给图片添加文字,留白,添加小印章?用手机三步搞定...
- gRPC异步处理应答
- hdu3313 最大流找关键点,或者最短路找关键点.
- SpringBoot项目中,如何更规范的使用PageHelper分页?
- 矢量切片_数据粒度均衡的二维矢量瓦片构建方法
- xml验证 java代码,使用Java代码进行XML验证
- PHP 拓展 开发,开发php扩展
- 性能优化之MySQL调优篇
- 170329、用 Maven 部署 war 包到远程 Tomcat 服务器
- sql语句和java的关系_java中Statement 与 PreparedStatement接口之间的关系和区别
- STM8学习笔记---按键KEY
- 华为s8600手机驱动_华为自研驱动IC已流片,最快今年量产
- xcode 5中调试技巧
- LEWITT莱维特STREAM4x5、DGT260声卡安装调试教程
- 小学生信息奥赛学c语言,适合小学生的信息学奥赛(NOIP)课程来袭!
- 利用npm bin创建可执行命令实现项目代码规范自动化
- 白岩松人生哲学-听后感
- vue生成证书模板 并支持图片和PDF格式下载的小demo
- mac系统可以进行软件测试吗,iPhone和Mac如何加入Apple Beta版软件测试计划