Jboss 反序列化(CVE-2017-12149)的复现及修复方案

Jboss 反序列化(CVE-2017-12149)的复现

漏洞名称: Jboss 反序列化(CVE-2017-12149)

漏洞描述: JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化操作进行任何检测,导致攻击者可以执行任意代码。

漏洞影响: Redhat JBoss Enterprise Application Platform 5.0\

影响版本: JBoss 5.x / 6.x

\

靶机相关环境

Ubuntu:20.04(要注意Ubuntu:20.04一般默认安装了UFW(Uncomplicated Firewall))

jdk:1.8

jboss:jboss-5.1.0.GA

(因为jboss的版本比较老,所以修改配置文件时可以参考:https://wenku.baidu.com/view/18bc1b18c5da50e2524d7ff5.html

安装配置成功后启动服务通过另一个虚拟机访问:

\

接下来我们先看下这个漏洞能干什么,直接使用暴力工具jboss-_CVE-2017-12149-master,(下载地址:https://github.com/yunxu1/jboss-_CVE-2017-12149

\

好,证明存在该漏洞。接下来就可以进行指令了:

\

这样就进入了Ubuntu的终端命令,可以在此进行各种行为。例如新建文件等:

\

\

所以,这个漏洞的危险性可显而知,那是这个漏洞是如何产生的呢?

Jboss 反序列化(CVE-2017-12149)的原理

Java序列化就是指把Java对象转换为字节序列的过程,在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。

Java反序列化就是指把字节序列恢复为Java对象的过程,根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。

序列化:

FileOutputStream fos = new FileOutputStream(file);

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(st);

反序列化:

ileInputStream fis = new FileInputStream(file);

ObjectInputStream ois = new ObjectInputStream(fis);

Student st1 = (Student) ois.readObject();

而jboss的漏洞出现在HttpInvoker组件中的ReadOnlyAccessFilter过滤器中,源码在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目录下的ReadOnlyAccessFilter.class文件中,其中doFilter函数代码如下:

\

可以看出它从http中获取数据,通过调用readobject()方法对数据流进行反序列操作,但是没有进行检查或者过滤。

知道了大概原理后我们就可以对其进行相应的修复。

Jboss 反序列化(CVE-2017-12149)的修复方案

修复原理: 通过向http-invoker.sar的web.xml文件中的安全约束添加url-pattern>来保护对整个 http-invoker上下文的访问,不想使用http-invoker.sar可以将其删除。

方法一:修改web.xml文件

具体步骤如下:

步骤一: 进入/jboss/server/default/deploy/http-invoker.sar/invoker.war/WEB-INF/web.xml,如图所示:

\

步骤二: 在安全约束中添加,就是在security-constraint里添加或修改为以下代码(第158行):

/*如图:

\

步骤三: 修改完成后,重启jboss服务,再次通过另一个虚拟机访问并且使用工具检测,结果如下:

\

发现没有执行漏洞,故修复成功。

方法二:不需要http-invoker.sar组件的直接删除\

结果同方法一。

\

方法三:升级jboss到jboss7x版本\

以上使用的是JBoss AS 5.1.0,用JBoss AS 6.1.0.Final复现并使用相同步骤修复后结果同上。

posted @ 2021-12-02 10:44  sainet  阅读(3133)  评论(0编辑  收藏  举报