DNS Server远程代码执行漏洞分析-SIGRed(CVE-2020-1350)( 四 )
本文插图
我们crashed了!
虽然我们似乎崩溃了 , 因为我们试图写值到未映射的内存 , 堆的形状可以允许我们重写一些有意义的值 。
以前对dns.exe的利用可以在线获得 。 例如:A deeper look at ms11-058 。
从浏览器触发
我们知道这个bug可以由局域网环境中的恶意参与者触发 。 然而 , 我们想看看这个bug是否可以在没有局域网访问的情况下被远程触发 。
在HTTP内私有DNS
到目前为止 , 您应该知道DNS可以通过TCP传输 , 并且Windows DNS Server支持此连接类型 。 您还应该熟悉DNS在TCP上的结构 , 但以防万一 , 这里是一个快速回顾:
本文插图
考虑以下标准HTTP payload:
000050 4f 53 54 20 2f 70 77 6e 20 48 54 54 50 2f 31POST /pwn HTTP/1 00102e 31 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d.1..Accept: */*. 00200a 52 65 66 65 72 65 72 3a 20 68 74 74 70 3a 2f.Referer: http:/即使这是一个HTTP payload , 将它发送到53端口上的目标DNS服务器会导致Windows DNS服务器将此payload解释为一个DNS查询 。 它使用以下结构来实现这一点:
000050 4f 53 54 20 2f 70 77 6e 20 48 54 54 50 2f 31POST /pwn HTTP/1 00102e 31 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d.1..Accept: */*. 00200a 52 65 66 65 72 65 72 3a 20 68 74 74 70 3a 2f.Referer: http:/ Message Length: 20559 (0x504f) Transaction ID: 0x5354 Flags: 0x202f Questions: 28791 (0x7077) Answer RRs: 28192 (0x6e20) Authority RRs: 18516 (0x4854) Additional RRs: 21584 (0x5450) Queries: [...]幸运的是 , Windows DNS服务器同时支持RFC 7766的“连接重用(Connection Reuse)”和“Pipelining”,这意味着我们可以在一个TCP会话中发出多个查询 , 而无需等待应答 。
为什么这很重要?
当受害者访问我们控制的网站时 , 我们可以使用基本的JavaScript从浏览器向DNS服务器发出POST请求 。 但是如上所示 , POST请求的解释方式不是我们真正控制的 。
但是 , 我们可以利用“连接重用”和“Pipelining”特性 , 通过使用二进制数据向目标DNS服务器(https://target-dns:53/)发送HTTP POST请求 , 在POST数据中包含另一个“私藏(smuggled)”的DNS查询 , 分别进行查询 。
我们的HTTP有payload包括以下内容:
- HTTP请求头 , 我们不控制(User-Agent , Referer等) 。
- “Padding(填充)” , 以便第一个DNS查询在POST数据内具有适当的长度(0x504f)
- 我们“私藏”的DNS查询里面的POST数据 。
本文插图
在单个TCP会话中的多个查询 , 如Wireshark所示
实际上 , 大多数流行的浏览器(例如Google Chrome和Mozilla Firefox)都不允许HTTP请求访问53端口 , 因此只能在少数Web浏览器中利用此bug , 包括Internet Explorer和Microsoft Edge(基于非Chromium) 。
变体分析
出现这个漏洞的主要原因是RR_AllocateEx API期望size参数为16位 。 通常可以安全地假设单个DNS消息的大小不超过64KB , 因此这种行为不应该出现问题 。 但是 , 正如我们刚才看到的 , 在计算缓冲区大小时考虑Name_PacketNameToCountNameEx的结果时 , 这种假设是错误的 。 这是因为Name_PacketNameToCountNameEx函数计算未压缩名称的有效大小 , 而不是它在表中表示该名称所需的字节数 。
要查找此漏洞的其他变体 , 我们需要找到一个满足以下条件的函数:
- 调用RR_AllocateEx时 , 大小是可变的(不是常数值) 。
推荐阅读
- 北京日报客户端|远程居家办公报酬咋算?北京法官详解疫情下的劳动争议
- 市场|套路太深!商贩竟能远程遥控电子秤“凭空”增重,警惕你身边有没有!
- 痛心!疫情致全球970万儿童永久失学 5亿儿童无法获得远程学习机会
- 周到|上海的电竞馆究竟有多牛 配备4K转播车、顶级远程制作技术
- 科技生活快报澳洲电信遭遇DNS攻击 多地网络崩溃
- 产业气象站 “5G+工业互联网”典型应用系列报道|5G集装箱远程控制装卸提升港口竞争力
- 远程控制“5G+工业互联网”典型应用系列报道|5G集装箱远程控制装卸提升港口竞争力
- 懂车之道|宝马推手机远程启动,每天车闻:雷诺上半年亏损600亿
- 中华小神兵|中东美军躲入地下,伊朗寄希望于拜登当选!远程配合拜登搞特朗普
- 驱动中国 超好用的免费远程控制软件推荐!-灰鸽子!满帧30帧!全功能免费!
