您现在的位置是:首页 >学无止境 >【网络安全】mysql数据库提权网站首页学无止境
【网络安全】mysql数据库提权
数据库提权
数据库提权适用场景
当利用系统溢出未达到提权目的则可以利用数据库进行提权
系统溢出提权:https://blog.csdn.net/qq_41158271/article/details/130510463?spm=1001.2014.3001.5501
前提条件
1. 数据库服务启动
2.知道数据库最高权限的账号密码
提权步骤
如何探查数据库服务是否启动
- 通过探针判断有数据库相关的服务
- 通过端口扫描看是否开启对应端口
- 通过命令段看是否开启相关服务
- 通过浏览文件或文件夹判定是否安装相关数据库
常见数据库端口
MySql数据库 ,默认端口是: 3306;
Oracle数据库 ,默认端口号为:1521;
Sql Server数据库 ,默认端口号为:1433;
DB2数据库, 默认端口号为:5000;
PostgreSQL数据库, 默认端口号为:5432;
Redis数据库,默认端口号:6379;
Memcached数据库,默认端口号:11211 ;
MongoDB数据库,默认端口号:27017;
mysql提权
mysql 获取数据库最高权限账号密码方法
1.读取网站配置文件
2. 读取数据库存储或备份文件
获取存储账号密码的MYD文件
原理:
mysql数据库密码存在于mysql.user表中
3. 脚本暴力破解
工具爆破属于远程连接爆破,而root用户不支持外联,所以得使用脚本上传到被攻击服务器上进行爆破
什么语言开发的就找什么语言的脚本
利用udf提权
udf定义
UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充。
udf提权原理
主要是通过udf对mysql功能进行功能拓展,让mysql拥有执行shell命令的功能,而root用户执行sql的权限是system权限,所以只要sql语句可以执行shell命令时,提权就成功了
例子:select sys_eval(‘dir’);
udf常用函数
sys_eval ()
#执行任意系统命令,并将输出返回 本次提权用到的函数
sys_exec ()
#执行任意系统命令,并将退出码返回
sys_get ()
#获取一个环境变量
sys_get ()
#创建或修改一个环境变量
1. 获取mysql版本号
select version();
2.udf.dll放置到被攻击服务器中
情况1:mysql版本小于5.1
需要把udf.dll放置系统目录C:Windows 或C:Windowssystem32
情况2:mysql版本大于5.1
udf.dll文件必须放置在mysql安装目录的libplugin文件夹下,该目录默认是不存在的,
方法一:使用webshell找到mysql的安装目录,并在安装目录下创建LibPlugin文件夹
方法二使用NTFS流创建
数据库安装目录查找方式select @@basedir;
udf.dll获取方式:
sqlmap中集成了lib_mysqludf_sys库文件,使用对应版本
解码:
python3 cloak.py -d -i 你的地址dataudfmysqlwindows64lib_mysqludf_sys.dll_
创建自定义函数,执行命令
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
# sys_eval为引入的函数,lib_mysqludf.dll是导入的dll文件名称
然后就可以使用system权限执行命令了
select sys_eval('sysinfo')
利用MOF提权
此方式成功率较低
可参考文章https://www.cnblogs.com/xishaonian/p/6384535.html