zoukankan      html  css  js  c++  java
  • DNS区域传送漏洞实验以及二级域名爆破

    DNS区域传送漏洞实验以及二级域名爆破

    目录:

    1.DNS服务器的域传送漏洞(nslookup交互式、非交互式、批处理三种方式)

    2.写个二级域名爆破脚本

    一、DNS服务器的域传送漏洞

    实验环境:

    服务端:Windows2008 安装DNS服务(创建A记录),安装IIS服务(搭建一个站点)

    客户端:win10(DNS设置为windows 2008的IP地址)

    实验步骤:

    一、服务端搭建一个网站

    1.服务端搭建一个网站并设置默认主页

      

    2.服务端设置DNS,并创建一个主机记录

      

    3.客户端测试网站以及DNS创建的主机记录(通过主机名访问)

    通过下图可以说明,网站搭建完好以及DNS解析正常

      

    4.检查服务端是否开启“区域传送”,可以看到下图没有开启DNS区域传送

      

    5.客户端使用nslookup查看DNS记录,可以看到www. hnuahe.edu.cn解析的DNS记录

      

    6.看看是否存在DNS区域传送漏洞,列出hnuahe.edu.cn的所有二级域名

      

    7.从上图可以看到目标不存在DNS传送漏洞,那么我们就在windows 2008开启区域传送,并不做任何限制并再创建几条主机记录,方便下面测试实现效果,见下图

      

    8.再在客户端测试是否存在区域传递漏洞,我们可以看到几个主机记录,说明存在DNS区域传送漏洞

      

    9.刚才的实验实在交互式模式下测试DNS服务器是否存在域传送漏洞, 为了能够非交互式运行,可以通过管道来实现。

    echo ls (要列出的域名) | nslookup

    #注:nslookup也可以指定DNS服务器  echo ls (要列出的域名) | nslookup  –  (DNS服务器)

    10.也可以通过批处理来实现非交互式测试DNS服务器是否存在域传送漏洞

    编写批处理文件:ls.bat

    Echo ls %1 | nslookup - %2          #批处理通过%来获得命令行传递来的参数

    注: 为了测试dns.nwpu.edu.cn服务器,可以执行ls.bat hnuahe.edu.cn www.hnuahe.edu.cn。 批处理中:

    1) %1代表第一个参数,也即hnuahe.edu.cn

    2) %2代表第二个参数,即www.hnuahe.edu.cn

    3) Echo是回声命令,原文输出传入的参数内容

    4) “|”是管道符号,作用是把前一个命令执行的结果传给后一个命令。因此:执行ls.bat hnuahe.edu.cn www.hnuahe.edu.cn,等价于执行echo ls hnuahe.edu.cn | nslookup – www.hnuahe.edu.cn。

    5) nslookup - www.hnuahe.edu.cn是指定DNS服务器为www.hnuahe.edu.cn

    可以看到通过批处理来执行测试出来DNS服务器存在域传送漏洞

      

    二、二级域名爆破

     当我们在查找某个域名的有效子域名时,我们通常需要使用子域名枚举这项技术。但是,除非DNS服务器暴露了完整的DNS空间(涉及到AXFR协议),否则我们真的很难拿到目标域名的子域名列表。目前主要的技术是使用一个常用域名的字典,并通过对每一个域名尝试进行解析来查找子域名。虽然这种方法在某些情况下非常有效,但是对于那些名字非常奇怪或罕见的域名来说,这种方法就没多大用了。

    当然了,查找子域名也可以通过网络爬虫,以及搜索引擎(常用,因为更加高效)

    代码如下: #注意需要自己准备一个字典

    #进行暴力破解DNS二级域名
    #利用nslookup 域名 循环尝试
    import os
    from threading import Thread
    import time
    #加载字典
    with open("C://Users//admin//Desktop//dnsyuming_dict.txt") as f:
        nlist=f.readlines()
    #print(nlist)
    bz=0    #做标志位,用于后面的结束循环读取字典
    rlist=[]
    def f(astr):
        global bz
        cmd="nslookup %s.hnuahe.edu.cn"%astr        #这里可以修改    
        result=os.popen(cmd).read()
        if result.count("Address")>1:       #nslookup 执行成功返回的字符串中有两个"Address",失败只有返回一个
            rlist.append(astr+".hnuahe.edu.cn")     #把nslookup 执行成功得到的二级域名加入到列表中
        bz+=1
    
    if __name__=="__main__":
        print("扫描开始:")
        ts=[]   #线程池
        for i in nlist:
            t=Thread(target=f,args=(i.strip(),))
            ts.append(t)
            t.start()   #开启多线程
        for i in ts:
            t.join()    
        while 1:
            if bz==len(nlist):  #如果标志位和字典的长度相等,则退出循环
                break
            time.sleep(1)
        print("一共扫描到%d个结果:"%len(rlist))
        print(rlist)
        print("扫描结束!")  

    运行效果如下:

      

    --------------------------------------------------------------------------------------------------

    DNS安装与配置,请参考:https://www.cnblogs.com/yuzly/p/10474146.html

    web安装与配置,请参考:https://www.cnblogs.com/yuzly/p/10459272.html

  • 相关阅读:
    对 Service中sqlsession对象的优化
    mybatis 接口绑定 和 动态SQL
    添加指定的日志信息
    数据库优化
    MyBatis 实现新增
    MyBatis中log4j 和 参数 和 分页和别名 功能
    OpenGL_混合
    android应用开发揭秘第13章01示例,移动图像,opengl绘制星星问题解决!
    《关于个人承接项目的注意事项》读后感
    Android OpenGL ES教程 第二部分 构建多边形
  • 原文地址:https://www.cnblogs.com/yuzly/p/10474218.html
Copyright © 2011-2022 走看看