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

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

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

(0)
上一篇 2021年12月13日 上午6:00
下一篇 2021年12月13日 上午6:00


相关推荐

  • 【转载】5种网络IO模型

    【转载】5种网络IO模型

    2021年11月18日
    51
  • 免备案使用国内服务器_国外服务器国内域名要不要备案

    免备案使用国内服务器_国外服务器国内域名要不要备案关于免备案这个问题,我首先说明一下,我不是在提倡大家域名不要备案,这只是一项技术并不是用来给大家滥用的,希望大家能够明白!众所周知,要想使用国内服务器或者主机是是必须要通过工信局的ICP备案的,但是也有的伙伴怕麻烦或者通过不了,这里我教下大家这个使用CDN做到免备案,其实要做到绕过国内服务器域名备案的方法目前小编知道的有两种,一种是利用反向代理、一种就是利用CDN,当然了,你有更多方法愿意分享出来的,可以在评论下方提出。今天,我们就着重讲利用CDN绕备案吧首先,我们要准备好工具,网站、服务器、域

    2025年10月21日
    4
  • Unity 渲染 YUV[通俗易懂]

    Unity 渲染 YUV[通俗易懂]YUVYUV和RGB一样,是另一套用来表达颜色的方案。其详细叙述请参阅[YUV的维基](https://en.wikipedia.org/wiki/YUV)欢迎使用Markdown编辑器加粗样式你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Mar…

    2022年7月16日
    14
  • python爬虫-数据解析(bs4)

    python爬虫-数据解析(bs4)

    2021年4月15日
    168
  • pycharm安装pandas报错解决办法

    pycharm安装pandas报错解决办法这里写自定义目录标题 pycharm 安装 pandas 报错解决办法 pycharm 安装 pandas 报错解决办法当使用 pycharm 自动安装 pandas 时 提示安装失败并要求在命令提示符界面进行安装 在使用命令提示符安装成功之后 发现 pycharm 仍然无法安装 pandas 这时可能是版本不匹配的问题 解决方案如下 在命令提示符界面输入 pipinstallpa 若安装成功则提示 Requirementa 此时可查看安装的 pandas 版本 我这里是 1 1 5 打

    2026年3月27日
    2
  • 为低端浏览器定义原型方法replaceAll

    为低端浏览器定义原型方法replaceAllString.prototype.replaceAll=function(regex,replacement){regex=regex.replace(‘!’,’\\!’).replace(‘@’,’\\@’).replace(‘#’,’\\#’).replace(‘$’,’\\$’)returnthis.replace(newRegExp(regex,’gm’),replacement);};

    2022年7月23日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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