Java安全之JBoss反序列化漏洞分析

Java安全之JBoss反序列化漏洞分析0x00前言看到网上的Jboss分析文章较少,从而激发起了兴趣。前段时间一直沉迷于工具开发这块,所以打算将jboss系列反序列化漏洞进行分析并打造成GUI

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java安全之JBoss反序列化漏洞分析

0x00 前言

看到网上的Jboss分析文章较少,从而激发起了兴趣。前段时间一直沉迷于工具开发这块,所以打算将jboss系列反序列化漏洞进行分析并打造成GUI的工具集。当然反序列化回显这块也是需要解决的一大问题之一,所以下面会出一系列文章对该漏洞的分析到工具的构造进行一个记录。

0x01 环境搭建

首先拿CVE-2017-12149漏洞为例,进行调试分析。

CVE-2017-12149漏洞影响版本: 5.X 及 6.X

漏洞描述

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

调试环境搭建

远程调试

版本要求:JBoss-EAP-7.0及其以上版本

在Jboss的bin目录下有个standalone.bat文件,以文本的形式打开此文件,在Jboss的bin目录下有个standalone.bat文件。

set DEBUG_MODE=false 
set DEBUG_PORT_VAR=8787

false改成true就可以改成调试模式了,8787是调试模式的端口。重启Jboss

而5.x、6.x:

jboss-6.1.0.Final/bin/run.conf 中#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"#即可。

为了方便这里使用

进去/vulhub-master/jboss/CVE-2017-12149修改docker-compose.yml 文件添加8787端口

version: '2'
services:
  jboss:
    image: vulhub/jboss:as-6.1.0
    ports:
      - "9990:9990"
      - "8080:8080" 
      - "8787:8787"

jboss-6.1.0.Final/bin/run.conf 中#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"#

重新启动容器即可

docker restart 808d3fffae0c

此处有坑点,个别漏洞调用链查看不了可能是确实代码,需要添加资源到idea中,而本次的这个核心漏洞组件httpha-invoker.sar,打包成jar包后无法进行断点,需要扔到jd-gui中进行反编译打包后添加到idea资源中。

0x02 漏洞分析

Java安全之JBoss反序列化漏洞分析

查看调用链定位漏洞位置

Java安全之JBoss反序列化漏洞分析

Java安全之JBoss反序列化漏洞分析

直接就接受值进行反序列化了,但并不是在一个位置存在任意数据反序列化

以上是org.jboss.invocation.http.servlet#ReadOnlyAccessFilter类的反序列化位置

Java安全之JBoss反序列化漏洞分析

org.jboss.invocation.http.servlet#InvokerServlet同样存在任意反序列化点

Java安全之JBoss反序列化漏洞分析

Java安全之JBoss反序列化漏洞分析

查看web.xml发现/invoker/JMXInvokerServlet/*,/invoker/readonly,/JMXInvokerServlet/等地方都可触发。

关于CVE-2017-7504类似漏洞位置在/jbossmq-httpil/HTTPServerILServlet ,在此不做分析。

0x03 结尾

文章略显水分,因为JBoss这些漏洞接受过来就直接进行反序列化了,而且还是接受原生的数据并未进行加密解密处理。分析起来比较简单,但是反序列化回显的构造又成了一大问题,下篇文章再对反序列化回显进行探究。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119878.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • js中的匿名函数_js匿名函数怎么定义

    js中的匿名函数_js匿名函数怎么定义定义:匿名函数顾名思义指的是没有名字的函数,在实际开发中使用的频率非常高!也是学好JS的重点。匿名函数:没有实际名字的函数。首先我们声明一个普通函数://声明一个普通函数,函数的名字叫fnfunctionfn(){console.log(“张培跃”);}然后将函数的名字去掉即是匿名函数://匿名函数,咦,运行时,你会发现报错啦!function(){console.log(“张培跃”);}到此,你会发现单独运行一个匿名函数,由于不符合语法…

  • Istio组件日志设置[通俗易懂]

    1.istio-pilot日志级别编辑istio-system.deployment.istio-pilot,修改args中–log_output_level=default:指定日志级别2.istio-policy日志级别设置同istio-pilot3.istio-proxy(envoy)日志级别设置进入istio-proxy容器中,通过如下命令进行设置:curl-…

  • 最短路径算法——Dijkstra算法——python3实现

    最短路径算法——Dijkstra算法——python3实现本文参考来自数据结构与算法分析java语言描述。问题描述问题分析实现过程如何使用数据变化表问题描述现有一个有向赋权图。如下图所示:问题:根据每条边的权值,求出从起点s到其他每个顶点的最短路径和最短路径的长度。说明:不考虑权值为负的情况,否则会出现负值圈问题。s:起点v:算法当前分析处理的顶点w:与v邻接的顶点dvdvd_v:从s到v的距离…

  • 拆解滴滴大脑 叶杰平谈出行领域算法技术

    拆解滴滴大脑 叶杰平谈出行领域算法技术近日,滴滴研究院副院长叶杰平在上海一场内部分享会上详细解读了滴滴大脑,这是外部首次窥探到较为完整的滴滴算法世界,并且一直潜水的产品“九霄”也首次露出真容。滴滴出行研究院副院长叶杰平滴滴大脑由三部分组成叶杰平将滴滴大脑这个智能系统分为三部分,分别是大数据、机器学习和云计算。其中大数据就像工业革命时代的煤一样举足轻重,人工智能需要数据进行训练,纵观应用级深度学习的成功案例,他们都获得了海量数据,…

  • int和int32的区别_int是多少位的

    int和int32的区别_int是多少位的大家有没有写了很久代码,还不知道这个Int8,Int16,Int32,Int64有什么区别呢?或者是为什么后面的数字不一样呢?初步了解了一下,才清楚这个东西。先来扫盲一下计算机存储单元,  在计算机内部,信息都是釆用二进制的形式进行存储、运算、处理和传输的。信息存储单位有位、字节和字等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种计算机的基本的存储单元有:…

  • 学习web前端,初学者应该用什么编程软件

    学习web前端,初学者应该用什么编程软件Web前端开发最常见的编程软件有以下几种: DreamWeaver是一款老牌前端开发工具,功能强大且组件丰富,作为前端开发的一款利器被广泛使用。DreamWeaver是一款可视化的前端开发工具,一边写代码一边就能看到效果,所以使用起来还是比较方便的。但是DreamWeaver的缺点就是比较耗费系统资源,这也许是IDE类产品的通病。 Hbuilder是最近几年被广泛使用的一款前端开发…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号