中年DNS Server远程代码执行漏洞分析-SIGRed( 四 )
从浏览器触发
我们知道这个bug可以由局域网环境中的恶意参与者触发 。 然而 , 我们想看看这个bug是否可以在没有局域网访问的情况下被远程触发 。
在HTTP内私有DNS
到目前为止 , 您应该知道DNS可以通过TCP传输 , 并且Windows DNS Server支持此连接类型 。 您还应该熟悉DNS在TCP上的结构 , 但以防万一 , 这里是一个快速回顾:
本文插图
考虑以下标准HTTP payload:
0000 50 4f 53 54 20 2f 70 77 6e 20 48 54 54 50 2f 31 POST /pwn HTTP/1 0010 2e 31 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d .1..Accept: */*. 0020 0a 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查询 。 它使用以下结构来实现这一点:
0000 50 4f 53 54 20 2f 70 77 6e 20 48 54 54 50 2f 31 POST /pwn HTTP/1 0010 2e 31 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d .1..Accept: */*. 0020 0a 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时 , 大小是可变的(不是常数值) 。
- 有一个对Name_PacketNameToCountNameEx的调用 , 它的结果用于计算传递给RR_AllocateEx的大小 。
- 传递给RR_AllocateEx的值是使用16位或16位以上的值计算的 。
推荐阅读
- 中年美国寸土寸金,为何要在纽约建立林则徐广场?原因很简单
- 中年北斗系统发言人答封面新闻:北斗定位精度最好可达1点几米
- 中年检测设备行业政策及环境
- 中年元春回府省亲为何会在夜晚进行?原来其中大有文章
- 中年北斗三号全球服务可用性达99%以上,全球范围定位精度优于10米
- 锁定|起底电信诈骗“杀猪盘”:锁定中年女性,先培养感情再骗钱
- 中年做了几道硬菜,孩子们的胃口很大,可以无限量地吃
- 中年你吃火锅,我吃火锅底料——做的川味慢烤牛肋排
- 教育|每一位中年女性,都是“乘风破浪的姐姐”
- 时尚@人到中年,一味扮嫩早就行不通了,这几个颜色才时尚高级
