zoukankan      html  css  js  c++  java
  • 通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

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

    Clipboard Image.png

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

    举个简单的例子,jboss的反序列化漏洞出现在jbossserveralldeployhttpha-invoker.sarinvoker.warWEB-INFclassesorgjbossinvocationhttpservlet目录下的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

    Clipboard Image.png

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

    Clipboard Image.png

    可以访问到页面,

    访问10.10.1.134:8080/invoker/readonly

    Clipboard Image.png

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

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

    Clipboard Image.png

    Clipboard Image.png

    列出了文件目录

    关于修复漏洞,建议如果不使用此组件,可以删除。或添加代码,进行监控。

  • 相关阅读:
    复制某文件夹及其子文件夹中的一定大小的文件
    一个简单的查询脚本
    写一个交互的脚本
    nginx+php5.6.12+discuz
    curl 错误
    python 交互界面tab补全
    uwsgi.xml
    supervisorctl
    认识nginx配置文件
    nginx+uwsgi+django 配置3
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/8623113.html
Copyright © 2011-2022 走看看