DNS区域传送漏洞
1. 实验环境
服务端:Windows2008 安装DNS服务,安装IIS服务(搭建一个网络站点)
客户端:win7(DNS设置为windows 2008的IP地址)
2. 实验步骤
(1)首先在windows 2008上安装DNS服务
在服务管理器上新建角色,选择DNS服务器
在服务管理器上添加完DNS角色后,在开始->程序->管理工具中会出现DNS,利用它可以启动DNS管理器,并对DNS服务器进行设置。
(2)测试DNS服务器是否能正常服务
在服务端搭建一个网站并设置默认主页
(3)服务端设置DNS,并创建一个主机记录
(4)测试DNS服务器是否正常
(5)检查服务端是否开启“区域传送”,可以看到服务器端没有开启DNS区域传送
(6)然后在客户端使用nslookup查看DNS记录,如下所示;
(7)看是否存在DNS区域传送漏洞,列出xaut.com中的所有主机;可以看出,我们要查看的目标不存在DNS传送漏洞;
(8)为了测试实验效果,我们就windows 2008开启区域传送,再创建1条主机记录;
(9)最后在客户端测试是否存在区域传递漏洞,可以看到几个主机记录,快速得知到域中的主机,说明存在DNS区域传送漏洞
二级域名爆破
当我们在查找某个域名的有效子域名时,可以使用的技术是通过一个常用的域名字典(需要自己准备一个字典),对字典中的每一个域名通过nslookup尝试进行解析来查找子域名。这种方式有一定的局限性,就是对那些主机名不常见的,这种方法就没什么实际的效益。
代码如下:
import os
from threading import Thread
import time
#加载字典,字典中为常见的主机名
with open("C:/Users/Lenovo/Desktop/dict.txt") as f:
nlist=f.readlines()
#标志位
bz=0
#存放扫描之后活跃的域名
rlist=[]
#使用nslookup 域名的当时循环的获取存在的域名
def f(astr):
global bz
cmd="nslookup %s.xaut.com"%astr
result=os.popen(cmd).read()
if result.count("Address")>1:
rlist.append(astr+".xaut.com")
bz+=1
if __name__=="__main__":
print("扫描开始:")
for i in nlist:
t=Thread(target=f,args=(i.strip(),))
t.start()
while 1:
#退出的标志
if bz==len(nlist):
break
time.sleep(1)
print("一共扫描到%d个结果:"%len(rlist))
print(rlist)
print("扫描结束!")
结果如下:可以查找到该域名下的有效子域名。