0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java反序列化回显方法

jf_vLt34KHi 来源:Tide安全团队 2023-03-07 10:58 次阅读

前言

在测试某反序列化漏洞,可以通过URLDNS链确定漏洞是否存在但在利用时遇到了困难,相关利用链可以执行系统命令却无法得到回显。

4102a3c8-bc72-11ed-bfe3-dac502259ad0.png

因此需要在此基础修改利用链达到命令回显得目的,下边记录的即是此次修改的过程。

Java反序列化回显方法

根据搜索到的资料给出的常见回显方法有以下几种:1、报错回显:要求服务器将报错信息打印到页面。2、写文件:把执行结果写入静态文件置于web目录下再读取结果。3、DNSLOG回显:通过DNSLOG将执行结果带出(未实现)。4、中间件回显:获取response对象,结果写入response对象中带出。5、.....

报错回显

此法要求服务器将报错信息打印出来,修改要反序列化执行的Java代码将结果写入异常再抛出即可实现。

4121bc68-bc72-11ed-bfe3-dac502259ad0.png

4159fe8e-bc72-11ed-bfe3-dac502259ad0.png

写文件回显

同样修改yso中Gadgets要执行的java代码即可实现,通过将执行结果写入web目录下的静态文件再读取来实现。此法的缺点是当目标不存在可访问静态web目录便无法使用了且要获取web目录的绝对路径,更适用于已知开发框架的反序列化漏洞利用。

41999d1e-bc72-11ed-bfe3-dac502259ad0.png

41d5c262-bc72-11ed-bfe3-dac502259ad0.png

DNSLOG

一般作为检测反序列化漏洞是否存在用,贴出URLDNS Gadget的验证过程。

41f02972-bc72-11ed-bfe3-dac502259ad0.png

42112866-bc72-11ed-bfe3-dac502259ad0.png

中间件回显

中间件回显是目前所有反序列化工具中最为通用的方法,相比于上述的方法中间件回显有不需目标出网、没有目录限制等优势。中间件回显的原理简单来说是在运行的中间件中获取request&response对象,通过request对象获取执行参数等后将执行结果写入response对象带出完成回显。已知目标中间件为tomcat,参考feihong师傅公开的tomcat全版本回显测试代码来修改yso代码实现利用。Tomcat回显代码:

42364024-bc72-11ed-bfe3-dac502259ad0.png

修改yso payload代码:

4277dd22-bc72-11ed-bfe3-dac502259ad0.png

修改yso Gadgets代码:

42a39052-bc72-11ed-bfe3-dac502259ad0.png

实现回显:

42ca906c-bc72-11ed-bfe3-dac502259ad0.png

总结

由于本菜鸡学习Java的路程不是很系统,在很多地方卡壳严重,还好最终实现了相关exp的编写。最后,感谢文中所用代码和知识的作者师傅们。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2973

    浏览量

    104881
  • 代码
    +关注

    关注

    30

    文章

    4803

    浏览量

    68775
  • 漏洞
    +关注

    关注

    0

    文章

    204

    浏览量

    15397

原文标题:参考

文章出处:【微信号:Tide安全团队,微信公众号:Tide安全团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用Serde进行序列化反序列化

    Serde 是一个用于序列化反序列化 Rust 数据结构的库。它支持 JSON、BSON、YAML 等多种格式,并且可以自定义序列化反序列化方式。Serde 的特点是代码简洁、易于
    的头像 发表于 09-30 17:09 1312次阅读

    Java序列化的机制和原理

    对象的序列化反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。Java
    发表于 07-10 07:27

    Virtex ISERDES_NODELAY对快速4线总线进行反序列化怎么实现?

    你好朋友。我想使用Virtex ISERDES_NODELAY对快速4线总线进行反序列化。总线大约为700 MHz。我想确保反序列化的信号不是异相的。我的意思是,如果其中一个ISERDES由于内部路由延迟而稍后将复位,则反序列化
    发表于 06-01 16:54

    c语言序列化反序列化有何区别

    这里写自定义目录标题c语言序列化反序列化tplut.htplut.c测试代码参考c语言序列化反序列化网络调用,数据传输都需要把数据序列化
    发表于 07-14 07:32

    关于c语言序列化反序列化的知识点看完你就懂了

    关于c语言序列反序列化的知识点你就懂了
    发表于 10-15 08:47

    SpringMVC JSON框架的自定义序列化反序列化

    执行trim方法进行处理。此方案只有逐个添加注解,工作量较大。方案:实现ObjectDeserializer接口ObjectDeserializer接口为可以实现自定义反序列化实现接口,配合
    发表于 10-10 16:02

    理解PHP反序列化漏洞

    理解PHP反序列化漏洞
    发表于 09-07 11:03 7次下载
    理解PHP<b class='flag-5'>反序列化</b>漏洞

    java序列化反序列化范例和JDK类库中的序列化API

    一、序列化反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的
    发表于 09-27 10:13 6次下载

    java序列化的几种方式

    一.Java序列化的作用 有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从一个字节流中恢复一个Java对象。例如,有的时候我们想要 把一个
    发表于 09-27 11:15 0次下载

    static属性为什么不会被序列化

    实现序列化反序列化为什么要实现Serializable接口?
    的头像 发表于 07-15 11:03 1776次阅读

    基于反序列化过采样数据的时钟和数据恢复单元

    电子发烧友网站提供《基于反序列化过采样数据的时钟和数据恢复单元.pdf》资料免费下载
    发表于 09-13 10:41 0次下载
    基于<b class='flag-5'>反序列化</b>过采样数据的时钟和数据恢复单元

    什么是序列化 为什么要序列化

    什么是序列化? “序列化”(Serialization )的意思是将一个对象转化为字节流。 这里说的对象可以理解为“面向对象”里的那个对象,具体的就是存储在内存中的对象数据。 与之相反的过程是“反序列化
    的头像 发表于 09-14 17:22 2610次阅读
    什么是<b class='flag-5'>序列化</b> 为什么要<b class='flag-5'>序列化</b>

    如何用C语言进行json的序列化反序列化

    呢? 当前,应用最广泛的C语言json解析库当属cJSON,但是,使用cJSON读json进行序列化反序列化,需要根据key一个一个进行处理,会导致代码冗余,逻辑性不强,哪有没有更好的方法呢? 思路 在Android平台,一般
    的头像 发表于 10-07 11:05 1518次阅读

    Spring Boot时配置JSON序列化选项的几种方法

    看看配置序列化反序列化选项的最常用方法。 默认配置 默认情况下,Spring Boot的配置将禁用以下配置项。 MapperFeature.DEFAULT_VIEW_INCLUSION
    的头像 发表于 10-09 10:26 2249次阅读

    Java序列化怎么使用

    转换方式就叫做序列化。将文件或者网络传输中得到的 byte[] 数组转换为 java 对象就叫做反序列化。 怎么使用 如果一个 Java 对象要能被
    的头像 发表于 10-10 14:19 461次阅读