CVE-2020-3110、CVE-2020-3111、CVE-2020 -3118、CVE-2020-3119、CVE-2020-3120 cdpwn 解析

攻击条件

在同一广播域,黑客即可通过cdp协议非法入侵开启CDP协议的思科设备,或者触发dos漏洞

影响范围

Routers:

  • ASR 9000 Series Aggregation Services Routers
  • Carrier Routing System (CRS)
  • Firepower 1000 Series
  • Firepower 2100 Series
  • Firepower 4100 Series
  • Firepower 9300 Security Appliances
  • IOS XRv 9000 Router
  • White box routers running Cisco IOS XR

Switches:

  • Nexus 1000 Virtual Edge
  • Nexus 1000V Switch
  • Nexus 3000 Series Switches
  • Nexus 5500 Series Switches
  • Nexus 5600 Series Switches
  • Nexus 6000 Series Switches
  • Nexus 7000 Series Switches
  • Nexus 9000 Series Fabric Switches
  • MDS 9000 Series Multilayer Switches
  • Network Convergence System (NCS) 1000 Series
  • Network Convergence System (NCS) 5000 Series
  • Network Convergence System (NCS) 540 Routers
  • Network Convergence System (NCS) 5500 Series
  • Network Convergence System (NCS) 560 Routers
  • Network Convergence System (NCS) 6000 Series
  • UCS 6200 Series Fabric Interconnects
  • UCS 6300 Series Fabric Interconnects
  • UCS 6400 Series Fabric Interconnects

IP Phones:

  • IP Conference Phone 7832
  • IP Conference Phone 8832
  • IP Phone 6800 Series
  • IP Phone 7800 Series
  • IP Phone 8800 Series
  • IP Phone 8851 Series
  • Unified IP Conference Phone 8831
  • Wireless IP Phone 8821
  • Wireless IP Phone 8821-EX

IP Cameras:

  • Video Surveillance 8000 Series IP Cameras

临时修复

  1. 关闭CDP思科发现协议

漏洞解析

cve-2020-3120

漏洞点在cdp 协议报文Address中的Number of address。根据下图可以看出,通过该值去申请内存空间,并且该值没有经过任何校验。

我们可以将Number of address修改为下图的值去触发dos漏洞

目前Cisco的修复方式为校验该值正确性,确保申请的内存不会出发dos。如下

cve-2020-3120

该漏洞与上一个漏洞类似,主要影响的设备为IOS-XR

在该处,虽然对number of address的大小进行验证,但是可以绕过。我们可以将该值设置为4*maxint/5 触发漏洞

CVE-2020-3119 NX-OS Stack Overflow in the Power Request TLV

该漏洞出现在cdp协议交换poe帧的时候,没有对部分值检查,造成栈溢出,可以直接获取设备的root权限的shell。如下图

可以通过发送这种poe的帧去触发dos漏洞。不过注意,该漏洞是可以造成rce的

可以通过下图方法绕过aslr

cve-2020-3118 IOS XR Format String vulnerability in multiple TLVs

漏洞出现在下图

可以看出,该处存在类似与prinntf的格式化字符串漏洞

CVE-2020-3111 IP Phones Stack Overflow in PortID TLV

漏洞出现在下面的地方

cdp协议的portid处。memcpy在复制内存时没有对该值校验,导致栈溢出

CVE-2020-3110 IP Cameras Heap Overflow in DeviceID TLV

漏洞出现在下图

上面的代码只是为从传入数据包中解析出的端口ID分配了一个缓冲区,并将其值从传入TLV复制到分配的缓冲区中。 但是,这里有一个简单的错误,意味着可能发生琐碎的堆溢出。 分配dst_buf的大小计算为len +1,以允许在端口ID字符串的末尾添加空终止符。 不幸的是,此变量(alloc_len)定义为uint8,而计算为TLV有效载荷长度(value_len)的大小定义为uint16。TLV中的length字段为16位,并且完全由攻击者控制。 通过发送包含大小大于0xff的PortID TLV(0x01)的CDP数据包,攻击者可以使堆分配的缓冲区溢出,并带有攻击者控制的数据

CVE-2020-3110、CVE-2020-3111、CVE-2020 -3118、CVE-2020-3119、CVE-2020-3120 cdpwn 解析的更多相关文章

  1. 2020还有9天!Winforms开发有哪些期待?DevExpress 2020计划出炉

    下载DevExpress v19.2完整版 DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.DevExpress Winf ...

  2. 2020年春招面试必备Spring系列面试题129道(附答案解析)

    前言 关于Spring的知识总结了个思维导图分享给大家   1.不同版本的 Spring Framework 有哪些主要功能?   2.什么是 Spring Framework? Spring 是一个 ...

  3. Intent.java分析

    代码位于frameworks/base/core/java/anroid/Content/Intent.java Intent是对要进行操作的一种抽象描述.用action抽象操作,用data(andr ...

  4. 使用java爬虫从雪球网下载股票数据

    雪球网也是采用Ajax方式展示数据,我依然采用开发者工具查看其访问地址和返回数据. 访问使用到的库是jsoup,解析返回的json用的类库是jackson,二者的依赖是: <!-- jsoup ...

  5. 漏洞都是怎么编号的CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD

    在一些文章和报道中常常提到安全漏洞CVE-1999-1046这样的CVE开头的漏洞编号,这篇文章将常见的漏洞ID的表示方法做下介绍: 1.以CVE开头,如CVE-1999-1046这样的 CVE 的英 ...

  6. 南开大学2020年数学分析高等代数考研试题回忆版TeX排版

    南开大学2020年数学分析高等代数考研试题回忆版TeX排版 220328[南开大学2020年高等代数考研试题回忆版] 220329[南开大学2020年数学分析考研试题回忆版]

  7. check cve

    今天想检查一下 Gitlab 11.9.0 产品受哪些 cve 的影响.其实网上已经有很多网站可以查询产品的相关 cve,但就是粒度比较粗.我想在 cve 列表中筛选出特定的版本,已经特定的版本,比如 ...

  8. 谷歌 AI 负责人谈2020 年机器学习趋势:多任务和多模态会有大突破

    ​在上周加拿大温哥华举行的NeurIPS会议上,机器学习成为了中心议题. 来自世界范围内约1.3万名研究人员集中探讨了神经科学.如何解释神经网络输出以及人工智能如何帮助解决现实世界中的重大问题等焦点话 ...

  9. IntelliJ IDEA 2020.2正式发布,诸多亮点总有几款能助你提效

    向工具人致敬.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托邦]逐 ...

  10. Django学习路15_创建一个订单信息,并查询2020年\9月的信息都有哪些

    在 app5.models.py 中添加一个 Order 表 class Order(models.Model): o_num = models.CharField(max_length= 16 ,u ...

随机推荐

  1. JS-数组常用方法整理

    想了解数组有哪些原生方法,控制台输出,如图: length:数组的实例属性,返回或设置一个数组中的元素个数. toString():可以把数组转换成字符串,并返回结果. toLocaleString( ...

  2. nginx 负载均衡的配置

    首先搭建好三台nginx,我是用VM搭建的 nginx搭建,https://www.cnblogs.com/liubaoqing/p/10507962.html 这里的三台nginx ,ip分别是 1 ...

  3. matlab数组相除

    %数组的除法 clear all %清空MATLAB中的数据 a=[ ] b=[ ] c=a./b %a/b 对应位置相除 d=a.\b %b/a e=a./ %数组与常数相除 f=a/ 运行结果如下

  4. C# Post发送 接受Xml

    //组合xml内容 StringBuilder strBuilder = new StringBuilder(); var par= @"<xml> <appid>w ...

  5. 【Java并发基础】并发编程领域的三个问题:分工、同步和互斥

    前言 可以将Java并发编程抽象为三个核心问题:分工.同步和互斥. 这三个问题的产生源自对性能的需求.最初时,为提高计算机的效率,当IO在等待时不让CPU空闲,于是就出现了分时操作系统也就出现了并发. ...

  6. 记录一次mybatis genertor使用以及mapper扫描遇见的问题

    本记录适用初次接触mybatis,大神忽略... 整体上分两个部分: 1.使用mybatis genertor自动生成代码 2.mapper的扫描 1.使用mybatis genertor自动生成代码 ...

  7. 让vue-router渲染为指定的标签

    <router-link :to="{name:'cart'}" tag="li"> cart </router-link> 在rout ...

  8. Scala实践10

    1.模式匹配 模式匹配是一种根据模式检查值的机制.它是switch(Java中语句)的更强大版本,它同样可以用来代替一系列if / else语句. 句法 匹配表达式具有值,match关键字和至少一个c ...

  9. 【Java并发基础】并发编程bug源头:可见性、原子性和有序性

    前言 CPU .内存.I/O设备之间的速度差距十分大,为了提高CPU的利用率并且平衡它们的速度差异.计算机体系结构.操作系统和编译程序都做出了改进: CPU增加了缓存,用于平衡和内存之间的速度差异. ...

  10. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第一节:整体思路

    在构建本章节内容的时候,笔者也在想一个问题,究竟什么样的采集器框架,才能算得上是一个“全能”的呢?就我自己以往项目经历而言,可以归纳以下几个大的分类: 根据通讯协议:HTTP的.HTTPS的.TCP的 ...