dns泛解析及代码测试

0x00 前言


在自己的扫描器开发过程中,扫描器当中自然包括了子域名收集功能,但在遇到泛解析的网站时,也增加了扫描器很多不必要的检测,导致效率和资源的浪费。本文中主要针对扫描器遇到的问题进行解决并优化。

泛域名解析介绍 https://baike.baidu.com/item/%E6%B3%9B%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90/9845966?fr=aladdin

0x01 问题产生


泛解析的功能为厂商提供了便利,但为自动化扫描带来了麻烦,什么麻烦呢?这里以一个使用了泛解析的厂商作为演示
dns泛解析及代码测试
由于该网站使用了泛解析,导致原本不存在的子域名也会成功被解析,那么其实访问这个域名,会重定向到主页

dns泛解析及代码测试

那么在自动化扫描中,通常我们会使用到一个字典组合域名的方式,然后进行dns解析,如果成功解析说明子域名存在,利用这种方式来进行子域名穷举,但使用泛解析的话,则会导致所有的域名都能成功解析,使得子域名穷举变得不精准。

dns泛解析及代码测试

ps:只是一个泛解析测试

0x02 解决方法


那么怎么去判断域名使用了泛解析和如何解决扫描器中遇到这种情况呢?

  • 泛解析的域名会自动匹配所有*.域名的解析,利用这点我们可以故意去解析一个根本不可能存在的域名,如果能成功解析代表使用泛解析,否之未采用
    dns泛解析及代码测试

    dns泛解析及代码测试

  • 扫描器解决思路也同上点,附上演示过程,(具体代码最后贴)
    dns泛解析及代码测试
    dns泛解析及代码测试
    上图中可以看到,如果能成功解析不存在的域名则使用泛解析,那么socket.getaddrinfo也不会抛出异常
    那么改进后的检测代码为
import socket
import sys
def dns_resolve(domain):
    url = 'abc1q2w3e4r5t.' + domain
    flag = False
    #抛出异常说明使用了泛解析
    try:
        socket.getaddrinfo(url, None)
        flag = True
    except:
        pass
    if not flag:
        print('[+] %s 未采用泛解析'%domain)
    else:
        print('[-] %s 采用泛解析'%domain)

if __name__ == '__main__':

    if len(sys.argv) < 2:
        print('python3 %s <domain>'%sys.argv[0])
        exit(1)

    dns_resolve(sys.argv[1])

dns泛解析及代码测试

0x03 tips


  1. 当域名使用了泛解析,那么放弃穷举的方式来获取子域名,可通过其他途径,类似爬虫或者搜索引擎来获取
  2. 如有错误,请斧正

原创文章,作者:XNVLF,如若转载,请注明出处:http://www.wangzhanshi.com/n/14424.html

(0)
XNVLF的头像XNVLF
上一篇 2025年1月1日 17:05:21
下一篇 2025年1月1日 17:05:23

相关推荐

  • Ubuntu下怎么配置DNS服务器

    DNS是计算机域名(Domain Name System)的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地…

    2025年1月1日
  • CentOS7.0中怎么部署DNS服务器

    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数…

    2025年1月1日
  • Centos6.5下配置DNS服务器

    配置要求如下: 在服务器中安装配置bind服务,负责区域”xiangcheng.net” IP地址为10.100.100.x ,主机解析,五台主机分别为dn…

    2025年1月1日
  • DNS牛刀小试之DNS分离解析

    本篇博客将带领大家学习DNS域名解析服务中的一个小实验:DNS分离解析。 结构: 概论 环境分析 具体实验 一、概论 DNS服务能够将域名转化为对应的IP地址,方便机器识别。那么D…

    2025年1月1日
  • CentOS8怎么清空DNS缓存

    nscd清理缓存命令如下: [root@localhost ~]# nscd -i hosts 如果nscd没装,则需要手动安装一下 \1.…

    2025年1月1日
  • DNS功能实现

    1、DNS配置正向查找区,将域名解析为IP地址 2、DNS配置反向查找区,将IP地址解析为域名 3、域名解析分类: A记录:域名>IP地址 cname记录 域名>域名 …

    DNS解析 2025年1月1日
  • 详解Linux搭建DNS服务器

    1.DNS服务器概念 在互联网上通信需要借助于IP地址,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一…

    2025年1月1日
  • windows清除dns缓存执行期间函数出了问题如何解决

    清除dns缓存执行期间函数出了问题解决方法 输入“ipconfig /flushdns”命令后,显示“无法刷新DNS解析缓存:执行期间,函数出了问题”,这是没有启动本地的“DNSC…

    2025年1月1日
  • Oracle RAC启动失败(DNS故障)

    问题: 数据库启动报错:ORA-00119、ORA-00132等 环境: DB:Oracle 11.2.0.4.0 OS:Redhat 6.5 问题现象: 启动数据库报错: [gr…

    DNS解析 2025年1月1日
  • Linux云服务器怎么手动配置DNS

    配置云服务器的DNS服务对于云服务器访问公网域名来说是不可缺少的,DNS是域名指向IP的记录,只有设置了DNS服务器,才能获取到域名的公网解析记录。文件 /etc/resolv.c…

    DNS解析 2025年1月1日

发表回复

登录后才能评论