什么是MSSQL SA文件上传?
MSSQL SA文件上传指的是通过SQL Server的system administrator权限(sometimes referred to as 'sa')上传&执行任意文件的一类漏洞。攻击者可以通过这个漏洞上传包含恶意代码的文件,比如web shell,进而实现远程命令执行。
许多国家的监管机构都要求企业在其网络安全合规审计中进行SQL Server安全审计。这种审计能够检测MSSQL SA文件上传漏洞以及其他SQL Server漏洞并且可以纠正这些漏洞,从而提升你的数据安全力度。
如何检测MSSQL SA文件上传漏洞?
使用自动化工具
首先,有多种自动化工具可以用来检测MSSQL SA文件上传漏洞。这些工具可以自动发现系统中所有的SQL Server数据库,可执行的sproc以及HTTP读取数据的进程,并尝试执行不同的攻击方法,从而检测漏洞。
但是,这些自动化工具只能检测到已知的漏洞和攻击方法,因此不能保证检测所有的漏洞,更不能确保您的应用在剩下的漏洞中是免疫的。所以,自动化工具检测只是安全审计中的费用部分,需要与其他方法结合使用。
使用流量监控工具
使用流量监控工具来监控SQL Server进程,可以发现任何不规则的流量,诸如磁盘操作、网络流量等等。这些检测将会暴露MSSQL SA文件上传攻击尝试中的流量(关于SQL Server流量监控详细内容可参考此处),再通过分类规则匹配审查
use msdb
go
execute as login='sa'
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE WITH OVERRIDE;
xp_cmdshell 'dir > C:\logs\files.txt'
execute as login='my_user'
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE WITH OVERRIDE;
xp_cmdshell 'tree C:\windows /f > path.txt'
执行以上SQL语句,就可以输出一个包括C:\windows文件夹下面子目录的文本文件,在这种情况下,攻击者就可以利用xp_cmdshell存储过程来实现文件上传。
使用手动检测方法
最终,如果想要最大化保护涉及重要数据的应用程序,还可以使用手动的方法,通过在应用程序排查目录中寻找上传和执行代码的明确证据,来检测漏洞,并增加代码来纠正这些漏洞。
以下是一些可能被攻击者用来上传或执行文件的代码段。如果发现您的代码或类似的代码存在于您的应用程序中,则需要对应用程序进行调整以删除或限制有风险的操作。
文件上传
if (request.Files.Count > 0)
{
HttpPostedFile file = Request.Files["myFile"];
string path = Server.MapPath("~/Uploads/");
file.SaveAs(path + file.FileName);
}
代码执行
SqlCommand command = new SqlCommand("EXEC xp_cmdshell 'dir c:\\'", connection);
command.ExecuteNonQuery();
总结
对于MSSQL SA文件上传漏洞的检测,不仅有工具可以使用,还可以使用手工技术进行排查 。在现代数字威胁的泛滥环境下,强制您的应用程序更加安全,尤其是涉及到敏感或者重要数据的应用程序,是至关重要的。「耕耘」PingCAP Tel:+86 15019876020,我们专注于数据库技术领域多年。