首页
社区
课程
招聘
7
[原创]CVE-2020-1350漏洞深入剖析
发表于: 2020-7-16 02:18 12566

[原创]CVE-2020-1350漏洞深入剖析

2020-7-16 02:18
12566

目录

CVE-2020-1350漏洞深入剖析

CVE-2020-1350 一个 DNS 协议相关的高危漏洞,攻击者利用该漏洞可以远程执行代码,其严重性堪比 SMB/RDP 漏洞,建议所有使用 Windows Server 服务器的企业或机构尽快打上补丁。

 

此文参考了 CheckPoint 发布的漏洞细节,如果你熟悉 DNS 协议,建议直接肝 CheckPoint 那篇文章,文章链接我文末会贴出。

漏洞简述

简言之就是整数溢出后导致堆溢出,将该漏洞抽象为以下模型:

1
2
3
4
5
6
7
8
void Examples(char* in)
{
    unsigned short len_p1 = len(in.p1);
    unsigned short len_p2 = len(in.p2);
    unsigned short len_p =  len_p1 + len_p2;
    char* buf = (char *)malloc(len_p);
    memcpy(buf, in.p1, len_p1);  
}

问题就出在 len_p 的计算上,假设 len_p1 = 0xFFD0,len_p2 = 0x40,相加后高位数据被丢弃,那么 0xFFD0 + 0x40 = 0x10010 = 0x10,所以实际分配的内存是 0x10 而不是 0x10010,而之后往 0x10 的空间内拷贝 0xFFD0 长度的数据,自然造成了内存溢出。

 

碰巧的是在 dns.exe 的 SigWireRead 函数内,也存在这种模型的溢出漏洞,如图:

 

触发前提

dns.exe 为一个 SYSTEN 权限的系统服务,该文件只存在于开启 DNS 功能的 Windows Server 服务器上。据 CheckPoint 的描述只有当 Windows Server 上的 DNS 服务接收到类型为 SIG/RRSIG 的 DNS 响应包时,才能进入到可以触发此漏洞的 SigWireRead 函数内。

 

DNS 服务器收到响应包?DNS 服务器不应该是回复客户端的查询而发送响应包嘛,话虽如此,但如果将 DNS 服务器也当成一个客户端,不就可以发送查询请求并接收响应数据了呀,而 DNS 转发 恰好能够让 DNS 服务器充当客户端,向上级的 DNS 服务器发起查询。

 

所以该漏洞触发的前提条件是:通过 DNS 转发接收一条 SIG/RRSIG 类型的 DNS 响应包

DNS 协议

DNS 整体结构包括头部区域、查询区域、响应区域、认证区域和附加区域,后面两个暂时用不上,不赘述。结构图如下:

 

 

DNS 头部区域固定 12 字节,同一个查询和响应的 ID 是一样的,QR 指明当前是查询还是响应,OPCODE 指明是用标准查询还是反向查询,TC 表示 UDP 长度大于 512 时截断并用 TCP 再次请求(漏洞关键因素),QDCOUNT 表示查询的数量,ANCOUNT 表示响应的数量,结构图如下:

 

 

DNS 查询区域主要由欲查询的域名、查询类型和查询类组成,其中最最最重要的是域名不是普通的字符串,而是多个 length + string 的形式,结尾以 length=0 为标志,结构图如下:

 

 

DNS 响应区域由资源记录的域名,RDATA 的类型、RDATA 类、TTL 值、RDATA 长度和 RDATA 组成,结构图如下:

 

 

必须强调下 DNS 中域名的表示方式:(length + string) * n,这种表示方式是该漏洞成因的关键因素之一:


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

最后于 2020-7-17 00:27 被年少无知编辑 ,原因:
收藏
免费 7
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2022-7-30 13:04
T1e9u
为你点赞~
2021-3-12 10:13
Saturn35
为你点赞~
2020-7-20 14:33
Lixinist
为你点赞~
2020-7-16 11:32
我是哥布林
为你点赞~
2020-7-16 10:00
Editor
为你点赞~
2020-7-16 09:42
CrackM
为你点赞~
2020-7-16 09:27
最新回复 (10)
雪    币: 35662
活跃值: (64621)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享~
2020-7-16 09:42
0
雪    币: 3150
活跃值: (1294)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
赶早
2020-7-16 11:07
0
雪    币: 1285
活跃值: (231)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
头都秃了, 肝不动了
2020-7-16 15:12
0
雪    币: 70
活跃值: (2183)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2020-7-16 23:43
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
求楼主复现一下写个exp开开眼
2020-7-18 16:26
0
雪    币: 1428
活跃值: (541)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
wx_四海闲人 求楼主复现一下写个exp开开眼

只有打崩dns服务的poc,要利用的话没那简单

上传的附件:
2020-7-18 19:27
0
雪    币: 1428
活跃值: (541)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
朝闻道 头都秃了, 肝不动了
秃即强(/狗头)
2020-7-18 19:28
0
雪    币: 192
活跃值: (306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
秃即神(/狗头)
2020-7-20 15:20
0
雪    币: 1
活跃值: (333)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
有没有一起搞1350利用的?
2020-7-24 08:10
1
雪    币: 198
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
Flyour 有没有一起搞1350利用的?
1  怎么联系你
2020-7-27 10:46
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册