又这么晚睡...今天是老兄弟小贤子的生日,曾经的八班男神,哈哈。匆匆从龙海赶回来,顾不上沙茶面了。祝兄弟愿望成真,在大四有更多的突破!
00x1:DNS服务器的介绍
作为重要的互联网基础设施,难免成为黑客的重点攻击目标,服务的稳定性尤为重要。DNS服务器分为:主服务器、备份服务器和缓存服务器。DNS主服务器,这是主要的服务器,它在内存和磁盘上都保持有整个数据库的拷贝。如果系统崩溃,该数据库能重载到内存中。
DNS辅服务器,起辅助的作用,它获得一份来自主DNS服务器的数据库备份。当主服务器作修改时,辅服务器也要求作相应修改。
DNS缓存服务器,用来存储网络上用户需要的网页和内容的网络服务器。
在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。
一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息,所以说允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一。
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省不少的扫描时间。
大的互联网厂商通常将内部网络与外部互联网隔离开,一个重要的手段是使用Private DNS。如果内部DNS泄露,将造成极大的安全风险。风险控制不当甚至造成整个内部网络沦陷。
最常用的DNS记录有以下几类:
A记录 IP地址记录,记录一个域名对应的IP地址
AAAA记录 IPv6 地址记录,记录一个域名对应的IPv6地址
CNAME记录 别名记录,记录一个主机的别名
MX记录 电子邮件交换记录,记录一个邮件域名对应的IP地址,比如my@hackvaf.com后面的部分hackvaf.com,邮件服务器对应的IP地址
NS记录 域名服务器记录 ,记录该域名由哪台域名服务器解析
PTR记录 反向记录,也即从IP地址到域名的一条记录
TXT记录 记录域名的相关文本信息
SOA 资源记录 在任何 DNS 记录文件(DomainName System (DNS) Zone file)中,都是以SOA(Start of Authority)记录开始。SOA 资源记录表明此 DNS 名称服务器是为该 DNS 域中的数据的信息的最佳来源。
SOA 记录与 NS 记录的区别:简单讲,NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间的信息.
想深入了解或者觉得笔者解释不清楚的请移步:http://bbs.51cto.com/thread-908637-1.html 阅读该文!
00x2 nslookup命令
这个命令是一个渗透中很常用的命令,还记得关于如何绕过CDN那篇文章么?
DNS缓存服务器别和之前提到的CDN服务器别混淆了,之前在某群的一个朋友问我什么区别。CDN 利用全局负载均衡技术将用户的访问指向离用户最近的工作正常的流媒体服务器上,由流媒体服务器直接响应用户的请求避免了节点失效,保证了质量和速,而DNS缓存服务器虽然也是缓存网页文件等信息,可是只是为了降低网络交换量,就是不会占太多带宽。比如我们访问www.hackvaf.com,那么DNS解析的顺序是 DNS缓存→HOST文件→真是DNS服务器。就是说如果你的缓存服务器将www.hackvaf.com 解析到IP :1.1.1.1 的话,之后的两个再将这个网址解析到其他的地方也不起作用!!
像上次某中国台湾的朋友问我为何我的blog不能访问,我猜测可能是节点的问题,让他设置DNS服务器为114.114.114.114。然后用ipconfig/flushdns 刷新他的缓存服务器。就ok了,所以碰到自己很经常访问的网站访问卡顿或者打不开网页可以用这个这个命令试试哈,或者更换一下DNS服务器~~
我们输入”nslookup ? ” 结果如上图。
nslookup命令以两种方式运行:非交互式和交互式。本文第一次提到“交互式”的概念,简单说明:交互式系统是指执行过程中允许用户输入数据和命令的系统。而非交互式系统,是指一旦开始运行,不需要人干预就可以自行结束的系统。因此,nslookup以非交互式方式运行,就是指运行后自行结束。而交互式,是指开始运行后,会要求使用者进一步输入数据和命令。
下面的例子通过114.114.114.114查询域名www.hackvaf.com的IP地址
结果如下图,这里我用的是交互式的。
下面这个例子是我查询京东和我博客的DNS服务器名称。
使用ptr进行域名反查
如下图:
我们输入nslookup,进入交互式系统,输入help,可以看到下图。
其他的参数不一一测试,哈哈,该进入我们的正题了。
00x3:域传送漏洞
本屌继续介绍在交互式shell中发现一个DNS服务器的域传送漏洞的过程。
操作基本的步骤是:
1) 输入nslookup命令进入交互式shell
2) Server 命令参数设定查询将要使用的DNS服务器(一般是soa或者ns)
3) Ls命令列出某个域中的所有域名
这个暂时找不到合适的站点,找到了也不做实例了!记得几个月前袁伟的事吧?向世纪某缘提交漏洞后被抓,成为了替死鬼。
4) Exit命令退出程序
如果若是不存在漏洞的主机,则可能提示错误如下:
我们可以通过域传送漏洞获取到的敏感主要包括:
1)网络的拓扑结构,服务器集中的IP地址段
2)数据库服务器的IP地址,例如上述testdb2.666.hackvaf.com
3)测试服务器的IP地址,例如test.666.hackvaf.com
4)V**服务器地址泄露
5)其他敏感服务器
除了上述方法,我们还可以用工具获取DNS信息。
1、DNS Flood Detector
2、DNSSEC
3、DNSTOP
4、在kali linux 里面:
cd /pentest/enumeration/dns/dnsenum
./dnsenum.pl --enum domain.com
00x4:修复方法
1、严格限制允许区域传送的主机即可,例如一个主DNS服务器应该只允许它的从DNS服务器执行区域传送的功能
2、做访问控制定义ACL(访问控制列表)来限制在域名服务器之间的区域传送
3、针对于bind软件,可以通过allowe-transfer指令来控制,可以作为global选项或者zone选项的一个参数,我们可以使用地址列表如下
编辑/etc/named.conf
在zone配置中设置:allow-transfer { localhost; IP; };
使用基于地址的可能还不安全,最好的方法是使用TSIG key来严格定义区域传送的关系,如下:allowe-transfer {key "dns1-slave1"; key "dns1-slave2";};
4、禁止区域传送