通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

栏目: 服务器 · 发布时间: 6年前

内容简介:前段时间学校学习J2EE,用到了jboss,顺便看了下jboss的反序列化,再浅谈下反序列化漏洞。Java序列化,简而言之就是把java对象转化为字节序列的过程。而反序列话则是再把字节序列恢复为java对象的过程,然而就在这一转一变得过程中,程序员的过滤不严格,就可以导致攻击者恶意构造的代码的实现。

前段时间学校学习J2EE,用到了jboss,顺便看了下jboss的反序列化,再浅谈下反序列化漏洞。

通过JBoss反序列化(CVE-2017-12149)浅谈 <a href='https://www.codercto.com/topics/22013.html'>Java</a> 反序列化漏洞

Java序列化,简而言之就是把java对象转化为字节序列的过程。而反序列话则是再把字节序列恢复为java对象的过程,然而就在这一转一变得过程中,程序员的过滤不严格,就可以导致攻击者恶意构造的代码的实现。

举个简单的例子,jboss的反序列化漏洞出现在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目录下的ReadOnlyAccessFilter.class文件中的doFilter中。

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
  throw IOException,ServletException
{
  HttpServletRequest httpRequest=(HttpServletRequest)request;
  Principal user=httpRequest.getUserPrincipal();
  if((user=null)&&(this.readOnlyContext!=null))
  { 
    ServletInputStream sis=request.getInputStream();
    ObjectInputStream ois=new ObjectInputStream(sis);
    MarshalledInvocation mi=null;
    try
    {
      mi=(MarshalledInvocation)ois.readObject();
    } 
    catch(ClassNotFountException e)
    {
      throw new ServletException("Failed to read MarshalledInvocation",e);
    }
    request.serAttribute("MarshalledInvocation",mi);

    mi.setMethodMap(this.namingMethodMap);
    Method m=mi.getMethod();
    if(m!=null){
      validateAccess(m,mi)
    }
  }
  chain.doFilter(request,response);
}

程序获取http数据保存到了httpRequest中,序列化后保存到了ois中,然后没有进行过滤操作,直接使用了readObject()进行了反序列化操作保存到了mi变量中,这其实就是一个典型的java反序列化漏洞。

复现jboss反序列化漏洞(CVE-2017-12149)

靶机 xp_sp3 10.10.1.34

CVE-2017-12149的主要影响范围是jbossas 5.x和6.x,下载jboss5.1.0 GA并安装(需要有java环境)。运行时如果发现只能通过localhost或者127.0.0.1进行访问,可以通过运行时增加命令 run.bat -b 0.0.0.0 ,或新建start.bat 内容run.bat -b 0.0.0.0

通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

当出现这个的时候说明已经部署好了,可以进行访问了

通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

可以访问到页面,

访问10.10.1.134:8080/invoker/readonly

通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

出现此页面则可以判断含有java反序列化漏洞

进行漏洞利用,我使用的是香草反序列化工具,网上还有很多工具,包括ysoserial,都可以进行漏洞利用

通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞


以上所述就是小编给大家介绍的《通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Redis实战

Redis实战

Josiah L. Carlson / 黄健宏 / 人民邮电出版社 / 2015-10

【内容简介】 本书深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法,是一本对于学习和使用 Redis 来说不可多得的参考书籍。 本书一共由三个部分组成。第一部分对Redis进行了介 绍,说明了Redis的基本使用方法、它拥有的5种数据结构以及操作这5种数据结构的命令,并讲解了如何使用Redis去构......一起来看看 《Redis实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试