命令执行。

news2024/11/25 10:42:45

命令执行

在该项目的readme中,描述了怎么去调用的flink

通过java原生的runtime来调用flink,下一步就是去看看具体的调用过程了,是否存在可控的参数
找到具体提交命令的类方法CommandRpcClinetAdapterImpl#submitJob()

这里要确定command,是否可控,继续往上找在哪里调用了在JobBaseServiceAOImpl的submitJobForStandalone和submitJobForYarn俩个方法中都调用了submitJob,继续往上寻找哪里调用了这两个方法

在JobBaseServiceAOImpl#aSyncExecJob()方法中创建线程池的时候,正好创建了Runnable类来执行这些方法
继续往上找哪里调用了aSyncExecJob

这里的两个业务类JobStandaloneServerAOImpl和JobYarnServerAOImpl分别对应提交任务到本地,或者是远程Yarn服务,这里主要看本地的,远程Yarn需要配置,不好满足利用条件

在JobStandaloneServerAOImpl#start()中调用了aSyncExecJob,对应的controller层就是在JobConfigApiController#start()方法中
所以这里如果要测试的话就需要通过上面的绕过权限校验来创建一个额外的用户登录

创建一个新的jar包任务

 这里的jar包是可以通过后台的第三方jar包管理上传的(仅作为文件使用,并不能解析),开启任务之后直接启动,进入start方法

getJobServerAO(id)根据id返回对应处理任务的类,进入JobStandaloneServerAOImpl#start

根据id返回对应的配置信息包含在JobConfigDTO类中
后续就是根据配置信息做一些处理,任务执行情况,参数是否合法,插入日志信息等

这里需要注意下writeSqlToFile()方法,在这个方法里面,把一些系统配置(flink的路径,项目的配置路径等信息,yran的地址,flink的地址)设置到了返回值中,后续需要使用,所以这里有利用前提,需要配置了系统的信息之后才会有这个rce的漏洞,不过在搭建环境的时候就需要配置这些系统信息,否则大部分的功能无法使用

系统信息

 

进入aSyncExecJob方法

这里没有使用到nacos,跳过第一个if,直接进入Runnable#run()方法

配置了一些输出的日志信息之后,设置jar包下载地址

在downJar(jobRunParamDTO, jobConfigDTO)中下载了对应的远程jar包
所以这里也算有一个ssrf,不过没什么太大的危害
然后进入到switch语句中,因为设置的是单机模式,所以进入STANDALONE中

 在getFlinkAddress对flink_rest_http_address这个系统配置进行存活校验

进入buildRunCommandForCluster,创建执行flink的命令

先配置flink的可执行目录加上run -d
再根据address,savepointPath,是否为STANDALONE模式,存在第三方jar包等加入对应的命令

进入switch的JAR case中,这里就是在配置任务的时候设置的需要执行的类,这里就是外部可以控制的参数了
所以整体执行的命令是:
/javaTocms/flink-1.9.0/bin/flink run -d -c org.example.Main /javaTocms/tmp/udf_jar/evaljAR.jar
修改org.example.Main为需要执行的命令就可以了
回到submitJobForStandalone方法中

进入submitJob,提交命令

 

执行命令完成 

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

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

相关文章

【ESP32S3】使用 Flash 下载工具完成 Flash 加密功能

此篇文档记录通过 Flash 下载工具 完成 Flash 加密 功能的实现,此文档不启用 Flash 加密方案的 NVS 加密。 Flash 加密启动的验证代码:esp-idf/components/bootloader_support/src/flash_encrypt.c Flash 加密测试例程:esp-idf/examples/sec…

Qt绘图与图形视图之自定义图元实现拖拽、拉伸、旋转功能

往期回顾 Qt绘图与图形视图之移动鼠标手动绘制任意多边形的简单介绍-CSDN博客 Qt绘图与图形视图之场景、视图架构的简单介绍-CSDN博客 Qt绘图与图形视图之基本图元绘制的简单介绍-CSDN博客 Qt绘图与图形视图之自定义图元实现拖拽、拉伸、旋转功能 一、最终效果 实现对自定义图…

Agent AI智能体在未来,一定与你我密不可分

随着Agent AI智能体的逐渐成熟,人工智能应用的不断深入与拓展,相信在不久的将来,他与你我的生活一定是密不可分的。 目录 ​编辑 1 Agent AI智能体是什么? 2 Agent AI在语言处理方面的能力 2.1 情感分析示例 2.2 文本分类任…

Tetra Pak利乐中试工厂仿真 - 工艺开发、配方开发和无菌灌装的试验

此模型是基于速率的模型,使用Rate模块库中的离散速率模块和Item模块库中的离散事件模块。速率模块库位于ExtendSim Pro中。 利乐中试工厂(得克萨斯州丹顿)进行工艺开发、配方开发和无菌灌装的试验。它还对新的加工和灌装设备进行内部测试。该…

Colab用例与Gemma快速上手指南:如何在Colab和Kaggle上有效地运用Gemma模型进行机器学习任务

🐯 Colab用例与Gemma快速上手指南 🚀 文章目录 🐯 Colab用例与Gemma快速上手指南 🚀摘要引言正文📝 **基础使用:Gemma快速上手**环境设置和模型加载安装必要的库加载Gemma模型 推理示例 🛠 **Ge…

秋招后端开发面试题 - Java语言基础(上)

目录 Java基础上前言面试题Java 语言的特点JVM JDK JRE什么是跨平台性?原理是什么?什么是字节码?采用字节码的好处是什么?Java 和 C 的区别?注释?关键字关键字 instanceof类型转换关键字 this 和 super关键字 final finally fin…

【CGALDotNet】CGAL的C#封装(C#调用编译好的CGAL的dll)

介绍 开源项目出处(两个模块): 链接1:https://github.com/Scrawk/CGALDotNet/tree/master?tabreadme-ov-file 链接2:https://github.com/Scrawk/CGALDotNetGeometry 该项目提供了编译的、封装相关接口后的CGAL库&am…

纯js对比excel小工具

如何使用JavaScript和xlsx.js实现Excel文件对比:实战指南 在日常办公或数据分析工作中,我们经常需要比较两个Excel文件中的数据差异。手动对比不仅耗时费力,还容易出错。本文将带你通过一个简单的网页应用,利用JavaScript和开源库…

Spring AI聊天功能开发

一、引入依赖 继承父版本的springboot依赖&#xff0c;最好是比较新的依赖。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePat…

transformer上手(10)—— 文本摘要任务

文本摘要是一个 Seq2Seq 任务&#xff0c;尽可能保留文本语义的情况下将长文本压缩为短文本。 文本摘要可以看作是将长文本“翻译”为捕获关键信息的短文本&#xff0c;因此大部分文本摘要模型同样采用 Encoder-Decoder 框架。当然&#xff0c;也有一些非 Encoder-Decoder 框架…

低代码技术在构建质量管理系统中的应用与优势

引言 在当今快节奏的商业环境中&#xff0c;高效的质量管理系统对于组织的成功至关重要。质量管理系统帮助组织确保产品或服务符合客户的期望、符合法规标准&#xff0c;并持续改进以满足不断变化的需求。与此同时&#xff0c;随着技术的不断进步&#xff0c;低代码技术作为一…

Linux系统编程---线程池并发服务器

模型原理分析&#xff1a; 线程池的关键优势在于它减少了每次任务执行时创建和销毁线程的开销 线程池的组成主要分为 3 个部分&#xff0c;这三部分配合工作就可以得到一个完整的线程池&#xff1a; 1. 任务队列&#xff0c;存储需要处理的任务&#xff0c;由工作的线程来处理…

python代码实现kmeans对鸢尾花聚类

导入第三方库和模型 from sklearn import datasets import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans2、创建画图函数 def draw_result(train_x, labels, cents, title):n_clusters np.unique(labels).shape[0]#获取类别个数color …

esp32s3使用psram后音频播报不了的问题解决记录

idf.py menuconfig开启psram后会报错 提示需要打补丁&#xff1a; 根据提示切换到IDF_PATH目录&#xff0c;然后执行git apply %ADF_PATH%/ida_patches/idf5.0_freertos.patch打补丁。 再次编译提示如下错误&#xff1a; assert failed: spi_flash_disable_interrupts_cach…

嵌入式学习,方法、交流很重要

关注、星标公众号&#xff0c;直达精彩内容 ID&#xff1a;技术让梦想更伟大 整理&#xff1a;李肖遥 Who Am I 大家好&#xff0c;我是「逍遥的小蜜圈」星球的星主&#xff0c;如果大家关注我早一点&#xff0c;一定看了我的简单的自我介绍&#xff0c;关于我 — 聊聊自己的经…

【Python网络爬虫】python爬虫用正则表达式进行数据清洗与处理

&#x1f517; 运行环境&#xff1a;PYTHON &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

QT学习篇—qt软件安装

qt下载网址http://download.qt.io/new_archive/qt/ QT官网Qt | Tools for Each Stage of Software Development LifecycleAll the essential Qt tools for all stages of Software Development Lifecycle: planning, design, development, testing, and deployment.https:…

CSS样式特异性5层次详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

FANUC机器人SOCKET断开KAREL程序编写

一、添加一个.KL文件创建编辑断开指令 添加一个KL文件用来创建karel程序中socket断开指令 二、断开连接程序karel代码 PROGRAM SOC_DIS %COMMENT SOCKET断开 %INCLUDE klevccdf VAR str_input,str_val : STRING[20] status,data_type,int_val : INTEGER rel_val : REALBEGING…

全球首发!龙蜥社区助力 Intel SPR 加速器上云

编者按&#xff1a;云原生平台下芯片的竞争力日渐增强&#xff0c;加速器如何在赛道上体现竞争力。龙蜥社区开发者、阿里云高级研发工程师易兴睿介绍运用龙蜥操作系统提供的解决方案&#xff0c;依靠 Intel SPR 平台专用硬件加速器&#xff0c;实现云原生场景下 Envoy 网关加速…