标签 MSSQL 下的文章
- 作者: 纯情
- 时间:
- 分类: 资讯
- 评论
faker靶机复现
该靶机来自maze-sec团队
靶机提示
因为这台靶机有段时间了 而且是windows的
所以靶机的账号密码要提前修改一下
提示里面刚好有aksk
登录一下然后修改密码
提示过期了 所以需要修改一下
更改成功
现在aksk是
端口扫描
先简单扫一下端口
得到目标靶机ip为192.168.20.137
发现存mssql服务 端口为1433
还得到了靶机名与域名等信息
我们现在就用提示给的aksk去授权登录mssql服务
测试mssql
使用imapacket工具中的mssqlclient进行连接
记得一定要跟上-windows-auth
因为提示给的aksk是window账号 不是mssql服务的数据库账号
所以需要通过window账号授权登录
成功登上mssql服务
这里的密码是我们自己修改后的密码
如果没修改的话是登不上去的
查看当前数据库并查看是否开启了trustworthy
可以发现有2个数据库开启了trustworthy
什么是trustworthy
这是一个sqlserver的一个属性
如果开启了这个 就可以访问到外部资源 简单来说就可以使用某些函数或者模块来命令执行访问计算机中的资源 不仅仅是数据库中的资源
当然前提是我们操作的用户得是sysadmin用户
user思路
那么getshell的思路就来了 我们需要一个有sysadmin权限的用户来开启 xp_cmdshell模块
然后使用 xp_cmdshell进行getshell
那么我们要怎么获得有sysadmin权限的用户呢
在mssql中 sysadmin角色登录到数据库中映射的用户默认都是dbo用户
这个dbo的数据库用户可能拥有sysadmin权限
我们先看看faker数据库中的用户
切换到faker数据库
查看该数据库中的各类权限是否有对应的用户拥有
不难看出 我们的db-user用户有db_owner权限
还有一个dbo用户
因为我们有db_owner权限 所以我们可以切换当前上下文用户
我们使用execute as user语句进行上下文切换 也就是切换当前数据库用户
我们将当前数据库用户切换为dbo 查看这个用户是否拥有sysadmin权限
切换成功并且有sysadmin权限
那么我们就可以开启xp_cmdshell来提权了
开启监听
成功拿到shell
根据提示得到flag
root
在user的flag里面有一个提示
问问ai
提示我们是sqlserver agent 是sqlserver的代理服务
我们先查看得到的shell的用户有什么权限
再看之前 我们先把这个shell弹到别处优化一下
我这里直接弹到vshell上面了
开启vshell并生成一个马子
在靶机中下载木马并执行
成功上线
我们继续之前的操作
这个系统用户没什么权限
那么我们只能去看看那个agent
回到mssql中 看看有没有这个服务
切换到master这个系统级的数据库并查询
确实存在这个代理服务
那么我们现在通过设定定时任务去弹shell
因为我们有dbo这个sysadmin这个角色 所有可以直接设定任务
成功得到shell
是另一个服务级用户
一样是传马然后弹到vshell上面
有一个SeImpersonatePrivilege权限那么我们可以直接使用土豆提权
什么是土豆提权
简单来说就是捕获ntml认证数据包 并篡改数据包的内容 获得system的token 从而以高权限用户那弹shell回来 最终效果就是得到system的shell
只要有SeImpersonatePrivilege权限那么就可以使用土豆提权
上传exp PrintSpoofer64.exe
提权成功