目录

一、简介:

二、原理:

2.1、Java对象:

2.2、Java 序列化:

2.3、Java 反序列化:

三、函数:

四、工具:

4.1、ysoserial 0.0.4版

4.2、 payload生成器

4.2.1、介绍:

4.3、提示:

五、准备:

5.1、WebGoat

5.2、 环境变量的配置:

5.2.1、方法一:手工配置

5.2.2、方法二:工具配置

5.2.3、JDK的配置:

5.2.4、JRE的生成:

5.3、错误+安装

六、WebGoat

6.1、分析:

6.2、插件

6.2.1、Java Deserialization Scanner

6.3、漏洞利用:

6.3.1、大体思路:

6.3.2、具体思路


(大家都在学习)


一、简介:

序列化也就是将数据拆成一小块小块保存到文件中(每块设置编号),反序列化就是重现组合起来

(1)序列化就是将数据转化成一种可逆的字符串(利于存储或者传输),字符串还原原来结构的过程叫做反序列化

(2)序列化后,方便保存和传输(保留成员变量,不保留函数方法)

(3)数据(对象)--------序列化---------->字符串-----------反序列化-------->数据(对象)


二、原理:

2.1、Java对象:

①多种方式来创建对象,没被回收都可复用此对象(存在于JVM中的堆heap内存中),当JVM处于运行状态,对象就存在;反之,对象就不存在。

②在真实的环境中,通过序列化,实现在JVM中的对象和字节数组流之间转换,实现将这些对象持久化保存下来,在需要的时候再使用。

2.2、Java 序列化:

完整性+可传递性

①将对象转换为字符串等字节数组流过程(保存属性状态,不保存对象中的方法),从而实现对象持久化,以便传输(可移植性)或保存在本地文件中,将序列化对象写入文件之后,可从文件中读取,并且进行反序列化。

2.3、Java 反序列化:

将一个对象的字节序列(字符串)中保存的对象状态及描述信息,通过反序列化,恢复成 Java 对象的过程(重建)


三、函数:

序列化:ObjectOutputStream类–> writeObject()(写入)

反序列化:ObjectInputStream类 -->readObject() (读取)

Serializable(接口) :(序列化与反序列化的类必须使用)一个标志性接口,标识在 JVM 中进行序列化,为该类自动生成一个序列化版本号。

serialVersionUID(类属性):序列化版本号(默认提供),给 JVM 区别同名类。

transient(关键字):不希望特定属性参与序列化,使用这个关键字标注该属性。


四、工具:

4.1、ysoserial 0.0.4版

(现在最新的是0.0.6)

链接:https://pan.baidu.com/s/18q2ruwCFGI1vMvl9j7lT3w?pwd=hj12 
提取码:hj12

4.2、 payload生成器

angelwhu/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (github.com)https://github.com/angelwhu/ysoserial

frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (github.com)https://github.com/frohoff/ysoserial

4.2.1、介绍:

ysoserial payload是创建了一个URLStreamHandler的子类:SilentURLStreamHandler

SilentURLStreamHandler重写了getHostAddress(URL u),屏蔽了返回值,因此在生成payload的时候、也就是序列化的时候,不会触发dns查询。

4.3、提示:

上上述文件需要经过Maven编译,或者Gradle编译(Gradle更简单,以后应该会超过Maven)成.jar文件,后才能使用

【Maven使用】IDEA使用Maven进行文件打包+命令含义+错误分析https://blog.csdn.net/qq_53079406/article/details/124322125?spm=1001.2014.3001.5501

【Gradle】问题解析+下载安装+环境配置+验证安装https://blog.csdn.net/qq_53079406/article/details/124312186?spm=1001.2014.3001.5502

IntelliJ IDEA中也包含Maven、Gradle

(里面也可以配置自己的maven、Gradle)

官网:

IntelliJ IDEA:JetBrains 功能强大、符合人体工程学的 Java IDEhttps://www.jetbrains.com/zh-cn/idea/

激活:

网上有很多激活脚本(容易找到)


五、准备:

5.1、WebGoat

链接:https://github.com/WebGoat/WebGoat/releases

5.2、 环境变量的配置:

5.2.1、方法一:手工配置

3分钟复制粘贴配置java环境变量,验证配置是否成功,java文件运行方法https://blog.csdn.net/qq_53079406/article/details/123482726?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165028109016780261979271%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165028109016780261979271&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-123482726.nonecase&utm_term=jdk&spm=1018.2226.3001.4450

5.2.2、方法二:工具配置

【jdk快速设置/切换工具】一键设置/切换、附带插件链接、使用教程https://blog.csdn.net/qq_53079406/article/details/124252949?spm=1001.2014.3001.5501

5.2.3、JDK的配置:

【jdk快速设置/切换工具】一键设置/切换、附带插件链接、使用教程https://blog.csdn.net/qq_53079406/article/details/124252949?spm=1001.2014.3001.5501

5.2.4、JRE的生成:

【高版本JRE生成】JRE版本不够,生成JRE失败,高版本JDK生成JRE过程https://blog.csdn.net/qq_53079406/article/details/124262183?spm=1001.2014.3001.5501

5.3、错误+安装

全面的错误解决

【WebGoat安装错误合集】WebGoat8.2.2每一步出现的错误整理,最后附带正确的安装教程https://blog.csdn.net/qq_53079406/article/details/124297362?spm=1001.2014.3001.5501


六、WebGoat

6.1、分析:

下面的输入框存在反序列化的漏洞,我们要生成含有可执行代码的序列化字符串,在输入框提交,进行反序列化,从而执行我们构造的代码,让页面延迟5s就完成题目了

以 rO0AB 开头, JAVA 序列化 base64 加密的。

以 aced 开头, java 序列化的 16 进制。

解码看看

无任何有用信息

6.2、插件

6.2.1、Java Deserialization Scanner

是一个Burp套件插件,用于检测和利用Java Deserialization(java反序列化)漏洞

【JAVA反序列扫描工具】简介、下载、安装、使用https://blog.csdn.net/qq_53079406/article/details/124336323?spm=1001.2014.3001.5501这个工具的扫描,也得依靠我们对他进行配置文件ysoserial.jar

6.3、漏洞利用:

(由于僵持了好多天,我要去补充亿多点知识点去了,先把思路放这里)

6.3.1、大体思路:

构造恶意语句----->序列化------>进行编码------>最终的payload------>提交进去执行

6.3.2、具体思路

(前提:知道源码)

第一步:

提交,抓包,找到数据包中包含的目录(可能是发往反序列化函数的地方)

第二步:

在源码里搜索,找到反序列化的位置

第三步:

分析解码函数(即它的编码方法)及其接口

第四步:

查看ysoserial支持的插件,对应查找WebGoat是否安装了对应的.jar包(名含有core,与ysoserial支持的版本一致),并复制到ysoserial目录下

第五步:

根据这个.jar包,利用ysoserial生成反序列化漏洞的payload,执行calc.exe,将payload保存在token.bin文件中

第六步:

采用python脚本对payload进行base64编码(根据所使用的序列化编码方法)

第七步:

在反序列化框提交构造的序列化字符串(触发反序列化)

(前提:不知道源码)

可以就要通过其他方法去分析到编码方式、含有的.jar包

接口测试、回显数据分析……

(38)【JAVA反序列化漏洞】简介、原理、工具、环境、靶场、思路相关推荐

  1. java 反序列化漏洞简介

    目录 一.Java的序列化与反序列化 二.对java序列化的理解 三.反序列化的漏洞原理概述 四.关于反射链 一.Java的序列化与反序列化 在这里我们直接自己定义一个类,然后对这个类的对象(一个实例 ...

  2. Java反序列化漏洞通用利用分析

    2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSpher ...

  3. 带你掌握java反序列化漏洞及其检测

    摘要:在本文中将先介绍java反序列化漏洞的原理,然后在此基础上介绍安全工具如何检测.扫描此类漏洞. 本文分享自华为云社区<java反序列化漏洞及其检测>,作者: alpha1e0. 1 ...

  4. Lib之过?Java反序列化漏洞通用利用分析

    1 背景 2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来***最新版的WebLogic.We ...

  5. java序列化_技术干货 | JAVA反序列化漏洞

    目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法 Apache Commons Collec ...

  6. java反序列化漏洞 poc_Java反序列化漏洞详解

    Java反序列化漏洞从爆出到现在快2个月了,已有白帽子实现了jenkins,weblogic,jboss等的代码执行利用工具.本文对于Java反序列化的漏洞简述后,并对于Java反序列化的Poc进行详 ...

  7. java反序列化漏洞分析

    Java反序列化漏洞(Java Deserialization Vulnerabilities)是一种常见的安全漏洞,其攻击方式是利用Java中的序列化和反序列化机制,通过在序列化数据中插入恶意代码, ...

  8. shiro反序列化漏洞学习(工具+原理+复现)

    工具准备 1.java8 C:\Program Files\Java 2.冰蝎 C:\Users\ali\Desktop\tools\Behinder_v4.0.6 3.shiro反序列化 图形化工具 ...

  9. java反序列化漏洞POP查找_利用 Java 反序列化漏洞在受限环境下获取反向 Shell

    原标题:利用 Java 反序列化漏洞在受限环境下获取反向 Shell 原文链接: https://medium.com/abn-amro-red-team/java-deserialization-f ...

  10. java 反序列化漏洞 利用思路简介

    目录 序列化的过程 readObject方法 反射链 完成反序列漏洞实践 结论 之前听别人讲解反序列化的漏洞听的晕乎乎的,刚脆就趁着周末研究一下反序列化漏洞,并且搭建实战环境实际操作了一把,明白了之后 ...

最新文章

  1. 整理一套pandas详细教程,希望对你有帮助!
  2. 云信小课堂|5分钟快速实现安卓端PK连麦场景
  3. 心得 : 面向对象和面向过程的区别【分享】
  4. xshell连接kali时vim无法粘贴解决方法
  5. 多头注意力代码解读(非常好的一个版本)
  6. HashMap的五种遍历方法
  7. linux下nginx重启命令
  8. 北大 CTSC 2013
  9. 推荐几款流行的开源报表工具
  10. 计算机网络未识别网络,电脑网络出现未识别的网络,无Internet访问的解决办法...
  11. Android 项目实战视频资料 学习充电必备
  12. mysql interval啥意思_MySQL interval()函数
  13. 植物大战僵尸修改游戏存档
  14. javascript实现九九乘法表(四种形式)
  15. matlab 文件操作 写入换行
  16. 服装ERP应用 四 从手工到Web 2 0时代的VIP客户管理
  17. linux设置为adhoc模式,Linux下两台笔记本电脑adhoc模式搭建局域网跟adhoc无线自组织网络...
  18. [非原子批处理出现故障]使用 getNextException() 来检索已经过批处理的特定元素的异常。 ERRORCODE=-4228, SQLSTATE=null
  19. 凤凰大视野----冷暖人生: 记录平凡人的普通人生
  20. 高物实验报告计算机模拟高分子,高分子物理与化学国家重点实验室-苏州大学学术交流报告会举行...

热门文章

  1. 简易编译器实现(二)使用Bison创建语法分析器
  2. 干法读后感:第一章 8、要每天反省
  3. 缓冲区溢出(Buffer Overflow)
  4. mysql pdb文件,.net里Release的pdb文件有什么用 是否可以删除
  5. Ubuntu18.04——正确安装英伟达(NVIDIA)显卡驱动的一种简便方法
  6. stm32控制360度舵机和180度舵机
  7. windowssupport 驱动下载_Mac电脑如何下载Windows支持软件?
  8. Mac百度网盘飞速下载的方法,三步操作永久生效
  9. vue打包压缩 使用gzip
  10. AIX存储管理之对物理卷的增删改操作