数据库
数据库提权流程:
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 将会提示服务未开启:
- getshell或者存在sql注入并且能够执行命令。
- 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