# mysql-fake-server **Repository Path**: HappyDogs/mysql-fake-server ## Basic Information - **Project Name**: mysql-fake-server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-12 - **Last Updated**: 2024-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySQL Fake Server ![](https://img.shields.io/badge/build-passing-brightgreen) ![](https://img.shields.io/badge/build-Java%208-orange) ![](https://img.shields.io/github/downloads/4ra1n/mysql-fake-server/total) ![](https://img.shields.io/github/v/release/4ra1n/mysql-fake-server) [English Version](doc/README.md) ## 0x00 介绍 该项目是 [MySQL_Fake_Server](https://github.com/fnmsd/MySQL_Fake_Server) 高级版 当`JDBC URL`可控时,特殊的`MySQL`服务端可以读取`JDBC`客户端任意文件或执行反序列化操作 完全使用`Java`实现部分`MySQL`协议,内置常见`ysoserial`链,一键启动,自动生成可用的`payload`用于测试 参考 [MySQL_Fake_Server](https://github.com/fnmsd/MySQL_Fake_Server) 项目,`payload`从`user`参数传递。反序列化应以`deser_` 开头,规则为`deser_[gadget]_[cmd]`;文件读取以`fileread_`开头,规则为`fileread_[name]` 由于某些文件名或命令存在特殊字符,支持使用`base64`传递方式,方式为原有`user`基础上进行`base64`并以`base64` 开头,例如`user=deser_CB_calc.exe`等于`user=base64ZGVzZXJfQ0JfY2FsYy5leGU=` 默认文件保存在当前目录的`fake-server-files`下的当前时间戳目录内(自动创建目录) 注意:读文件功能遇到没有没有完整读取的情况,重新尝试即可完整读取 自从 `0.0.3` 版本以后支持了自定义反序列化 `gadget` 功能 ![](img/004.png) 自从 `0.0.4` 版本以后支持了 `PostgreSQL RCE` ![](img/005.png) 自从 `0.0.4` 版本以后支持了 `Apache Derby` 基于 `Slave` 的 RCE ![](img/006.png) ## 0x01 GUI 使用`GUI`版本一键启动,启动后可以根据自己的环境输入参数,生成`payload` 启动:`java -jar fake-mysql-gui.jar` ![](img/001.png) ## 0x02 CLI 当你的环境不允许使用`GUI`版时,可以使用命令行版启动,同样可以使用`GUI`辅助生成`payload` 启动:`java -jar fake-mysql-cli.jar -p [port]` ![](img/002.png) ## 0x03 Docker 构建:`docker build -t fake-mysql-server .` 启动:`docker run -p 3306:3306 -d fake-mysql-server` ![](img/003.png) ## 0x05 其他 怎样测试: ```java String url = "jdbc:mysql://..."; try { Class.forName("com.mysql.jdbc.Driver"); // Class.forName("com.mysql.cj.jdbc.Driver"); DriverManager.getConnection(url); } catch (Exception e) { e.printStackTrace(); } ``` ## 0x06 免责申明 本项目仅面向安全研究与学习,禁止任何非法用途 如您在使用本项目的过程中存在任何非法行为,您需自行承担相应后果 除非您已充分阅读、完全理解并接受本协议,否则,请您不要使用本项目 ## 0x07 致谢与参考 - https://github.com/frohoff/ysoserial - https://github.com/fnmsd/MySQL_Fake_Server - https://pyn3rd.github.io/2022/06/06/Make-JDBC-Attacks-Brillian-Again-I/