阅读:3461回复:0
DNS: More than just names
from:DNS: More than just names
◆0 前言 此文章讲得所有内容都是用的DNS本身设计的功能,但是没有想到可被利用的地方。 讨论的范围仅是利用DNS本身攻击。 所以不会讨论下面的DNS攻击,如: DNS污染 DNS错误配置(域传送等) DNSSec 等等 ◆1 DNS是如何工作的 图片:2014092914515791707.jpg ◆2 协议 DNS 类型 有很多不同的记录类型,但是我们这次只关注A,AAAA,CNAME,MX和TXT记录。 A :: 获取一个IP地址 图片:2014092914515791707.jpg AAAA :: 获取一个IPv6地址 图片:2014092914515791707.jpg MX :: 邮箱服务器 图片:2014092914515791707.jpg 也有, CNAME - 别名 TXT - 文本数据 别忘了: NB/NBSTAT - NetBIOS 数据包结构: 图片:2014092914515791707.jpg 图片:2014092914515791707.jpg 如果name是以一对“1”bit开头的,剩下的14bit说明实际域名所在位置相对DNS起始表示字段的偏移。 例如:如果name是“C0 0F”则表示 “使用出现偏移量为◆F的名字。 详细解释可以参考:http://blog.csdn.net/twelvelee/article/details/6714115 当然,这可能指向自身,造成DNS客户机/服务器 无限循环。 :) 反向DNS 工作原理相同,但是有PTR的记录类型(特殊方法格式化ip地址)。 图片:2014092914515791707.jpg 最终你可以甚至为任何你想要的。 这让我疑惑,什么是可信的? 图片:2014092914515791707.jpg 侦查与DNS 当遇到只能走dns的数据,其他的都被防火墙挡住的时候: 我拥有skullseclabs.org域名,所有的请求都通过*.skullseclabs.org转到我的DNS服务器。 XSS 当你插入的js代码在浏览者的浏览器中执行的时候,你如何知道呢? 如果user-agent内容会被插入执行, 然后查看我的DNS服务器 : 图片:2014092914515791707.jpg 证明html代码被执行。 为什么我们关心呢? 因为,数据包看起来完全是正常的。 我们没有直接连接服务器,因此防火墙是不会知道的。 图片:2014092914515791707.jpg 最后我们可以知道是或否有服务器想要连接,不需要成功连接,甚至不需要服务器尝试连接。我们还可以做什么呢? 想要知道谁给你发邮件? 非常简单用 [email protected] 图片:2014092914515791707.jpg 结论?可能什么都没有,或许能找到一个反垃圾邮件。 SQL 注射 两个可以执行DNS查询的SQL语句 图片:2014092914515791707.jpg 图片:2014092914515791707.jpg XXE 漏洞 Google曾经给在他服务器上找到XXE漏洞的人支付了1W刀。 XXE能够让你读取系统的本地文件: 图片:2014092914515791707.jpg 同时也可以请求远程服务器 图片:2014092914515791707.jpg 我们就有了一种探测XXE漏洞的一种方式: 图片:2014092914515791707.jpg 即使存在防火墙,或者服务器限制严格一些文件不能读取,你仍然能够探测到XXE漏洞。 通过DNS直接获取数据不太可能,但是用来检测是否有漏洞是个很有效的办法。 shell注入 使用这种方法,很容易检测到shell的注入,适用与不同的平台上。 插入一个DNS查询: 图片:2014092914515791707.jpg (适用于Windows,Linux,BSD) 有人想起来这个周的ShellShock吗? 图片:2014092914515791707.jpg Attack over DNS 安全性就是边界。 受信任的数据在一边,不受信任的数据在了另外一边。 当你做了DNS查询,你又考虑到结果不可信吗? 看看下面代码有安全问题吗? 图片:2014092914515791707.jpg 把TXT记录改成如下,最终导致SQL注入: 图片:2014092914515791707.jpg 下面有一篇详细的DNS注入的writeup https://blog.skullsecurity.org/2014/plaidctf-writeup-for-web-300-whatscat-sql-injection-via-dns 下面是一个有效的CNAME,MX,TXT,PTR等记录(双引号和空格不允许) 显然TXT记录可以做更多的事情。 在2010年的时候我测试三个访问最多的域名查询系统的时候全部都有这个漏洞 现在其中的一个仍然有此问题。 DNS隧道 图片:2014092914515791707.jpg 如何传送数据呢? 图片:2014092914515791707.jpg 来回的通信: 图片:2014092914515791707.jpg 实际的过程: 图片:2014092914515791707.jpg 作者自己还解决的一些压缩等问题,最后给出自己写的工具地址: https://github.com/iagox86/dnscat2 |
|