标签 MSSQL 下的文章


faker靶机复现

该靶机来自maze-sec团队

靶机提示

提示:初始凭证db-user:whoami
提示:user的flag在c:/根目录下

因为这台靶机有段时间了 而且是windows的

所以靶机的账号密码要提前修改一下

提示里面刚好有aksk

image.png



登录一下然后修改密码

image.png



提示过期了 所以需要修改一下

image.png



更改成功

现在aksk是

端口扫描

先简单扫一下端口

image.png



得到目标靶机ip为192.168.20.137

image.png



发现存mssql服务 端口为1433

还得到了靶机名与域名等信息

我们现在就用提示给的aksk去授权登录mssql服务

测试mssql

使用imapacket工具中的mssqlclient进行连接

记得一定要跟上-windows-auth

因为提示给的aksk是window账号 不是mssql服务的数据库账号

所以需要通过window账号授权登录

image.png



成功登上mssql服务

这里的密码是我们自己修改后的密码

如果没修改的话是登不上去的

查看当前数据库并查看是否开启了trustworthy

image.png



可以发现有2个数据库开启了trustworthy

什么是trustworthy

image.png



这是一个sqlserver的一个属性

如果开启了这个 就可以访问到外部资源 简单来说就可以使用某些函数或者模块来命令执行访问计算机中的资源 不仅仅是数据库中的资源

当然前提是我们操作的用户得是sysadmin用户

user思路

那么getshell的思路就来了 我们需要一个有sysadmin权限的用户来开启 xp_cmdshell模块

然后使用 xp_cmdshell进行getshell

那么我们要怎么获得有sysadmin权限的用户呢

在mssql中 sysadmin角色登录到数据库中映射的用户默认都是dbo用户

这个dbo的数据库用户可能拥有sysadmin权限

我们先看看faker数据库中的用户

切换到faker数据库

image.png



查看该数据库中的各类权限是否有对应的用户拥有

image.png



不难看出 我们的db-user用户有db_owner权限

还有一个dbo用户

因为我们有db_owner权限 所以我们可以切换当前上下文用户

我们使用execute as user语句进行上下文切换 也就是切换当前数据库用户

我们将当前数据库用户切换为dbo 查看这个用户是否拥有sysadmin权限

image.png



切换成功并且有sysadmin权限

那么我们就可以开启xp_cmdshell来提权了

开启监听

image.png



image.png



image.png



成功拿到shell

根据提示得到flag

image.png



root

在user的flag里面有一个提示

问问ai

image.png



提示我们是sqlserver agent 是sqlserver的代理服务

我们先查看得到的shell的用户有什么权限

再看之前 我们先把这个shell弹到别处优化一下

我这里直接弹到vshell上面了

image.png



开启vshell并生成一个马子

在靶机中下载木马并执行

image.png



成功上线

image.png



我们继续之前的操作

image.png



这个系统用户没什么权限

那么我们只能去看看那个agent

回到mssql中 看看有没有这个服务

切换到master这个系统级的数据库并查询

image.png



确实存在这个代理服务

那么我们现在通过设定定时任务去弹shell

因为我们有dbo这个sysadmin这个角色 所有可以直接设定任务

image.png



image.png



成功得到shell

是另一个服务级用户

一样是传马然后弹到vshell上面

image.png



有一个SeImpersonatePrivilege权限那么我们可以直接使用土豆提权

什么是土豆提权

简单来说就是捕获ntml认证数据包 并篡改数据包的内容 获得system的token 从而以高权限用户那弹shell回来 最终效果就是得到system的shell

只要有SeImpersonatePrivilege权限那么就可以使用土豆提权

上传exp PrintSpoofer64.exe

image.png



image.png



提权成功